【问题标题】:Firebase Dynamic Link PendingDynamicLinkData return null androidFirebase 动态链接 PendingDynamicLinkData 返回 null android
【发布时间】:2019-09-27 10:36:19
【问题描述】:

我尝试了以下 firebase 官方动态链接示例,但对我不起作用。

Dynamic Link:

主祭:

 <activity android:name=".java.MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <!-- [START link_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="plpsoft.page.link"
                    android:scheme="https"/>
                <data
                    android:host="plpsoft.page.link"
                    android:scheme="http"/>
            </intent-filter>
            <!-- [END link_intent_filter] -->
        </activity>

活动:

@Override
        protected void onCreate(Bundle savedInstanceState) {
      FirebaseDynamicLinks.getInstance()
                    .getDynamicLink(getIntent())
                    .addOnCompleteListener(new OnCompleteListener<PendingDynamicLinkData>() {
                        @Override
                        public void onComplete(@NonNull Task<PendingDynamicLinkData> task) {
                            Uri deepLink = null;
                            if (task.getResult() != null) {
                                deepLink=task.getResult().getLink();
                                ((TextView) findViewById(R.id.linkViewReceive))
                                        .setText(deepLink.toString());

                            }
                        }
                    })
                    .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();
                            }


                            // Handle the deep link. For example, open the linked
                            // content, or apply promotional credit to the user's
                            // account.
                            // ...

                            // [START_EXCLUDE]
                            // Display deep link in the UI
                            if (deepLink != null) {
                                Snackbar.make(findViewById(android.R.id.content),
                                        "Found deep link!", Snackbar.LENGTH_LONG).show();

                                ((TextView) findViewById(R.id.linkViewReceive))
                                        .setText(deepLink.toString());
                            } else {
                                Log.d(TAG, "getDynamicLink: no link found");
                            }
                            // [END_EXCLUDE]
                        }
                    })
                    .addOnFailureListener(this, new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.e("Splash", "getDynamicLink:onFailure", e);
                        }
                    })
                    .addOnFailureListener(this, new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Log.w(TAG, "getDynamicLink:onFailure", e);
                        }
                    });
    }

点击 URL 时,应用程序将成功启动,并且我还获得了意图数据 URI 字符串。如果我将此 URI 传递给 getDynamicLink() 方法,它将返回为 null。我还在 Firebase 控制台中添加了 SHA1SHA256 键。

【问题讨论】:

  • 得到与我们在 Android 应用程序中提取 firebase 深层链接 url 相同的错误。谁有同样的经历,请帮忙。
  • 我只能使用以下方法获取链接:Uri link = getIntent().getData() 不成功:FirebaseDynamicLinks.getInstance().getDynamicLink(getIntent())

标签: android firebase firebase-dynamic-links


【解决方案1】:

我能够通过从清单中删除意图过滤器并在 MainActivity 中添加回调处理程序来修复它。

文档说的是:

在回调中,PendingDynamicLinkData 在 addOnSuccessListener(OnSuccessListener) 或 addOnCompleteListener(Activity, OnCompleteListener) 中返回,它返回最近点击的动态链接,如果动态链接未作为捕获的数据或在意图中挂起,则返回 null .

因此意图过滤器正在捕获深层链接,并且由于它不再处于待处理状态,因此回调返回 null

【讨论】:

    猜你喜欢
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    相关资源
    最近更新 更多