Mik*_*ike 6 java android firebase firebase-dynamic-links
我已经阅读了很多关于 stackoverflow 的问题,但他们都没有回答这个问题。
我正在尝试设置动态链接,以便如果用户已经安装了应用程序,则链接会将用户深层链接到应用程序,如果没有,则链接到 Play 商店。我希望该链接在 Play 商店安装过程中继续存在,并通过链接发送到启动器活动。当应用程序已安装时,动态链接有效。但是,当应用程序未安装时,它会将用户发送到 Play 商店,但动态链接不会在安装过程中继续存在。我已经读过,当用户通过动态链接发送到 Play 商店时,“打开”按钮应该更改为“继续”,但是当我这样做时,它仍然显示“打开”。这是我在 AndroidManifest.xml 中的活动
<activity
android:name="com.xxx.xxx.xxx.xxx"
android:label="@string/app_name"
android:theme="@style/AppTheme.SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="yyy.page.link"
android:scheme="http" />
<data
android:host="yyy.page.link"
android:scheme="https" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
活动如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ia_login);
checkIfReferral();
}
private void checkIfReferral(){
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;
Log.w(TAG, "FBDL we have a dynamic link");
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
}else{
Log.w(TAG, "FBDL pending dynamic Link Data is null , returning " );
return;
}
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
Boolean ret1 = (user==null);
Boolean ret2 = (deepLink !=null);
Boolean ret3 = (deepLink.getBooleanQueryParameter("invitedby", false));
referrerUid = deepLink.getQueryParameter("invitedby");
if (deepLink != null && deepLink.getBooleanQueryParameter("invitedby", false)) {
referrerUid = deepLink.getQueryParameter("invitedby");
createAnonymousAccountWithReferrerInfo(referrerUid);
}
}
}).addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "FBDL we couldnt receive dynamic link");
}
});
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if(user !=null) {
Log.w(TAG, "FBDL if use != null");
userRecord = FirebaseDatabase.getInstance().getReference()
.child("users")
.child(user.getUid());
}
}
Run Code Online (Sandbox Code Playgroud)
我已经添加了动态链接。它与清单文件中声明的相同。我添加了 SHA 256 从我签署应用程序的发布密钥生成。该应用程序已在 Google Play 商店生产版本中发布。
请让我知道错误是什么。
当动态链接将我带到那里时,为什么我在 Google Play 商店中看不到“继续”?
您必须向将处理动态链接的活动添加一个自动验证的意图过滤器,将主机设置为您项目的动态链接域(如 Firebase 控制台中所示)。在里面AndroidManifest.xml:
<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="yyy.page.link" android:scheme="http"/>
<data android:host="yyy.page.link" android:scheme="https"/>
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
请注意,android:host必须设置为您的动态链接域,而不是深层链接的域。
更多信息请点击这里
我发现您在 Firebase 动态链接的实现中启用了应用链接。应用程序链接需要在清单意图过滤器中添加动态链接域,但动态链接仍然需要为应用程序将收到的深层链接设置意图过滤器。通过在意图过滤器中添加深层链接,不仅可以使 FDL 与应用程序一起使用,而且还可以确保应用程序在使用常规链接时仍然可以工作。
如果此后您仍然遇到问题,可以在此处提交票证https://firebase.google.com/support。您可能需要共享动态链接和您正在使用的 Firebase SDK 版本。
| 归档时间: |
|
| 查看次数: |
700 次 |
| 最近记录: |