【问题标题】:Unregistering from push notifications从推送通知中注销
【发布时间】:2013-06-10 08:54:12
【问题描述】:

我希望能够为推送通知注册我的应用程序,但只有在处于活动状态时才能注册,所以我实现了类似的功能:

当应用程序激活时(applicationDidBecomeActive 事件):

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

当应用程序被停用时(applicationWillResignActive 事件): [[UIApplication sharedApplication] unregisterForRemoteNotifications ];

我的问题是,第一次安装应用程序时,应用程序会被激活并注册推送通知,但是当 IOS 显示推送通知接受对话框时,它还会向我的应用程序发送 applicationWillResignActive 以便我取消注册调用。

结果是意外行为:应用程序注册但没有选择徽章/警报选项,即使用户接受。

有没有人成功实现了应用程序在后台禁用推送的应用程序?

谢谢

【问题讨论】:

    标签: ios


    【解决方案1】:

    不要在 applicationWillResignActive: 内部注销,而是尝试在内部注销

    – applicationDidEnterBackground:
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢,是的,它正在工作。我实际上是在填写问题后昨天尝试过的。不幸的是,我仍然对整个概念有疑问:使用 unregisterForRemoteNotifications。问题是,如果用户在第一次安装应用程序时拒绝了推送通知,则用户无法在以后激活它们,因为在设置中,应用程序处于后台,因此推送通知设置不可见,因为调用 unregisterForRemoteNotifications。
    • 那么,您可以采取不同的方法。我要做的是在 NSUserDefaults 中有一个 BOOL 值来指示应用程序是否应该取消注册推送通知。应用程序第一次启动(全新安装)时,BOOL 将为 NO(不,不要取消注册);然后当应用程序收到它的第一个推送通知时,将 BOOL 设置为 YES。此时,您可以确定用户允许您的应用推送通知。
    • -我认为这种方法可行。我个人决定控制来自服务器端的通知,但是如果有人需要在后台从通知中取消注册,这应该是解决方案:根据这个 NSUserDefaults 值检查是否取消注册,或者检查通知是否是无法/禁用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多