请提供以下信息:
- SDK 版本: "^42.0.0",
- 平台(Android/iOS/web/all):iOS
- 根据您有疑问的 Expo 库添加适当的“标签”。
你好,
[expo-notifications] 使用最新的设备推送令牌更新服务器注册时遇到错误。,[错误:对此方法的另一个异步调用正在进行中。等待第一个承诺。]
这个错误经常发生在expo app中。并且总是发生在构建 ios 应用程序中。
使用以下代码:
async function registerForPushNotificationsAsync() {
let token
if (Constants.isDevice) {
const { status: existingStatus } = await Notifications.getPermissionsAsync()
let finalStatus = existingStatus
if (existingStatus !== 'granted') {
const { status } = await Notifications.requestPermissionsAsync({
ios: {
allowAlert: true,
allowBadge: true,
allowSound: true,
allowAnnouncements: true,
},
})
finalStatus = status
}
if (finalStatus !== 'granted') {
console.log('noti cancel')
return
}
// token = (await Notifications.getExpoPushTokenAsync()).data
try {
await Notifications.getExpoPushTokenAsync().then((res) => {
console.log('getExpoPUshTokenAsync >> ', res)
token = res.data
})
} catch (err) {
console.log('getExpoPushTokenAsync error >> ', err)
}
} else {
Alert.alert(
'Must use physical device for Push Notifications'
)
}
if (Platform.OS === 'android') {
Notifications.setNotificationChannelAsync('default', {
name: 'default',
importance: Notifications.AndroidImportance.MAX,
vibrationPattern: [0, 250, 250, 250],
lightColor: '#FF231F7C',
})
}
return token
}
我收到了新的凭据,但我仍然收到错误消息。