android firebase动态链接PendingDynamicLinkData直接通过app为空

Kim*_*Hak 6 android dynamic-links firebase deeplink firebase-dynamic-links

问题:为什么以编程方式创建的“短动态链接”不会直接打开/启动应用程序?

我想在用户单击由 android 应用程序动态创建的动态 url 时直接启动应用程序。

单击由 android 应用程序动态创建的动态短链接时,会发生以下情况,

1.Option 显示两个选项,一个是通过 chrome 另一个是通过 app

2.如果我选择 chrome 选项,浏览器将打开,显示一个加载对话框并使用 PendingDynamicLinkData 数据启动应用程序

3.但如果我选择应用程序选项,应用程序启动应用程序但 PendingDynamicLinkData 丢失或为空。

任何帮助都会很棒。我的清单设置如下

  <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="myapp.page.link" android:scheme="http"/>
    <data android:host="myapp.page.link" android:scheme="https"/>
  </intent-filter>
Run Code Online (Sandbox Code Playgroud)

小智 4

您应该在活动中处理 PendingDynamicLinkData 以覆盖 onCreate 和 onNewIntent。像这样:

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        if (intent != null) {
            handleDeepLink(intent);
        }
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (intent != null) {
        handleDeepLink(intent);
    }
}

private void handleDeepLink(Intent intent) {
        FirebaseDynamicLinks.getInstance().getDynamicLink(intent).addOnSuccessListener(pendingDynamicLinkData -> {
            if (pendingDynamicLinkData != null) {
                Uri deepLink = pendingDynamicLinkData.getLink();
                if (deepLink != null) {
                    // todo .....
                }
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)