2

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

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

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

4

3 回答 3

18

你不能。在 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];
于 2012-04-05T09:58:58.887 回答
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

于 2014-06-19T10:15:55.127 回答
0

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

于 2014-10-29T10:28:48.840 回答