【发布时间】:2018-06-16 03:36:21
【问题描述】:
https://firebase.google.com/docs/dynamic-links/android/receive
声明
调用 getDynamicLink() 检索链接并清除该数据,以便 它只被您的应用处理一次。
您通常在主要活动中调用 getDynamicLink() 以及任何 由匹配链接的意图过滤器启动的活动。
我从文档中复制了以下代码。
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();
}
// Handle the deep link. For example, open the linked
// content, or apply promotional credit to the user's
// account.
// ...
// ...
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "getDynamicLink:onFailure", e);
}
});
如果我把上面的代码放在MainActivity:onCreate上
- 当应用不在后台运行时,深层链接可以正常工作
- 当应用在后台运行时,无法识别深层链接(不会调用
onSuccess回调)
如果我把上面的代码放在MainActivity:onStart
- 无论应用是否在后台运行,深层链接都可以正常工作
- 如果用户点击深层链接,主活动获取它并打开适当的活动,(工作正常)但是当他尝试返回主活动时,
onSuccess回调再次触发,他永远无法进入主活动活动。
【问题讨论】:
-
对于
onCreate()的情况,您说onSuccess()不会被调用。是否改为调用onFailure()?在我使用getDynamicLink()时,总是调用onSuccess(),第一个调用包含PendingDynamicLinkData,后续调用包含null。 -
@BobSnyder 没有 onSuccess 和 onFailure 都不会被调用。
-
我也遇到了同样的问题。我认为 getDynamicLink() 会清除数据,但事实并非如此。并且该方法的每次调用每次都返回相同的链接。这样一次处理不了。
-
@eugene 我遇到了同样的问题,你解决了这个问题吗?第一步:在应用中收到动态链接。第 2 步:导航到所需的页面。第 3 步:应用程序进入后台。第四步:从后台打开应用,应用仍然导航到之前的动态链接页面。我正在使用 onStart() 方法
-
我在这里回答了这个问题:stackoverflow.com/a/62985346/1432239
标签: android firebase firebase-dynamic-links