我在我的应用中使用推送通知,并且正如预期的那样,用户会看到一个对话框,要求在应用启动时允许推送通知。我的应用程序的逻辑取决于接收推送通知,如果用户错误地不允许推送通知或不知道应用程序如何工作,则应用程序将无法正常工作。有没有办法以编程方式在应用程序中允许推送通知,即使用户不允许它?谢谢!
答案 0 :(得分:3)
没有。如果用户说您无法向他们发送推送通知,则无法向他们发送推送通知。应用不会忽略用户在那里的选择。
但是,如果您要发送无声推送通知 - 那些已发送到您的应用但未向用户显示的通知 - 您不需要获得许可。如果这符合您的需求,那很好,但是未经许可,您无法进行用户可见的推送。
答案 1 :(得分:1)
不幸的是你不能这样做。在iOS 8之前你可以检测APNS状态使用
UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
或iOS 8之后:
UIRemoteNotificationType enableType = [[UIApplication sharedApplication] currentUserNotificationSettings];
或斯威夫特:
let remoteState = UIApplication.sharedApplication().currentUserNotificationSettings()
如果用户关闭APNS或启动应用程序,您可以提示用户。例如:您已关闭APNS,您将丢失一些重要消息。请转到设置 - >通知 - >应用程序启用APNS
或者您可以在iOS8之后跳转到您的应用页面:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
BOOL canOpenSettings = (&UIApplicationOpenSettingsURLString != NULL);
if (canOpenSettings) {
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
[[UIApplication sharedApplication] openURL:url];
}}