Firebase动态链接没有在android中作为单独的应用程序打开我的应用程序

时间:2017-10-05 23:42:29

标签: android firebase deep-linking firebase-dynamic-links

It is opening like that为什么firebase动态链接无法打开单独的应用程序?

以下是我用来创建动态链接的代码

    Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()

            .setLink(Uri.parse(DEEP_LINK_URL))
            .setDynamicLinkDomain(domain)
            .setAndroidParameters(new DynamicLink.AndroidParameters.Builder()
                    .setMinimumVersion(0)
                    .setFallbackUrl(marketUri)
                    .build())
            .buildShortDynamicLink()

            .addOnCompleteListener(activity, new OnCompleteListener<ShortDynamicLink>() {
                @Override
                public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                    if (task.isSuccessful()) {
                        Uri shortLink = task.getResult().getShortLink();
                        Uri flowchartLink = task.getResult().getPreviewLink();
                        Log.d("DynamicLink", "shortLink: " + shortLink);
                        shareDeepLink(shortLink.toString());
                        Log.d("DynamicLink", "flowchartLink: " + flowchartLink);

                    } else {
                        // Error
                        // ...
                    }
                }
            });

2 个答案:

答案 0 :(得分:0)

WhatsApp正在打开动态链接,他们没有将其作为新任务(FLAG_ACTIVITY_NEW_TASK)打开。

Firebase动态链接目前会通过调用应用程序使用的大部分标记,并认为如果调用应用程序想要在同一任务堆栈中打开网页,那么FDL应用程序也应该这样做。

所以在这种情况下,没有办法解决,抱歉!

答案 1 :(得分:0)

我知道距问这个问题已经有一段时间了,但仍然: 我刚刚尝试用FLAG_ACTIVITY_NEW_TASK标志重新启动MainActivity,它似乎运行正常!

根据您的用例,您可能需要实现某种方式以将信息从动态链接传输到“新”应用程序实例。

fun checkForPendingLink(intent: Intent) {
    FirebaseDynamicLinks.getInstance()
            .getDynamicLink(intent)
            .addOnSuccessListener(activity) { pendingDynamicLinkData ->
  // Do something with the link's data

  //Since the app was opened via the link, it is on the back stack of the application containing the link
  //Restart the MainActivity as new task to decouple it
  val restartIntent = Intent(activity, MainActivity::class.java)
  restartIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
  startActivity(restartIntent)
  finish()
}