我已经检查了react-native-onesignal github README,似乎获得通知的唯一方法是通过onNotificationOpened()回调打开。
他们的文件指出:
当打开或接收到任何通知时,调用回调
onNotification
传递一个带有通知数据的对象。
但onNotification
显然行不通。
有没有办法在不打开推送通知或启用应用内提醒通知的情况下获取通知?
我已经检查了react-native-onesignal github README,似乎获得通知的唯一方法是通过onNotificationOpened()回调打开。
他们的文件指出:
当打开或接收到任何通知时,调用回调
onNotification
传递一个带有通知数据的对象。
但onNotification
显然行不通。
有没有办法在不打开推送通知或启用应用内提醒通知的情况下获取通知?
onNotification
只有在打开通知或在应用程序处于焦点时收到通知时才会调用该函数。
如果您需要在打开通知之前在后台处理通知,则需要使用本机代码执行此操作。
iOS -在 OneSignal创建通知REST API POST 调用上设置content_available
为,这将触发
- application:didReceiveRemoteNotification:fetchCompletionHandler:选择器。true
Android -NotificationExtenderService
按照 OneSignal后台数据和通知覆盖说明进行设置。
关于NotificationExtenderService
在 android 中的实现(不回答原始问题,而是@ryeballar 提出的问题),如https://documentation.onesignal.com/docs/android-customizations#section-background-data-and-notification- 中所述覆盖:
NotificationExtenderService
但是,为了实现NotificationExtenderService
您需要执行以下操作(如上面引用的 onesignal 文档中所述,请注意那里有一个错字,已在下面修复):
NotificationExtender.java
in的文件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>