在iOS中,为了允许推送通知,用户必须执行以下2个选项之一。
回答原始提示,要求获得通知权限。如果他们不这样做,则无法再次提出权限请求,因此必须将他们重定向到设置页面。
转到设置页面并手动更改权限。
这是我的流程:
检查权限:如果拥有,请移至下一个屏幕。 如果不是,请显示警报,说明为什么通知对我们的应用很重要。如果他们单击“确定”,它将显示真实的通知屏幕,否则,它会等待稍后询问。
如果用户已经看到了通知请求屏幕,我想显示一个对话框,要求他们进行允许通知的设置。
有没有办法知道用户对原始权限框是是还是否?有办法知道他们何时回答吗?
我现在检查的方式不会等待用户单击原始对话框中的选项,因此它不会等待检查权限并找到与以前完全相同的权限。 / p>
是否有任何方法可以检查他们是否已经获得许可请求,以及他们是否同意?
这是我正在使用的代码: (仅相关进口)
import {PushNotificationIOS} from 'react-native
import PushNotification 'react-native-push-notification'
const requestPermissionsIOS = navigateForward => {
PushNotification.requestPermissions().then( ({alert}) => {
if (!alert) {
settingsAlertIOS(navigateForward)
} else {
configurePushNotification()
scheduleNotifications()
navigateForward()
}
}).catch( err => {
settingsAlertIOS(navigateForward)
})
}
const configurePushNotification = () => {
PushNotification.configure({
onRegister: (token) => {
},
onNotification: (notification) => {
onNotification: notification => handleNotification(notification)
},
permissions: {
alert: true,
badge: true,
sound: true
},
popInitialNotification: true,
requestPermissions: false,
});
}
const settingsAlertIOS = (navigateForward) => {
Alert.alert(
'Go to settings page?',
'In order to receive important notifications, please enable them in the settings page \(leaves app\)',
[
{text: 'Cancel', onPress: () => {Mixpanel.track('Decline change notifications from settings alert'); scheduleNotifications(); navigateForward()}},
{text: 'Settings', onPress: () => {configurePushNotification(); scheduleNotifications(); navigateForward(); Linking.openURL('app-settings:')}},
]
)
}
答案 0 :(得分:1)
倾听用户的决定。
PushNotification.requestPermissions().then((response: any) => {
if (response && response.alert !== 0) {
// Allow
return;
}
// Decline
});
信用-jose920405