1

我正在为 Android 使用 Firebase 深度链接,但它在后台无法正常工作。这是我正在使用的代码

 mGoogleApiClient = new GoogleApiClient.Builder(this)
            .enableAutoManage(SplashActivity.this, SplashActivity.this)
            .addApi(AppInvite.API)
            .build();
boolean autoLaunchDeepLink = false;
AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink)
        .setResultCallback(
                new ResultCallback<AppInviteInvitationResult>() {
                    @Override
                    public void onResult(@NonNull AppInviteInvitationResult result) {
}}}

它在应用程序不在后台时工作,但如果应用程序在后台,它会打开应用程序但不会调用onResult方法。ResultCallback这就是为什么我无法根据要求导航应用程序屏幕的原因。

4

2 回答 2

0

你把你的AppInvite.AppInviteApi.getInvitation()代码放在哪里了?它应该驻留在ActivityAndroidManifest使用适当的 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="example.com" android:scheme="http"/>
    <data android:host="example.com" android:scheme="https"/>
</intent-filter>
于 2017-02-01T13:49:34.893 回答
0

我发现发生这种情况的原因是因为在启动的第一个活动中处理了深层链接。实际上,要使其正常工作,需要在第二个活动中进行处理,如下所示:

    <activity>
        android:name=".activity.FirstActivity"
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity>
        android:name=".activity.SecondActivity"
        <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:scheme="https" 
                  android:host="www.example.com" 
                  android:pathPrefix="/extra"/>
        </intent-filter>
    </activity>

这对我有用。

于 2017-02-16T09:07:46.277 回答