首页 > 解决方案 > 我如何知道用户是否已经使用 React-Native 接受/拒绝了 ios 通知?

问题描述

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

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

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

我需要一种方法来了解用户是否“尚未注册”、“接受”或“拒绝”。

如果用户还没有注册,我会显示屏幕。如果用户接受或拒绝了通知,我不会显示屏幕。

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

谢谢

标签: iosreact-native

解决方案


我最终用Objective-C创建了一个桥来从javascript访问authorizationStatus:

@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


推荐阅读