Java Firebase动态链接没有';t在安装后第一次启动时调用动态链接
我读过很多关于stackoverflow的问题,但没有一个能回答这个问题 我正在尝试设置动态链接,这样一个链接将深度链接用户到应用程序(如果他们已经安装),如果他们没有安装,则链接到play store。我希望链接能够在play store安装过程中幸存下来,并与链接一起发送到启动器活动。当应用程序已经安装时,动态链接会起作用。但是,当应用程序未安装时,它会将用户发送到play store,但动态链接在安装过程中无法存活。我曾读到,当用户通过动态链接被发送到play store时,“Open”(打开)按钮应改为“Continue”(继续),但当我这样做时,它仍然显示“Open”(打开)。以下是我在AndroidManifest.xml中针对该活动的活动Java Firebase动态链接没有';t在安装后第一次启动时调用动态链接,java,android,firebase,firebase-dynamic-links,Java,Android,Firebase,Firebase Dynamic Links,我读过很多关于stackoverflow的问题,但没有一个能回答这个问题 我正在尝试设置动态链接,这样一个链接将深度链接用户到应用程序(如果他们已经安装),如果他们没有安装,则链接到play store。我希望链接能够在play store安装过程中幸存下来,并与链接一起发送到启动器活动。当应用程序已经安装时,动态链接会起作用。但是,当应用程序未安装时,它会将用户发送到play store,但动态链接在安装过程中无法存活。我曾读到,当用户通过动态链接被发送到play store时,“Open”(
<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>
活动如下:
@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());
}
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u ia\u登录);
checkIfReferral();
}
私有void checkIfReferral(){
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(此,新的OnSuccessListener(){
@凌驾
成功时的公共无效(PendingDynamicLinkData PendingDynamicLinkData){
//从结果获取深度链接(如果未找到链接,则可能为空)
urideeplink=null;
w(标签,“FBDL我们有一个动态链接”);
如果(PendingDynamicClinkData!=null){
deepLink=pendingDynamicLinkData.getLink();
}否则{
w(标记,“FBDL挂起的动态链接数据为空,返回”);
返回;
}
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
布尔ret1=(用户==null);
布尔值ret2=(deepLink!=null);
布尔值ret3=(deepLink.getBooleanQueryParameter(“invitedby”,false));
refererUID=deepLink.getQueryParameter(“invitedby”);
if(deepLink!=null&&deepLink.getBooleanQueryParameter(“invitedby”,false)){
refererUID=deepLink.getQueryParameter(“invitedby”);
使用refererInfo(refererUID)创建匿名帐户;
}
}
}).addOnFailureListener(此,新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
w(标签,“FBDL我们无法接收动态链接”);
}
});
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
如果(用户!=null){
Log.w(标记,“如果使用FBDL!=null”);
userRecord=FirebaseDatabase.getInstance().getReference()
.child(“用户”)
.child(user.getUid());
}
}
我添加了动态链接。它与清单文件中声明的相同。我已经添加了从应用程序签名的发布密钥生成的SHA 256。该应用程序在Google Play Store产品发布版上发布
请告诉我是什么错误
当动态链接将我带到Google Play store时,为什么我没有在Google Play store上看到“continue”?我看到在Firebase动态链接的实现中启用了该功能。应用程序链接要求将动态链接域添加到清单意图筛选器中,但动态链接仍需要具有应用程序将接收的内容。通过在意向过滤器中添加深度链接,不仅可以使FDL与应用程序一起工作,还可以确保应用程序在使用常规链接时仍能工作
如果在此之后您仍然有问题,您可以在此处提交问题。您可能需要共享动态链接和正在使用的Firebase SDK版本。我认为您需要为应用程序启用链接处理验证
您必须向将处理动态链接的活动添加自动验证的意图过滤器,将主机设置为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>
您是否尝试将它们分离为DeeplinkActivity
和launchectivity
?这不起作用。问题的作者清楚地告知,当应用程序已经安装时,链接可以工作。但是,该链接在应用程序安装过程中无法生存,并在该过程中丢失所有深度链接查询参数。这不起作用。问题的作者清楚地告知,当应用程序已经安装时,链接可以工作。但是,该链接在应用程序安装过程中无法生存,并在安装过程中丢失所有深度链接查询参数。
<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>