Как отключить действие открытой кнопки URL-адреса Firebase в приложении - PullRequest
0 голосов
/ 25 марта 2020

Хотя я создал прослушиватель щелчков сообщений в приложении Firebase, он пытается открыть систему android при нажатии кнопки.

URL-адрес, подобный этому: https://site_url / product_id

Я хочу открыть этот URL после операции logi c.

class MainActivity : AppCompatActivity() : FirebaseInAppMessagingClickListener {

  override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
      ....

     FirebaseInAppMessaging.getInstance().addClickListener(this)
     FirebaseInAppMessaging.getInstance().triggerEvent("main_activity_ready")
}

  override fun messageClicked(message: InAppMessage, action: Action) {
    val url =( action.actionUrl ?: "")
    Log.d(TAG, "in-app messaging url : $url")
    linkParsePresenter.startLinkParse(url, PreviousPage.InAppMessaging) // This is my logic function.

}
}

enter image description here

вызвана функция messageClicked , Нет проблем. Но система также пытается открыть этот URL. Как я могу переопределить или отключить его?

1 Ответ

1 голос
/ 22 апреля 2020

Я тоже с этим борюсь.

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

Это выдержка из FirebaseInAppMessagingDisplay:

actionListener = new OnClickListener() {
                    public void onClick(View v) {
                        if (FirebaseInAppMessagingDisplay.this.callbacks != null) {
                            FirebaseInAppMessagingDisplay.this.callbacks.messageClicked(action);
                        }

                        CustomTabsIntent i = (new Builder()).setShowTitle(true).build();
                        i.launchUrl(activity, Uri.parse(action.getActionUrl()));
                        FirebaseInAppMessagingDisplay.this.notifyFiamClick();
                        FirebaseInAppMessagingDisplay.this.removeDisplayedFiam(activity);
                        FirebaseInAppMessagingDisplay.this.inAppMessage = null;
                        FirebaseInAppMessagingDisplay.this.callbacks = null;
                    }
                };

Как вы можете видеть, Firebase будет проходить через все пользовательские обратные вызовы, но затем попытаться выполнить навигацию независимо от launchUrl(activity, Uri.parse(action.getActionUrl())).

Единственный вариант, который я могу придумать, - это правильно поддерживать глубокие ссылки в вашем приложении как рекомендуется в Настройка сообщений обмена сообщениями в приложении Firebase .

...