【问题标题】:Is there a way to know that the user refused to recieve push notifications?有没有办法知道用户拒绝接收推送通知?
【发布时间】:2015-11-24 16:38:00
【问题描述】:

有一个类似的问题,但答案根本不能满足我。

iOS7 and iOS8: how to detect when user said No to a request for push notifications

我需要具体了解用户在显示相关弹出窗口时选择了什么

【问题讨论】:

    标签: ios push-notification


    【解决方案1】:

    鲁达-

    您引用的那个问题给出了一个两部分的答案 - 这取决于您的 iOS 版本。如果您使用的是 iOS7,根据您的屏幕截图,情况似乎并非如此,您将不会收到任何回调。但是如果你使用的是 iOS 8(大概是 9),你会接到一个电话到

    application:didRegisterUserNotificationSettings
    

    用户是按确定还是不允许。从 iOS 8 开始,您需要解析传递给该回调的 UIUserNotificationSettings 参数,以确定用户是接受还是拒绝推送通知。

    【讨论】:

    • application:didRegisterUserNotificationSettings 在你按下“不允许”时不会被调用
    • @Luda,您一定是在执行错误的操作,因为当用户单击“不允许”(或 OK,就此而言)时会调用 didRegisterUserNotificationSettings。您将能够读取 notificationSettings 并将其与 .None 进行比较以查看用户是否拒绝。
    【解决方案2】:

    您可以在请求推送通知几秒钟后调用它 - UIApplication.sharedApplication().isRegisteredForRemoteNotifications()

    请记住,您只能为 >iOS8 执行此操作 - 否则您不会知道

    这会返回一个Bool,你可以对结果做任何你想做的事情。

    我之前在前台打开应用时在 AppDelegate 中使用过这个,示例:

    func applicationWillEnterForeground(application: UIApplication) {
            let isRegistered = UIApplication.sharedApplication().isRegisteredForRemoteNotifications()
            if !isRegistered {
                 // The user has not allowed pushes
            }
    }
    

    【讨论】:

    • 我想在用户拒绝推送时收到通知,而不是他选择了什么(除了或拒绝)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2018-01-21
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    相关资源
    最近更新 更多