如何知道用户在推送通知中点击了“不允许”[重复]
Posted
技术标签:
【中文标题】如何知道用户在推送通知中点击了“不允许”[重复]【英文标题】:How to know user tapped "Don't allow" in push notification [duplicate] 【发布时间】:2017-07-27 02:30:31 【问题描述】:我需要检测用户何时允许或不允许推送通知。
当用户在第一个推送通知警报中点击允许或不允许按钮时,我应该在服务器中调用推送 API。 (允许 -> pushYn = Y,不允许 -> pushYn = N) 并且用户在 iPhone 的设置 - 通知中打开、关闭
所以,我在“didRegisterForRemoteNotificationsWithDeviceToken”中调用了 api 喜欢这段代码
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
// Convert token to string
var token = ""
for i in 0..<deviceToken.count
token = token + String(format: "%02.2hhx", arguments: [deviceToken[i]])
print(token)
pushTokenSetHttpRequest()
但是用户点击了“不允许”,它没有被调用。
如何知道用户在推送通知警报或打开关闭 iPhone 的设置-通知中点击了“不允许”?
注册通知
if #available(ios 10, *)
UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]) (granted, error) in
application.registerForRemoteNotifications()
else
UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil))
UIApplication.shared.registerForRemoteNotifications()
谢谢
【问题讨论】:
您必须意识到注册令牌,您不需要获得用户的许可。静默通知未经许可即可工作。 如果你想向用户展示一些东西(例如徽章/警报/声音),那么你需要得到他们的许可 【参考方案1】:很遗憾,我们没有准确的方法来检查用户是否拒绝。
但是您可以随时检查是否通过此方法获得许可。
UIApplication.shared.isRegisteredForRemoteNotifications
只会告诉您应用程序是否已实际注册到 Apple 的推送服务器并已收到设备令牌:
返回值是
如果应用注册了远程通知并且 收到其设备令牌,如果没有注册,则为 NO,已 失败或已被用户拒绝。
【讨论】:
不要回答重复的问题,而是将它们标记为重复问题。 当然@JAL。谢谢【参考方案2】:如果这是 iOS 级别的弹出窗口,那么我相信它不可能找出用户是否点击了不允许在推送通知中。但是您始终可以使用以下方法检查您的推送通知是否已启用,并相应地导航到设置页面:-
func isPushEnabledAtOSLevel() -> Bool
guard let settings = UIApplication.shared.currentUserNotificationSettings?.types else return false
return settings.rawValue != 0
【讨论】:
【参考方案3】:取决于 iOS 版本:
// nil if not authorized. If I recall correctly, nullability was changed from iOS 8 to 9 correctly
UIApplication.shared.currentUserNotificationSettings()
// iOS 10+ (If you are using UNUserNotificationCenter). Docs link below
UNUserNotificationCenter.current().getNotificationSettings(completionHandler:)
UNUserNotificationCenter.current()authorizationStatus
文档:https://developer.apple.com/documentation/usernotifications/unusernotificationcenter/1649524-getnotificationsettings
【讨论】:
以上是关于如何知道用户在推送通知中点击了“不允许”[重复]的主要内容,如果未能解决你的问题,请参考以下文章
iOS 9:如何检测用户何时对推送通知请求说“不允许”? [复制]