react-native-onesignal在不打开通知的情况下接收推送通知

时间:2016-07-13 16:37:23

标签: reactjs react-native onesignal

我已经检查了react-native-onesignal github README,看来获取通知的唯一方法是通过onNotificationOpened()回调打开。

他们的文件说明:

  

当打开或收到任何通知时,调用回调onNotification传递带有通知数据的对象。

但是onNotification显然不起作用。

有没有办法在不打开推送通知或启用应用内警报通知的情况下收到通知?

2 个答案:

答案 0 :(得分:1)

仅在打开通知时或在应用处于焦点时收到通知时才会调用onNotification功能。

如果您需要在打开通知之前在后台处理通知,则需要使用本机代码。

iOS - 在OneSignal create notification REST API POST调用上将content_available设置为true,这将触发 - application:didReceiveRemoteNotification:fetchCompletionHandler:选择器。

Android - 按照OneSignal Background Data and Notification Overriding说明设置NotificationExtenderService

答案 1 :(得分:0)

关于NotificationExtenderService在android中的实现(不回答原始问题,而是@ryeballar提出的问题),如https://documentation.onesignal.com/docs/android-customizations#section-background-data-and-notification-overriding中所述:

  • 我在未实现NotificationExtenderService的情况下关闭/滑动/未启动应用时收到通知。
  • 但是,要实施NotificationExtenderService,您需要执行以下操作(如上面引用的onesignal文档中所述,请注意,这里有一个错字,下面已修正 ):

    1. NotificationExtender.java中创建一个名为node_modules\react-native-onesignal\android\src\main\java\com\geektime\rnonesignalandroid的文件,其内容如下:

import com.onesignal.OSNotificationPayload;
package com.geektime.rnonesignalandroid;
import com.onesignal.OSNotificationPayload;
import com.onesignal.OSNotificationPayload;
import com.onesignal.NotificationExtenderService;
import com.onesignal.OSNotificationReceivedResult;

public class NotificationExtender extends NotificationExtenderService {
   @Override
   protected boolean onNotificationProcessing(OSNotificationReceivedResult receivedResult) {
        // Read properties from result.

      // Return true to stop the notification from displaying.
      return false;
   }
}
  1. 将以下内容添加到android\app\src\main\AndroidManifest.xml

<service android:name=".NotificationExtender" 
   android:permission="android.permission.BIND_JOB_SERVICE" 
   android:exported="false">
  <intent-filter>
    <action android:name="com.onesignal.NotificationExtenderService" />
  </intent-filter>
</service>
  1. 重建您的应用