我已经检查了react-native-onesignal github README,看来获取通知的唯一方法是通过onNotificationOpened()回调打开。
他们的文件说明:
当打开或收到任何通知时,调用回调
onNotification
传递带有通知数据的对象。
但是onNotification
显然不起作用。
有没有办法在不打开推送通知或启用应用内警报通知的情况下收到通知?
答案 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文档中所述,请注意,这里有一个错字,下面已修正 ):
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;
}
}
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>