【问题标题】:Push Notifications Permissions推送通知权限
【发布时间】:2010-08-27 18:43:08
【问题描述】:

尝试解决应用程序中推送通知被拒绝时的一些极端情况,我有两个问题:

1) 有没有办法重置用户是否看到弹出的通知请求?

2) 有没有办法确定用户是否拒绝通知请求?

【问题讨论】:

    标签: ios apple-push-notifications


    【解决方案1】:

    1) 不,除非有一些私有 API 可以这样做,但 Apple 不允许这样做

    2) 第一次启动应用时,调用registerForRemoteNotificationTypes后,可以查看是否调用了didRegisterForRemoteNotificationsWithDeviceToken。如果不是,用户说“不,谢谢”。

    【讨论】:

    • 1) 我的想法...抱怨 2) 唯一的问题是 registerForRemoteNotificationTypes 和 didRegisterForRemoteNotificationsWithDeviceToken 之间的时间跨度未定义。我可以在应用退出时检查它,但我不确定用户是否必须在退出之前做出选择。此外,用户可以在“设置”中更改通知权限,但我无法检测到该更改。
    【解决方案2】:

    如果用户更改权限,您可以随时查看权限状态,您可以在applicationDidBecomeActive上查看权限

    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
         if ([[UIApplication sharedApplication]  respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) {
            if ([[UIApplication sharedApplication]  isRegisteredForRemoteNotifications]){
                NSLog(@"Notifications Enabled ios 8");
            } else {
                NSLog(@"Notifications not Enabled ios 8");
            }
        } else {
            UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
            if (types & UIRemoteNotificationTypeAlert)
            {
                NSLog(@"Notifications Enabled");
            }
            else
            {
                NSLog(@"Notifications not Enabled");
            }
        }
    
    }
    

    已更新以使其也可以在 iOS 8 上运行

    【讨论】:

    • 从文档看来,如果您要求警报权限,即使用户禁用了您的应用的警报。
    • 没看懂你的意思,这并没有设置什么,只是检查权限状态
    • 我以为它只会报告您之前要求注册的权限,但在进一步的测试中我认为您是对的,它只报告系统授予的权限。
    • 是的,它会检查当前的权限,我把代码放在 applicationDidBecomeActive 上,如果你更改“设置”应用程序的权限,我会检查它们
    猜你喜欢
    • 2018-09-01
    • 1970-01-01
    • 2023-04-05
    • 2017-11-02
    • 1970-01-01
    • 2016-06-03
    • 2021-05-04
    • 2021-11-10
    • 2016-09-14
    相关资源
    最近更新 更多