启用从iPhone应用程序/禁用苹果推送通知?(Enable/Disable Apple Push

2019-06-24 06:15发布

我有一个更怀疑APNS 。 也就是说,当应用程序首次启动该应用程序会要求苹果推送通知权限,如果用户接受了,他们可以接收通知。 如果用户取消他们无法收到任何通知。 我是清楚的?

现在我的疑问是,

  1. 在第一次如果用户取消从应用程序推送通知服务(被点击Cancel按钮),如果他们想收到苹果推送通知,可以再次启用苹果推送通知从应用程序的特定用户几天后再次。

  2. 如果用户接受苹果推送通知服务第一,过了些日子,如果他们不希望收到通知,可以禁用APNS在我们的应用程序? 我希望你明白我的疑问。 任何一个可以请你澄清这个疑问?

  3. 这是可以做到在我们的iPhone应用程序,这些上述情况?

请帮我。 提前致谢。

Answer 1:

不幸的是,你不能启用或禁用推送通知您的应用从应用程序代码。 该对话框,询问是否许可只显示一次。 通常情况下,其他应用程序显示指令给用户以通过进入设置 - >通知 - > AppName的启用/禁用推送通知。



Answer 2:

您可以通过阅读你的应用程序的权限UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 然后执行逐位和操作不同类型,看看哪个被使能。 您也可以拨打unregisterForRemoteNotifications禁用通知。 有一件事你不能做的就是打开通知,虽然可以将用户引导。



Answer 3:

我的要求是启用和禁用pushnotificaton用UISwitch .Inorder, 以便从按钮动作中的代码使用这种推送通知

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

序禁用

[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");


Answer 4:

1.从您的应用程序没有它只是出现在用户第一次打开应用后安装它..如果随后他决定让这他可以从设备设置中激活。

2.it可以从应用程序和设置来完成..如果你想从你的应用程序禁用它,你可以在设备令牌(谁决定禁用推送通知)发送到您的服务器,它存储前。 “无通知列表”,当发送所以他们不会收到通知你忽略了这些标记的有效载荷。

3.我已经回答。

祝好运。



Answer 5:

当你给首次你的iPhone的设备令牌与APN服务器注册权限,然后就可以收到推送通知。 稍后,您可以启用/从你的设备设置→通知→您的应用程序禁用。



Answer 6:

您可以使用此代码来给予支持iOS中9

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {

    UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];

    if (types == UIUserNotificationTypeNone) {
        // Do something
        NSLog(@"");
    }
} else {

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];

    if (types == UIRemoteNotificationTypeNone) {
        // Do something
        NSLog(@"");
    }
}

看,因为它是“未在iOS中支持8”如何更新使用enabledRemoteNotificationTypes代码?



Answer 7:

务实,能够以使通过与注册和注销推送通知禁用推送通知。

启用推送通知:

if #available(iOS 10.0, *) {
   // For iOS 10.0 +
   let center  = UNUserNotificationCenter.current()
   center.delegate = self
   center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
        if error == nil{
           DispatchQueue.main.async(execute: {
                 UIApplication.shared.registerForRemoteNotifications()
           }) 
        }
   }
}else{
    // Below iOS 10.0

    let settings = UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil)
    UIApplication.shared.registerUserNotificationSettings(settings)

    //or
    //UIApplication.shared.registerForRemoteNotifications()
}

委托方法

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

}

@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

}


func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    // .. Receipt of device token
}


func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
    // handle error
}

关闭推送通知:

UIApplication.shared.unregisterForRemoteNotifications()


文章来源: Enable/Disable Apple Push Notification from iPhone app?