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

Can you allow push notifications in the app programmatically?

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

没有。如果用户说你不能向他们发送推送通知,你就不能向他们发送推送通知。应用程序不会忽略用户的选择。

但是,如果您要发送静默 推送通知——那些已传送到您的应用程序但不显示给用户的通知——您不需要获得许可。如果这适合您的需要,那很好,但是您不能未经许可就进行 user-visible 推送。

不幸的是你不能这样做 this.Before iOS 8 你可以检测 APNS 状态使用

UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

或在iOS 8:

之后
UIRemoteNotificationType enableType = [[UIApplication sharedApplication] currentUserNotificationSettings];

或Swift:

let remoteState = UIApplication.sharedApplication().currentUserNotificationSettings()

您可以在用户关闭 APNS 或启动 App 时提示用户。例如:您关闭了 APNS,您将丢失一些重要的 message.Please 进入设置 -> 通知 -> App 以启用 APNS

或者您可以在 iOS8 :

之后跳转到您的应用程序页面
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
   BOOL canOpenSettings = (&UIApplicationOpenSettingsURLString != NULL);
        if (canOpenSettings) {
            NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
            [[UIApplication sharedApplication] openURL:url];
            }}