您好,我是Firebase动态链接的新手,并且正在学习它,我一直在按照本教程来完成它。
我的代码创建方法是:
private void createLink() {
String link = "https://play.google.com/store/apps/details?id=com.test.app&referrer="+"test1234" ;
FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse(link))
.setDynamicLinkDomain("testxyz.page.link")
.setAndroidParameters(
new DynamicLink.AndroidParameters.Builder("com.test.app")
.setMinimumVersion(125)
.build())
.buildShortDynamicLink().addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.e("xyz", "error:::" + e.toString());
}
})
.addOnSuccessListener(new OnSuccessListener<ShortDynamicLink>() {
@Override
public void onSuccess(ShortDynamicLink shortDynamicLink) {
Log.e("xyz", "link:::" + shortDynamicLink.getShortLink());
}
});
}
它给了我这样的网址:https://testxyz.page.link/RhSKMYMnE2YHLbZk6我将其复制并粘贴到我的浏览器中,它工作正常,将我带到Play商店并展示了我想打开的所需应用程序,其中包含应用程序ID的链接:com.test.app
我所做的测试是从我的Android手机上单击此网址,该网址安装了应用程序ID:com.test.app应该使用我单击的URL打开它!
我在我的应用程序中收到带有 id:com.test.app带有方法的链接:
private void check(){
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(this, new OnSuccessListener<PendingDynamicLinkData>() {
@Override
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
// Get deep link from result (may be null if no link is found)
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
Log.e("deeplink","link:::"+deepLink);
Toast.makeText(IndexActivity.this, "link:::"+deepLink, Toast.LENGTH_SHORT).show();
}else{
Log.e("deeplink","link is null:::");
Toast.makeText(IndexActivity.this, "link is null:::", Toast.LENGTH_SHORT).show();
}
//
// If the user isn't signed in and the pending Dynamic Link is
// an invitation, sign in the user anonymously, and record the
// referrer's UID.
//
}
});
}
这种方法被放置在我的 Splash 活动之后的主要活动中!
因此,清单具有:
<activity
android:name=".MainActivity"
android:screenOrientation="portrait">
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="https://testxyz.page.link"
android:scheme="http"/>
<data
android:host="https://testxyz.page.link"
android:scheme="https"/>
</intent-filter>
</activity>
问题: 当我点击Firebase生成的动态链接时,它可以工作并将我带到浏览器并使用我所需的应用程序打开Google Play商店。
我想要的是打开应用程序并获取推荐人的动态链接信息!
我做错的是我不知道,因为我对Firebase深度链接完全陌生。
实际上,我想创建一个链接,我可以使用我的用户名将其发送给其他用户,如果用户单击该链接,则会打开该应用程序(如果已安装),如果未安装,则将用户带到应用商店安装该应用程序并获取引荐来源的深层链接信息
任何帮助或教程都非常感谢,提前感谢!
我的解决方案与代码无关,我不得不更改默认浏览器。 谷歌浏览器劫持了我的动态链接。 我现在正在使用勇敢的浏览器,它直接打开我的应用程序。
按如下方式设置安卓参数:
setAndroidParameters(new DynamicLink.AndroidParameters.Builder(BuildConfig.APPLICATION_ID)
.setMinimumVersion(1)
.build())
您的动态链接无法打开您的应用,因为您未在 Android 参数中定义包。
请注意:Firebase 的构造函数看起来像是默认添加包名称,但它不起作用。
public Builder() {
if (FirebaseApp.getInstance() == null) {
throw new IllegalStateException("FirebaseApp not initialized.");
} else {
this.zzf = new Bundle();
this.zzf.putString("apn", FirebaseApp.getInstance().getApplicationContext().getPackageName());
}
}