【发布时间】:2020-05-15 17:10:07
【问题描述】:
我在使用 Permissions.askAsync 时遇到问题。
const status = await Permissions.askAsync(Permissions.NOTIFICATIONS)
当使用 Permissions.askAsync 通知状态为“未确定”时,我希望看到提示对话框告诉用户打开通知以继续。但是,当我使用 Permissions.getAsync 获得通知的状态时,如果它不是“授予”的,我会使用 Permissions.askAsync 但什么都没有发生(不显示通知对话框)
以下环境:
Target: iOS
Expo CLI 3.8.0 environment info:
System:
OS: macOS 10.14.6
Shell: 5.3 - /bin/zsh
Binaries:
Node: 12.13.1 - /usr/local/bin/node
npm: 6.12.1 - /usr/local/bin/npm
Watchman: 4.7.0 - /usr/local/bin/watchman
IDEs:
Android Studio: 3.4 AI-183.6156.11.34.5692245
Xcode: 11.2.1/11B500 - /usr/bin/xcodebuild
npmPackages:
expo: ^35.0.0 => 35.0.1
react: 16.11.0 => 16.11.0
react-native: https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz => 0.59.8
react-navigation: ^3.11.0 => 3.12.1
npmGlobalPackages:
expo-cli: 3.8.0
示例如下:
import * as Permissions from "expo-permissions"
componentDidMount(){
this.checkPushNotificationState()
}
checkPushNotificationState = async () => {
const { status: existingStatus } = await Permissions.getAsync(
Permissions.NOTIFICATIONS
)
if (existingStatus !== "granted") {
const status = await Permissions.askAsync(Permissions.NOTIFICATIONS)
statusNotifications = status.status
}
}
【问题讨论】:
-
您之前是否未授予权限?即在要求时说不?我认为 ios 会记住这一点,除非您转到应用设置并明确启用它,否则不会再次允许该请求。
-
是的,我一开始没有授予权限,之后想显示该对话框。不可能吗?在这种情况下,唯一的解决方案是用户手动允许来自 iPhone 设置的通知(“通知”并从那里允许它)?
-
据我所知,这就是问题所在 - 我们的应用程序遇到了同样的问题。但我会得到纠正,也会做一些挖掘我的事情。
-
是的,所以这里是世博论坛上关于它的对话:forums.expo.io/t/…。不确定它有多相关,因为最后一个答案是在 2018 年 5 月,但我所看到的并没有太多其他内容。
-
谢谢解答,好像是这样。
标签: react-native push-notification permissions expo