Как запретить показ первого маршрута при уведомлении, нажмите в реагировать на родной
Я реализовал 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 ответ
Я только что просмотрел библиотеку и должен сказать, что она действительно плохо спроектирована. Вы должны перейти к реакции-native-firebase.
Но если вы хотите остаться с ним:
Первое, что мы должны выяснить, это как мы можем получить уведомление о том, что приложение было открыто?
Мы не можем использовать 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