如何以编程方式激活ios通知设置?

我的应用程序注册这样的通知:

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

但如果我手动去通知设置,禁用一切(通知中心,警报,声音,徽章),然后卸载并重新安装应用程序(或只是重新安装,而不先卸载),我的iPhone保持旧的设置。 我如何强制重新激活这些设置重新安装?

你不能。 在iOS 5.0中,有一个没有logging的function,通过urlscheme从应用程序打开通知设置页面(或任何设置页面)。 然后你可以要求用户启用通知。 但它在5.1中被删除,反正可能不被苹果所接受。

registerForRemoteNotificationTypes在用户第一次调用时询问用户是否接受来自应用程序的通知。 如果稍后用户更改通知设置,则不会再次提问。 您可以使用enabledRemoteNotificationTypes检查是否为您的应用程序启用了通知,并在需要时enabledRemoteNotificationTypes警告用户,但用户必须手动转到设置并重新启用它们。 你不能再从你的应用程序中完成。

从iOS 8.0更新

从iOS 8.0开始,Apple返回了打开应用程序的“系统设置”页面的可能性:

 NSURL* settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; [[UIApplication sharedApplication] openURL:settingsURL]; 

您需要重置推送通知权限。苹果提供了重置权限的方法 –

在iOS上重置推送通知权限警报

首次启用推送应用程序,注册推送通知。 iOS询问用户是否希望接收该特定应用程序的远程通知。 一旦用户对此警报作出响应,除非设备已恢复或应用程序已卸载至less一天,否则不会一再提示。

如果您想模拟首次运行您的应用,则可以将该应用卸载一天。 你可以通过以下步骤实现后者,而不需要等待一天:

 1.Delete your app from the device. 2.Turn the device off completely and turn it back on. 3.Go to Settings > General > Date & Time and set the date ahead a day or more. 4.Turn the device off completely again and turn it back on. 

有关更多详细信息,请参阅: https : //developer.apple.com/library/ios/technotes/tn2265/_index.html

尝试将设备date更改为当前date后的1或2天。 有时它被存储在设备的钥匙链中并存储1或2天。 它适用于我日历和位置权限的情况下。