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

时间:2012-04-05 09:52:37

标签: ios settings apple-push-notifications

我的应用注册了这样的通知:

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

但是如果我手动转到通知设置,请​​禁用所有内容(通知中心,警报,声音,徽章),然后卸载并重新安装应用程序(或者只是重新安装而不先卸载),我的iPhone会保留旧设置。如何在重新安装时强制重新激活这些设置?

3 个答案:

答案 0 :(得分:17)

你做不到。在iOS 5.0中,有一个未记录的功能,通过URL方案从您的应用程序打开通知设置页面(或任何设置页面)。然后,您可以要求用户启用通知。但它在5.1中已被删除,无论如何可能不会被Apple接受。

registerForRemoteNotificationTypes询问用户是否只想从您的应用程序接受通知第一次。如果稍后用户更改通知设置,则不再再询问它。您可以检查是否为enabledRemoteNotificationTypes的应用程序启用了通知,并根据需要自行提醒用户,但用户必须手动设置并重新启用它们。你不能再从你的申请中做到这一点。

自iOS 8.0起更新

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

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

答案 1 :(得分:1)

您需要重置推送通知权限.Apple提供了重置权限的方法 -

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

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

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

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

答案 2 :(得分:0)

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