1

ExpoSDK 版本 - 42 裸工作流 EAS 版本 - 0.39.0

我有一个带有 eas build --profile preview --platform all 的 react-native expo 应用程序构建,并且在 IOS 上我似乎无法检索 ExpoPushToken。在 Android 上它工作得很好。我尝试通过删除 APN 推送密钥、配置文件和分发证书并从 EAS 提示重新创建它们来解决此问题,但问题仍然存在。

我用于检索推送令牌的代码是来自 Expo 文档的代码。

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();
      finalStatus = status;
    }
    if (finalStatus !== "granted") {
      alert("Failed to get push token for push notification!");
      return;
    }
    token = await Notifications.getExpoPushTokenAsync();
  } else {
    alert("Must use physical device for Push Notifications");
    return;
  }

  if (Platform.OS === "android") {
    Notifications.setNotificationChannelAsync("default", {
      name: "default",
      importance: Notifications.AndroidImportance.MAX,
      vibrationPattern: [0, 250, 250, 250],
      lightColor: "#FF231F7C",
    });
  }

  return token;
}

我在 useEffect 中调用此函数,并将令牌发送到服务器,以将其存储在用户数据中,但在 IOS 上,返回的令牌是未定义的。

4

0 回答 0