React native 如何识别世博推送通知令牌所属的世博会项目? 前提

React native 如何识别世博推送通知令牌所属的世博会项目? 前提,react-native,push-notification,expo,React Native,Push Notification,Expo,不管是好是坏,我使用两个Expo帐户作为我的生产和开发环境 Production Expo Account: prod-proj Development Expo Account: dev-proj 我使用Expo的推送通知服务向我的用户发送推送通知。我将每个用户的Expo Push通知令牌存储在他们的用户文档中。i、 e: User id: 1 name: Jimothy token: ExponentPushToken[di3ja!-lk2^(24af] 通过一系列

不管是好是坏,我使用两个Expo帐户作为我的生产和开发环境

Production  Expo Account: prod-proj
Development Expo Account: dev-proj
我使用Expo的推送通知服务向我的用户发送推送通知。我将每个用户的Expo Push通知令牌存储在他们的用户文档中。i、 e:

User
  id:    1
  name:  Jimothy
  token: ExponentPushToken[di3ja!-lk2^(24af]
通过一系列不幸的事件,我的数据库中的大多数用户都使用
prod proj
Expo项目创建了推送通知,但少数用户使用
dev proj
创建了推送通知


问题 当我尝试分块并向所有用户发送推送通知时,我从Expo收到一个错误:

错误:同一请求中的所有推送通知消息必须用于同一项目;按项目分隔推送通知

但是我的代币都混在一起了


如何按项目区分世博推送通知令牌?

找到了这个问题的答案

在expo的
expo server sdk
节点client for expo中,expo返回的错误的
details
字段包含关于哪些令牌属于哪些项目的所有信息

示例代码

const{Expo}=require('Expo-server-sdk');
const expo=新世博会();
const sendNotifications=async()=>{
常量通知=[…];
const chunks=expo.chunkPushNotifications(通知);
for(常量块中的块){
试一试{
等待世博会。sendPushNotificationsAsync(区块)
} 
捕获(错误){
log(JSON.stringify(error));
//重要的部分是:
//error.details={EXPO_项目名称:[ExponentPushTokens]}
}
}
}

我现在面临同样的问题,我们能做的最好的事情可能是将expo推送令牌和体验id一起发送到后端。从那里,根据经验将代币分组,并像我们通常做的那样发送这些组

从“expo常量”导入常量;
const experienceId=Constants.manifest.id;//@用户/项目slug