Firebase动态链接打开特定活动

时间:2017-12-13 13:24:21

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

我在我的iOS应用上实现了Firebase动态链接(非常棒!),现在我在Android上做同样的工作。 我设法通过点击动态网址启动我的Android应用,但我无法在其他活动上打开它而不是我的启动器活动。

这是我的manifest.xml文件:

    <activity android:name=".Activity.SplashActivity"
        android:theme="@style/SplashTheme"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity android:name=".Activity.RouteListActivity"
        android:screenOrientation="portrait">
        <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="mywebsite.com" android:scheme="http"/>
            <data android:host="mywebsite.com" android:scheme="https"/>
            <data
                android:host="myapp.app.goo.gl/"
                android:scheme="https" />
        </intent-filter>
    </activity>

当我点击网址时,浏览器会打开并重定向到我的应用,但会在SplashActivity上打开,而不是按预期在RouteListActivity上打开。

我错过了什么吗?

谢谢

1 个答案:

答案 0 :(得分:0)

以下是我处理应用程序中深层链接的步骤。

第一

  

将此添加到将处理Deep的活动(清单文件中)   您的应用程序的链接。对我来说,这是我的主屏幕活动

<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="yourDomain"
                android:scheme="http" />
            <data
                android:host="yourDomain"
                android:scheme="https" />
</intent-filter>

下一步

  

转到添加了以上代码的活动。在onCreate中   活动的方法,您将处理收到的数据。

  • 在这样的活动中创建动态链接实例-

代码在科特林

    FirebaseDynamicLinks.getInstance().getDynamicLink(intent).addOnSuccessListener{pendingDynamicLinkData ->

                    var deepLink: Uri? = null
                    if (pendingDynamicLinkData != null) {
                        deepLink = pendingDynamicLinkData.link
                    }

                    val path = deepLink?.path
                    val query = deepLink?.encodedQuery

                    //You can log the path here
                    //Generally the path consists of the link extracted 
                    //from the deep link

                    val parts = path?.split("/")

                    if (parts?.get(2) == "something") {
                        val intent = Intent(this, YouActivity::class.java)
                        intent.putExtra("extra1", parts[3])
                                .putExtra("extra2", parts[1])
                        startActivity(intent)
                    } 
                }.addOnFailureListener { e -> //You can log the error here }

我在这里做了什么?

  

首先,我创建了FirebaseDynamicLinks实例。接下来,我使用了   提取动态链接数据以提取链接(deepLink?.path),其中   是打开我网站上特定页面的链接(例如文章)。   然后,我将链接拆分为多个片段,并将其用作信息   (意图中的附加功能)发送给我的活动并加载   所需数据。

您可以对各种链接执行此操作。在接收活动中接收数据,并根据接收到的数据从那里重定向到任何活动。

我希望这有助于解决您的问题。 让我知道是否有任何困惑。

谢谢