[未处理的承诺拒绝:类型错误:未定义不是一个对象(评估'_expoPermissions.Permissions.getAsync')]



我无法获取推送通知的令牌,权限不起作用:

处理的承诺拒绝:类型错误:未定义不是对象(评估"_expoPermissions.Permissions.getAsync")

这是代码:

registerForPushNotificationsAsync = async ()=> {
const { status } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
let finalStatus = status;
if (status !== 'granted') {
const { status } = await Permissions.askAsync(Permissions.NOTIFICATIONS);
finalStatus = status;
}
if (finalStatus !== 'granted') {
return;
}
let token = await Notifications.getExpoPushTokenAsync();
console.log(token);
}

权限从"expo"包移动到"expo-permissions">

您必须先安装 expo-permissions 包,然后使用以下语法导入它

import * as Permissions from 'expo-permissions';

我使用了正确的软件包,但我盲目地写错了导入。Rusty 的方式仍然是正确的,但对于其他正在做正确事情但可能落入这个简单陷阱的人,请务必也检查这一点。

不要像这样导入

import Permissions from 'expo-permissions';

请像这样导入

import * as Permissions from 'expo-permissions';

。如果没有,即使使用正确的软件包,您也会看到相同的错误消息!

最新更新