gpt4 book ai didi

iOS - Expo Notifications.getExpoPushTokenAsync() 未获取 token

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:21 25 4
gpt4 key购买 nike

我正在尝试从我的应用程序接收推送通知 token ,但我从未收到 token 。我尝试使用一些警报进行调试,我可以看到在接受通知时我得到了“granted”返回。我只测试过 iOS。

我在运行

"expo": "^32.0.0",
"react-native": "https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz",

我尝试使用来自 https://docs.expo.io/versions/latest/guides/push-notifications/ 的指南

因为它不起作用,我尝试了他们从 API 引用中提供的小吃:https://docs.expo.io/versions/v32.0.0/sdk/notifications/

小吃:https://snack.expo.io/@documentation/pushnotifications

这是我当前的代码:

 static registerForPushNotificationsAsync = async kid => {
if (Constants.isDevice) {
const { status: existingStatus } = await Permissions.getAsync(
Permissions.NOTIFICATIONS
);
let finalStatus = existingStatus;
if (existingStatus !== "granted") {
const { status } = await Permissions.askAsync(
Permissions.NOTIFICATIONS
);
finalStatus = status;
}
if (finalStatus !== "granted") {
alert("Failed to get push token for push notification!");
return;
}
let token = await Notifications.getExpoPushTokenAsync();
alert("finalstatus " + finalStatus);
alert("existing status " + existingStatus);
alert(token);
// POST the token to your backend server from where you can retrieve it to send push notifications.
return await fetch(`${Api.APIEndpoint}/app/notification`, {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify({
token: token,
kid: kid
})
});
} else {
alert("Must use physical device for Push Notifications");
}
};

前两个警报按预期触发(并在我接受时返回“granted”),但 alert(token) 似乎是空的。

我还注意到有人要求我提供两个权限。首先它会请求使用通知的权限,然后它会请求访问照片。我不需要照片的权限,我很好奇为什么会这样要求。

据我阅读文档的理解,只有 Android 设备才需要 FCM?我也需要它在 Android 上工作,但我想先让它在一个平台上工作,然后再继续。

我使用 Testflight 在我的 iPhone 上安装了该应用程序。 token 是否仅在应用获得应用商店批准后“出现”?

也许我在文档中遗漏了其他内容。

任何帮助或指出正确的方向将不胜感激。

最佳答案

我终于明白了!

将解决方案留在这里,以防其他人遇到同样的问题。

显然我有一个旧版本的 expo-cli,尽管我尝试使用 npm install -g expo-cli 多次更新它。该命令似乎运行良好,但 expo-cli 仍然是相同的版本。

我尝试使用 npm 卸载,但似乎没有效果。 expo-cli 仍然可用。我想可能是因为我在开始使用 nvm 之前安装了它。

然后我决定手动删除它。我在 mac 上运行,不知道是否有更正确的卸载方法。但这似乎有效!我删除了/usr/bin/expo 和/usr/bin/expo-cli。然后我运行了 npm install -g expo-cli

然后我更新了应用程序的推送证书:

expo build:ios --clear-push-cert

我在我的测试设备上使用 testflight 安装了该应用程序,现在我确实得到了预期的 token !

唯一我仍然好奇的是为什么它要求获得访问照片的权限。

我希望这可以帮助其他遇到同样问题的人。

感谢那些花时间阅读我的问题的人。

关于iOS - Expo Notifications.getExpoPushTokenAsync() 未获取 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55187642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com