簡體   English   中英

我如何知道用戶是否已經接受/拒絕了 React-Native 的 ios 通知?

[英]How do I know if a user has already accepted/refused ios notifications with React-Native?

我想顯示一個自定義屏幕,要求用戶在其 iOS 設備上接受或拒絕通知。 僅當用戶從未注冊或從未接受/拒絕應用程序通知時,才應顯示此屏幕。

不過,我似乎沒有找到知道用戶是否已經注冊的方法。 而且我不想使用任何類型的異步存儲,因為這可以由用戶清理。

我找到了方法PushNotificationIOS.checkPermissions但這並沒有告訴我用戶是否已經注冊。

我需要一種方法來了解用戶是否“尚未注冊”、“已接受”或“已拒絕”。

如果用戶尚未注冊,我會顯示屏幕。 如果用戶已接受或拒絕通知,我不會顯示屏幕。

React-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

這就是我檢查本機代碼的方式。

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
     }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM