[英]How to know if iOS user declined permission or not on react-native?
[英]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.