如何知道用户点击"不允许"在推送通知中

时间:2017-07-27 02:30:31

标签: ios iphone swift notifications

我需要检测用户何时允许或不允许推送通知。

当用户在第一个推送通知提醒中点击允许或不允许按钮时,我应该在服务器中调用push 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()
    }

但用户点击了“不允许”#34;它没有被调用。

如何知道用户点击&#34;不允许&#34;在推送通知提醒或开启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()
        }

谢谢

3 个答案:

答案 0 :(得分:1)

如果这是iOS级弹出窗口,那么我相信它无法确定用户是否点击了不允许推送通知。但您可以使用以下方法检查是否启用了推送通知,并相应地导航到设置页面: -

func isPushEnabledAtOSLevel() -> Bool {
 guard let settings = UIApplication.shared.currentUserNotificationSettings?.types else { return false }
 return settings.rawValue != 0
}

答案 1 :(得分:1)

不幸的是,我们没有准确的方法来检查用户是否拒绝它。

但您可以随时通过此方法检查是否已获得许可。 UIApplication.shared.isRegisteredForRemoteNotifications只会告诉您应用程序是否已实际注册Apple的推送服务器并且已收到设备令牌:

  

返回值是

     

如果应用程序已注册远程通知和   如果没有发生注册,则收到设备令牌或NO   失败或被用户拒绝。

答案 2 :(得分:0)

取决于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