我正在使用EXPO托管工作流开发移动应用程序。我的应用程序具有后端的PHP REST API。 在处理应用程序的推送通知部分时,我遇到了一个奇怪的问题。
我正在使用2种不同的设备(iPhone和Android手机)进行测试。两种设备都使用不同的用户帐户登录应用程序,并且两种设备都在数据库中设置了不同的博览会推送通知令牌。
当管理员希望向特定用户发送新报价时,两个设备都会收到推送通知,而不是仅管理员希望向其发送消息的用户所属的设备。
这是我从后端发送通知的方式。该代码仅执行一次,所以我想我在这里做错了。
$this->expo = Expo::normalSetup();
$interest = 'new_offer';
// Subscribe the recipient to the server
$this->expo->subscribe($interest, $recipient);
// Build the notification data
$notification = [
'title' => $this->title,
'body' => $body,
'data' => json_encode([
'type' => $this->type,
'inquiryId' => $this->inquiry->getId(),
'offerId' => $this->offer->getId(),
]),
];
// Notify an interest with a notification
$this->expo->notify($interest, $notification);
这就是我在应用程序中的处理方式
/**
* Get Expo push token and connect it with the user
* @see https://docs.expo.io/versions/latest/guides/push-notifications/
* @returns {Promise<void>}
*/
registerForPushNotificationsAsync = async () => {
const {status: existingStatus} = await Permissions.getAsync(Permissions.NOTIFICATIONS);
let finalStatus = existingStatus;
// only ask if permissions have not already been determined, because
// iOS won't necessarily prompt the user a second time.
if (existingStatus !== 'granted') {
// Android remote notification permissions are granted during the app
// install, so this will only ask on iOS
const {status} = await Permissions.askAsync(Permissions.NOTIFICATIONS);
finalStatus = status;
}
// Stop here if the user did not grant permissions
if (finalStatus !== 'granted') {
return;
}
// Get the token that uniquely identifies this device
const token = await Notifications.getExpoPushTokenAsync();
/**
* @token ExponentPushToken[cszdf-SKFcXkd-8e6BEtjNG]
*/
this.pushNotificationsToken = token;
this._notificationSubscription = Notifications.addListener(this._handleNotification);
}
_handleNotification = ({origin, data}) => {
console.warn(origin, data);
switch (data.type) {
case PushNotificationTypes.PARTNER_SUBMITTED_NEW_OFFER: {
return this.props.navigation.navigate('InquiryOffers', {getInquiryId: data.inquiryId});
}
}
}
有什么主意我在做错什么以及如何解决?
谢谢
鲍勃