Как реализовать OneSignal push-уведомление, которое открывает URL-адрес в webview, а не в браузере?

#android #android-fragments #webview #onesignal

#Android #android-фрагменты #webview #onesignal

Вопрос:

Как открыть URL-адрес в webview при отправке push-уведомления onesignal, прямо сейчас оно открывается в браузере по умолчанию и как обработать целевой URL-адрес с помощью обработчика уведомлений. Вот пример кода, в котором я хочу реализовать уведомление onesignal, и я старался изо всех сил, но не смог справиться с этим. Есть предложения от экспертов.

 public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        OneSignal.startInit(this).init();
}  

обработка

Ответ №1:

Вот моя реализация… Я добавил этот код в свой класс приложения onCreate()

 OneSignal.startInit(this).setNotificationOpenedHandler(new OneSignal.NotificationOpenedHandler() {
            @Override
            public void notificationOpened(OSNotificationOpenResult result) {

                String launchURL = result.notification.payload.launchURL;

                if (launchURL != null) {
                    Log.d(Const.DEBUG, "Launch URL: "   launchURL);

                    Intent intent = new Intent(getApplicationContext(), WebViewActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.putExtra("url", launchURL);
                    startActivity(intent);

                } else {
                    Log.d(Const.DEBUG, "Launch URL not found");

                    Intent intent = new Intent(getApplicationContext(), SplashActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                }
            }
        }).init();
  

Ответ №2:

Для этого вы должны указать свой URL-адрес в качестве дополнительного поля данных, а не в качестве URL-адреса запуска.

Затем, используя OneSignal Android NotificationReceivedHandler, вы можете получить эти дополнительные данные и открыть webview по URL-адресу.

Комментарии:

1. Gdeglin, спасибо, что мы прочитали документацию перед самим собой, проблема в том, что мы не получаем никакой точной документации или примера, поэтому очень сложно реализовать конкретную функцию one-signal в нашем.

Ответ №3:

Одна из возможностей заключается в создании двух типов сообщений: одно для отправки в браузеры, а другое — в приложения. В этом вопросе приведен один пример того, как это можно сделать: https://wordpress.org/support/topic/variable-launchurl

Не уверен, поможет ли это вашему делу, но я надеюсь на это.