你能以编程方式在应用程序中允许推送通知吗?

时间:2016-01-20 02:23:35

标签: ios swift push-notification apple-push-notifications

我在我的应用中使用推送通知,并且正如预期的那样,用户会看到一个对话框,要求在应用启动时允许推送通知。我的应用程序的逻辑取决于接收推送通知,如果用户错误地不允许推送通知或不知道应用程序如何工作,则应用程序将无法正常工作。有没有办法以编程方式在应用程序中允许推送通知,即使用户不允许它?谢谢!

2 个答案:

答案 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];
            }}