我不想让我的用户在他们真正需要通知之前允许通知。
因此,当用户在我的应用中安排本地通知时,我想要请求通知权限,如果用户接受,则设置本地通知。
问题是PushNotificationIOS.requestPermissions()
似乎没有任何回调,这意味着如果我在用户选中警报窗口并返回PushNotificationIOS.checkPermissions()
之前就会调用0
在权限对象中,即使用户可能接受。
所以我的问题是,是否有任何方法可以请求权限并随后设置通知,或者在实际需要使用权限之前是否必须请求权限?
答案 0 :(得分:2)
可以选择在设备注册推送通知时添加事件侦听器。
PushNotificationIOS.addEventListener('register', this._onPushNotificationRegistration);
当您尝试安排本地通知时,您可以检查该点的权限,如果您还没有权限,则可以请求它们。
_prepareNotification(alertBody, soundName, badge) {
let notification = {
alertBody: alertBody,
applicationIconBadgeNumber: badge,
fireDate: new Date(Date.now() + (1000 * 10)).getTime(), // 10 seconds in the future
soundName: soundName
};
PushNotificationIOS.checkPermissions((permissions) => {
if (permissions.alert) {
this._scheduleNotification(notification);
} else {
this._requestNotificationPermissions(notification);
}
});
}
当您请求权限时,请存储您要在州内发送的通知。
_requestNotificationPermissions(notification) {
this.setState({
notificationToPost: notification
});
PushNotificationIOS.requestPermissions();
}
当用户允许您向他们发送通知时,请在注册响应中安排通知。
_onPushNotificationRegistration(token) {
console.log('Registered for notifications', token);
if (this.state.notificationToPost) {
this._scheduleNotification(this.state.notificationToPost);
}
}
这是一个粗略的例子,说明如何实现您的要求,我确信您的应用程序状态存在细微差别,但这并不能涵盖,但希望它能为您提供一些想法。
我已将其中一些想法放入示例应用程序中,您可以查看https://github.com/AidenMontgomery/react-native-sample。
答案 1 :(得分:2)
v0.28-rc的发行说明刚刚发布,其中一项新功能是PushNotificationIOS.requestPermissions()
已被宣传,这正是我所需要的。请参阅提交here。