当通知到达并且应用程序在后台没有用户交互时,如何在 React Native 中执行操作?
Posted
技术标签:
【中文标题】当通知到达并且应用程序在后台没有用户交互时,如何在 React Native 中执行操作?【英文标题】:How to execute action, in React Native, when notification arrives and the app is in background without the interaction of the user? 【发布时间】:2021-08-02 02:30:10 【问题描述】:我有一个从我的服务器接收推送通知的 React Native 应用程序。 当应用程序处于后台并且用户打开通知时,应用程序会打印一个标签。 当应用处于前台并收到通知时,应用会立即打印一个标签。
我想在应用处于后台时打印标签而无需用户交互。
我怎样才能做到这一点?
我正在考虑使用 Expo Background Fetch,但我需要在收到通知后立即打印标签,并且使用 Expo Background Fetch 我可能打印得太晚了。
谢谢
【问题讨论】:
【参考方案1】:一个选项可以是使用覆盖 expo 通知服务的此类从 Java 打印标签
public class FirebaseMessageService extends FirebaseMessagingService
@Override
public void onCreate()
super.onCreate();
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
//SHOW EXPO NOTIFICATION
createNotificationsHelper().notificationReceived(createNotification(remoteMessage));
//PRINT LABEL IN JAVA...
public void sendRegistrationToServer(String token)
// put your logic here to update fcm registration token
protected NotificationsHelper createNotificationsHelper()
return new NotificationsHelper(this, NotificationsScoper.create(this).createReconstructor());
protected Notification createNotification(RemoteMessage remoteMessage)
String identifier = remoteMessage.getMessageId();
if (identifier == null)
identifier = UUID.randomUUID().toString();
JSONObject payload = new JSONObject(remoteMessage.getData());
NotificationContent content = new JSONNotificationContentBuilder(this).setPayload(payload).build();
NotificationRequest request = createNotificationRequest(identifier, content, new FirebaseNotificationTrigger(remoteMessage));
return new Notification(request, new Date(remoteMessage.getSentTime()));
protected NotificationRequest createNotificationRequest(String identifier, NotificationContent content, FirebaseNotificationTrigger notificationTrigger)
return new NotificationRequest(identifier, content, notificationTrigger);
并将其添加到您的清单中:
<service
android:name=".FirebaseMessageService"
android:exported="false">
<intent-filter android:priority="-1">
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
【讨论】:
Jorge 我需要为 ios 和 Android 做这件事,但在 React Native 中使用 javascript 代码。以上是关于当通知到达并且应用程序在后台没有用户交互时,如何在 React Native 中执行操作?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React Native 中在没有用户交互的情况下收到通知时打开应用程序