ios - 我如何知道用户是否已经使用 React-Native 接受/拒绝了 ios 通知?
问题描述
我想显示一个自定义屏幕,要求用户在他们的 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
推荐阅读
- laravel - 'Unexpected token <' 包装 .vue 文件时
new to vue here and I am creating an area in the code for all my vue components to be rendered through a
blade.php
file (sfc). I installed the cli usingvue create projectN
- mongodb - MongoDB Atlas Golang mgo package "No reachable servers" error
- python - 如何将一个类对象的 id 传递给 django views.py 中的另一个类对象
- json - 在 get_json_object 的搜索字符串中包括 $
- javascript - How to pass a date parameter into a Coinbase Fetch API call?
- javascript - how to make a chart with foreach time
- python-2.7 - 如何将子列表中的两个值连接为python中的元组对坐标
- python - Custom exception error message using python
- python - 创建一个人工智能聊天机器人,但出现回溯错误
- r - 在 Mapbox GL 中为 R-Shiny 中的 Leaflet 创建弹出窗口?