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 上,返回的令牌是未定义的。