Как запретить показ первого маршрута при уведомлении, нажмите в реагировать на родной - PullRequest
0 голосов
/ 21 ноября 2018

Я реализовал push-уведомление, используя react-native-push-nofication, вот моя конфигурация push-уведомлений.

const configure = () => {

 var _token

 PushNotification.configure({

   onRegister: function(token) {
     //process token

     //alert(JSON.stringify(token));
     Clipboard.setString(JSON.stringify(token))
   },

   onNotification: function(notification) {
     // process the notification
     // required on iOS only
     navigator.navigate(notification.data.url);
    // notification.finish(PushNotificationIOS.FetchResult.NoData);
   },

   senderID: Config.GCMSENDERKEY,

   permissions: {
     alert: true,
     badge: true,
     sound: true
   },

   popInitialNotification: true,
   requestPermissions: true,

 });
};

Этот код успешно перемещается по желаемому маршруту, но когда приложение находится в фоновом режиме, когда пользователь нажимает науведомление показывает корневой маршрут приложения (заставку) перед переходом к желаемому маршруту.Я не хочу, чтобы заставка отображалась вообще.

1 Ответ

0 голосов
/ 02 декабря 2018

Я только что просмотрел библиотеку и должен сказать, что она действительно плохо спроектирована.Вы должны перейти на реагировать-родной-пожарной базы .

Но если вы хотите остаться с ним:

Первое, что мы должны выяснить, это то, как мыможно получить уведомление, с помощью которого было открыто приложение?

Мы не можем использовать onNotification из библиотеки, потому что мы не знаем, когда будет вызван обратный вызов.

Библиотекаимеет параметр popInitialNotification, который будет выдавать первоначальное уведомление, с которым приложение было открыто.Если вы будете искать эту переменную в исходном коде библиотеки, вы найдете следующее :

    if ( this.hasPoppedInitialNotification === false &&
            ( options.popInitialNotification === undefined || options.popInitialNotification === true ) ) {
        this.popInitialNotification(function(firstNotification) {
            if ( firstNotification !== null ) {
                this._onNotification(firstNotification, true);
            }
        }.bind(this));
        this.hasPoppedInitialNotification = true;
    }

Как видите, она вызовет функцию с именем popInitialNotification(callback) с функцией обратного вызова с начальным уведомлением.

Теперь вы можете использовать функцию для получения начального уведомления.

PushNotification.popInitialNotification(function(notification) {

});

Теперь у вас есть доступ к начальному уведомлениюнапрямую, без ожидания onNotification.

С этого момента вы можете использовать SwitchNavigator из реагирующей навигации, как в следующем примере: https://reactnavigation.org/docs/en/auth-flow.html

...