динамическая ссылка на firebase android PendingDynamicLinkData не имеет значения прямо через приложение - PullRequest
0 голосов
/ 15 ноября 2018

Проблема: почему «Короткие динамические ссылки», созданные программно, не открывают / не запускают приложение напрямую?

Я хочу запустить приложение напрямую, когда пользователь нажимает динамический URL, созданный динамически приложением для Android.

При нажатии на динамическую короткую ссылку, динамически создаваемую приложением для Android, происходит следующее:

1.Опция показать два варианта: один через хром, другой через приложение

2.Если я выбрал опцию Chrome, браузер открывается, показывает диалоговое окно загрузки и запускает приложение с данными PendingDynamicLinkData

3.но если я выберу опцию приложения, приложение запускает приложение, но PendingDynamicLinkData теряется или обнуляется.

Любая Помощь была бы великолепна. моя настройка манифеста ниже

  <intent-filter android:autoVerify="true">
    <action android:name="android.intent.action.VIEW" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

    <data android:host="myapp.page.link" android:scheme="http"/>
    <data android:host="myapp.page.link" android:scheme="https"/>
  </intent-filter>

1 Ответ

0 голосов
/ 15 ноября 2018

Вы должны обработать ваши PendingDynamicLinkData в действии, чтобы переопределить onCreate и onNewIntent.Как это:

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        if (intent != null) {
            handleDeepLink(intent);
        }
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (intent != null) {
        handleDeepLink(intent);
    }
}

private void handleDeepLink(Intent intent) {
        FirebaseDynamicLinks.getInstance().getDynamicLink(intent).addOnSuccessListener(pendingDynamicLinkData -> {
            if (pendingDynamicLinkData != null) {
                Uri deepLink = pendingDynamicLinkData.getLink();
                if (deepLink != null) {
                    // todo .....
                }
            }
        });
    }
...