0

请提供以下信息:

  1. SDK 版本: "^42.0.0",
  2. 平台(Android/iOS/web/all):iOS
  3. 根据您有疑问的 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
}

我收到了新的凭据,但我仍然收到错误消息。

4

0 回答 0