我如何知道用户是否已经接受/拒绝了 React-Native 的 ios 通知



我想显示一个自定义屏幕,要求用户在其iOS设备上接受或拒绝通知。仅当用户从未注册或从未接受/拒绝应用的通知时,才应显示此屏幕。

不过,我似乎没有找到一种方法来知道用户是否已经注册。而且我不想使用任何类型的异步存储,因为这可以由用户清理。

我找到了该方法PushNotificationIOS.checkPermissions但这并没有告诉我用户是否已注册。

我需要一种方法来知道用户是否"尚未注册"、"已接受"或"已拒绝"。

如果用户尚未注册,我将显示屏幕。如果用户已接受或拒绝通知,则不会显示屏幕。

有没有办法用 React-Native 知道这一点?

谢谢

我最终用 Objective-C 创建了一个桥来访问 javascript 的授权状态:

@implementation NotificationPermissions
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(getAuthorizationStatus:(RCTPromiseResolveBlock)resolve
                  rejecter:(RCTPromiseRejectBlock)reject)
{
  [[UNUserNotificationCenter currentNotificationCenter] getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
    resolve(@(settings.authorizationStatus));
  }];
}

然后它可以在javascript中以这种方式使用:

const authorizationStatus = await NotificationPermissions.getAuthorizationStatus();

authorizationStatus 是介于 0 和 3 之间的数字,基于 UNAuthorizationStatus

这就是我签入本机代码的方式。

import UserNotifications
  UNUserNotificationCenter.current().getNotificationSettings() { settings in
     switch settings.authorizationStatus {
     case .notDetermined:
        //Not asked
        break
     case .authorized:
        //Granted
        break
     case .denied:
        //Denied
        break
     default:
        //Provisional or unknown future value
        break
     }
  }

相关内容

  • 没有找到相关文章

最新更新