我已经使用react-native-push-nofication
实现了推送通知,这是我的推送通知配置。
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,
});
};
此代码已成功导航到所需路线,但是当应用程序处于后台时,当用户单击通知时,它会在导航至所需路线之前显示应用程序的根路径(初始屏幕)。我根本不想显示启动画面。
答案 0 :(得分:2)
我刚刚查看了图书馆,不得不说,这确实是一个糟糕的设计。您应该移至react-native-firebase。
但是,如果您要坚持下去:
我们首先要弄清楚的是,如何获取打开应用程序的通知?
我们无法使用库中的onNotification
,因为我们不知道何时调用回调。
该库具有选项popInitialNotification
,该选项将引发打开应用程序的初始通知。如果您在库的源代码中搜索此变量,则将find the following:
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)
的{{3}}。
您现在可以使用该功能来获取初始通知。
PushNotification.popInitialNotification(function(notification) {
});
现在,您可以直接访问初始通知,而不必等待onNotification
。
从此处开始,您可以像下面的示例一样在反应导航中使用SwitchNavigator:function