在完成启动后或在我们的应用程序内启用/禁用推送通知

Posted

技术标签:

【中文标题】在完成启动后或在我们的应用程序内启用/禁用推送通知【英文标题】:Enable/Disable push notification after did finish launch or inside our app 【发布时间】:2016-09-09 07:45:47 【问题描述】:

完成启动后,我需要在我们的应用程序中启用/禁用或注册/取消注册推送通知。我将在启动后并在我的应用“帐户设置”中执行此功能

我尝试了下面的代码,但它不起作用。

 if (cell.switchButton.on) 
    if ([[UIApplication sharedApplication]respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) 

        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    

else 
    [[UIApplication sharedApplication] unregisterForRemoteNotifications];

我的要求:我将以编程方式在我的应用程序中启用或禁用通知切换,而不是直接转到设置 -> 通知。

【问题讨论】:

什么错误?请解释 在设置页面中禁用 APNS 后检查一次是否调用了您是否已完成启动 【参考方案1】:

你不应该使用unregisterForRemoteNotifications,它会像苹果说的那样完全注销APNS

您应该只在极少数情况下调用此方法,例如当 该应用程序的新版本取消了对所有类型遥控器的支持 通知。用户可以通过“设置”应用的“通知”部分暂时阻止应用接收远程通知。

这里是link

如果您在服务器端实现禁用推送通知会更好。刚刚告诉您的服务器人员提供服务以不发送 APN。

或者您也可以打开设置应用程序的通知部分,如下所示

if (&UIApplicationOpenSettingsURLString != NULL)
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

【讨论】:

可以通过编程方式启用和禁用通知切换。我的意思是我不会去设置和禁用或启用切换。而不是我可以在我的应用程序中以编程方式切换切换。 for swift --> if let appSettings = NSURL(string: UIApplicationOpenSettingsURLString) UIApplication.shared.openURL(appSettings as URL) 【参考方案2】:

您可以通过分别调用registerForRemoteNotificationTypesunregisterForRemoteNotificationTypes 在您的应用程序中轻松启用和禁用推送通知。

启用

[[UIApplication sharedApplication] registerForRemoteNotifications];

禁用

[[UIApplication sharedApplication] unregisterForRemoteNotifications];

【讨论】:

【参考方案3】:

究竟是什么不工作?

您是否获得了设备令牌(应用委托的application:didRegisterForRemoteNotificationsWithDeviceToken:)或错误(application:didFailToRegisterForRemoteNotificationsWithError:)?

作为替代解决方案,您可以将用户的偏好(是否接收通知)存储在您的服务器上,而不是订阅和取消订阅。

【讨论】:

以上是关于在完成启动后或在我们的应用程序内启用/禁用推送通知的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sdk 在设置应用程序中启用-禁用通知?

如何禁用或启用onMessageReceived的firebase推送通知?

如何部分启用/禁用远程推送通知客户端?

iOS:如果之前启用,则禁用远程通知

从设置应用程序 ios 获取推送通知启用/禁用事件?

如何从应用程序 iOS 8 启用/禁用推送通知