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

IT技术 reactjs react-native onesignal
2021-05-20 09:16:13

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

他们的文件指出:

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

onNotification显然行不通。

有没有办法在不打开推送通知或启用应用内提醒通知的情况下获取通知?

2个回答

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 文档中所述,请注意那里有一个错字,已在下面修复):

    1. 创建一个名为NotificationExtender.javain的文件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. 重建你的应用