Как получить FireBase Dynami c ссылки на основной деятельности? - PullRequest
0 голосов
/ 07 января 2020

По какой-то причине, когда я использую основное действие для обработки ссылок Firebase Dynami c, параметр обработчика PendingDynamicLinkData обнуляется.

Я проверил Intent и при использовании основного представления для обработки URL значение действия - android.intent.action.MAIN, вместо android.intent.action.VIEW - действие, используемое для обработки URL-адресов.

Это выглядит так, потому что приложение находится в фоновом режиме, когда пользователь нажимает URL-адрес в браузере, android отправляет действие android.intent.action.MAIN для активации основного действия, но затем не отправляет android.intent.action.VIEW в то же действие.

Вот манифест:

 <activity
        android:name=".ui.activities.NotificationActivity"
        android:label="@string/nav_title"
        android:parentActivityName=".ui.activities.navigationActivity.NavigationActivity"
        android:exported="false"
        android:launchMode="singleInstance"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="OPEN_ACTIVITY_NOTIFICATION" />
            <category android:name="android.intent.category.DEFAULT" />
        </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="mydomain.com" android:scheme="https" />
        <data android:host="myfirebasedomain" android:scheme="https"/>
    </intent-filter>

Здесь обработчик метода запуска NavitationActivity (такой же, как в этом руководстве ):

FirebaseDynamicLinks.getInstance()
                .getDynamicLink(intent)
                .addOnSuccessListener(this) { pendingDynamicLinkData ->
                    // Get deep link from result (may be null if no link is found)
                    var deepLink: Uri? = null
                    if (pendingDynamicLinkData != null) {

                        Log.d(TAG,"Found something")
                        deepLink = pendingDynamicLinkData.link
                    }

                }
                .addOnFailureListener(this) {
                    e -> Log.w(TAG, "getDynamicLink:addOnFailureListener", e)
                }
                .addOnCanceledListener(this) {
                    Log.w(TAG, "getDynamicLink:addOnCanceledListener")
                }

Обновление

Манифест был неполным, я пропускаю добавление атрибут android: launchMode = "singleInstance". Кроме того, я обнаружил, что это сопряжение этого атрибута с двумя действиями, Main и View, которые вызывают проблему.

Удаление этого атрибута не является решением для меня, потому что это вызовет другие проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...