PushNotificationIOS.requestPermissions()回调

时间:2016-06-04 16:57:23

标签: react-native

我不想让我的用户在他们真正需要通知之前允许通知。

因此,当用户在我的应用中安排本地通知时,我想要请求通知权限,如果用户接受,则设置本地通知。 问题是PushNotificationIOS.requestPermissions()似乎没有任何回调,这意味着如果我在用户选中警报窗口并返回PushNotificationIOS.checkPermissions()之前就会调用0在权限对象中,即使用户可能接受。

所以我的问题是,是否有任何方法可以请求权限并随后设置通知,或者在实际需要使用权限之前是否必须请求权限?

2 个答案:

答案 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