我在项目中使用 expo React Native,并且在项目中使用 expo-notifications 包。
我已将 "useNextNotificationsApi": true 添加到我的 app.json 文件中 在expo对象下的android对象下,所以expo.android.useNextNotificationsApi:true。
我还在从服务器发送到 expo 服务器的消息上设置了 experienceId,我正在使用 https://github.com/expo/expo-server-sdk-node 包进行发送。
messages.push({
to: red_user.fcm_token,
sound: 'default',
title: "Stylist Response",
body: "Stylist has agreed to fulfill the request",
data: {
experienceId: "@glamcentralng/GlamCentral",
order: order._id,
stylist_response: "agreed"
},
})
在我的 expo React Native 应用程序中,我正在使用我提到的 expo-notifications 包,并且我的类组件中有以下设置。
import * as Notifications from 'expo-notifications';
.
.
.
.
componentDidMount() {
//Not working at all
Notifications.addNotificationReceivedListener( notification => {
console.log(notification);
this._handleNotification(notification)
});
//Working well
Notifications.addNotificationResponseReceivedListener(response => {
console.log(response);
});
this.registerForPushNotificationsAsyncNew();
}
addNotificationReceivedListener 在收到通知时没有收到通知,但我将其视为我的真实 Android 设备上的正常通知(我没有使用模拟器)。根据文档,当我单击通知时,addNotificationResponseReceivedListener 应该处理它并且确实如此。所以 addNotificationReceivedListener 不起作用,但 addNotificationResponseReceivedListener 效果很好。
还要补充的一件事是,我在按照文档进行注册的函数中获得了一个令牌。
不知道如何解决这个问题,因为我已经检查了这里和 github 上的其他线程。如有任何帮助,我们将不胜感激。
我遇到了与你类似的问题,为了解决它,我实际上需要做一些棘手的事情,通常我没有通过expo API找到解决方案,所以这就是我所做的: 我安装了 firebase 消息传递(别担心,我不会使用 firebase,只是为了解决问题),并且我通过添加它们来添加权限,认为是 React Native 附带的请求模块,接下来,我使用设置了一个通知处理程序firebase 消息传递,使用此方法来自 expo-sdk 的通知将使用此处理程序进行处理。这是我添加的内容:
PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS);
useEffect(() => {
const unsubscribe = messaging().onMessage(async (remoteMessage) => {
Alert.alert("A new FCM message arrived!", JSON.stringify(remoteMessage));
});
return unsubscribe;
}, []);
如果您使用 ios,请按照此处的 Firebase 权限设置进行操作。 您也可能需要在您的请求中添加scopekey(scopekey“@glamcentralng/GlamCentral”)
如果不清楚,请见谅。