【问题标题】:After selecting Cancel on Push Notifications permissions dialog, settings show notification alerts are ON在推送通知权限对话框中选择取消后,设置显示通知警报已开启
【发布时间】:2013-09-11 18:39:48
【问题描述】:

请注意,此问题适用于 iOS 6,这是我提出问题时 iOS 的最高生产版本。我没有对更高版本的 iOS 进行后续测试,情况可能已经发生了变化。如果您在更高版本的操作系统上观察到相同的行为,请发表评论!

我的应用注册了推送通知。权限对话框(“MyApp 希望向您发送推送通知”)出现。有两种可能的流程:

a) 用户选择确定。 Settings->Notifications->MyApp 然后显示警报的完全权限,正如我所期望的那样。

b) 这是错误 用户选择取消。我希望 Settings->Notifications->MyApp 将应用程序显示为不在通知中心,并关闭所有权限。然而,事实恰恰相反——与他们确定对话的情况没有区别!

除了我的应用程序之外,我发现 BBC News 和 Ap Mobile 存在相同的错误,而 Viber 没有(完全符合我的预期)。 Ap Mobile 有这个错误的一个变种 - 如果我拒绝推送通知,则只有徽章打开,而不是声音和警报。

根据TN2265,我正在通过恢复到运行应用程序之前所做的备份来重置推送设置的状态。

【问题讨论】:

    标签: ios ios6 push-notification apple-push-notifications


    【解决方案1】:

    经过无数次的恢复和测试,我发现了以下内容。

    如果用户在“xxx 想向您发送推送通知”中选择取消,则警报将在设置->通知->应用名称中关闭,除非

    a) 在 registerForRemoteNotificationTypes: 之前调用了 cancelAllLocalNotifications,在这种情况下所有警报都将打开。这感觉就像一个苹果的错误。

    或 b) 在进行 registerForRemoteNotificationTypes: 之前调用了 setApplicationIconBadgeNumber:0(未尝试其他号码),在这种情况下,只会打开徽章。可以说,如果我们实际设置了徽章编号,启用徽章是合理的,因此这并不完全明显是一个错误而不是(未记录的)功能。

    此错误/功能的解决方法是在触摸它之前检查是否启用了推送。

        // If remote notifications are already enabled, then clear any existing.
        if([[UIApplication sharedApplication] enabledRemoteNotificationTypes] != UIRemoteNotificationTypeNone)
        {
            [[UIApplication sharedApplication] cancelAllLocalNotifications];
            [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-05
      • 2017-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多