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

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

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

最佳答案

可以选择在设备注册推送通知时添加事件监听器。

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

关于react-native - PushNotificationIOS.requestPermissions() 回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37632801/

10-10 14:13