如何防止第一条路线显示在react-native中的通知点击

时间:2018-11-21 08:30:52

标签: reactjs react-native react-native-push-notification

我已经使用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,

 });
};

此代码已成功导航到所需路线,但是当应用程序处于后台时,当用户单击通知时,它会在导航至所需路线之前显示应用程序的根路径(初始屏幕)。我根本不想显示启动画面。

1 个答案:

答案 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