反应原生PushNotificationIOS不会听取推送通知

时间:2015-04-12 06:27:48

标签: push-notification reactjs react-native

我正在测试反应原生的PushNotificationIOS。

http://facebook.github.io/react-native/docs/pushnotificationios.html#content

我在componentWillMount函数

中绑定了如下所示的事件
PushNotificationIOS.addEventListener('notification', this._onNotification);

我从服务器向设备发送推送通知。 它没有捕获推送通知。

我只能在对象c代码

下面收到推送通知
(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
}

PushNotificationIOS可以通过RCTDeviceEventEmitter电话收听。 但是来自服务器的通知无法收听。

有谁知道这个问题?

2 个答案:

答案 0 :(得分:6)

推送通知无法开箱即用,React Native文档中未记录此信息。您需要首先向项目添加一些内容才能连接通知。我在github https://github.com/facebook/react-native/pull/1979#issue-94795697上的一个未解决的问题中找到了这些信息。

您基本上需要在AppDelegate.m中手动连接通知,并从RCTPushNotificationManager调用相应的方法,以便PushNotificationsIOS类可以从您的javascript代码处理它们。

  1. 将RCTPushNotification添加到您的项目中(并在构建设置中链接二进制文件)。
  2. 将此标题添加到标题搜索路径:$(SRCROOT)/node_modules/react-native/Libraries/**
  3. 将此代码添加到AppDelegate.m:
  4. #import "RCTPushNotificationManager.h"
    
    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
    {
        [RCTPushNotificationManager application:application didFailToRegisterForRemoteNotificationsWithError:error];
    }
    
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
        [RCTPushNotificationManager application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)notification
    {
        [RCTPushNotificationManager application:application didReceiveRemoteNotification:notification];
    }
    

答案 1 :(得分:1)

我也发现了这一点,所以写了一个替换模块来处理接收推送通知 - https://github.com/darylrowland/react-native-remote-push