我无法获取推送通知的令牌,权限不起作用:
未处理的承诺拒绝:类型错误:未定义不是对象(评估"_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';
。如果没有,即使使用正确的软件包,您也会看到相同的错误消息!