Подтвердить что ты не робот

Включение или отключение уведомлений Iphone Push внутри приложения

У меня есть приложение iphone, которое позволяет получать push-уведомления. В настоящее время я могу отключить push-уведомления для своего приложения, перейдя в настройки/уведомления iphone.

Но я хочу добавить переключатель или кнопку внутри своего приложения, чтобы включить или отключить push-уведомления.

Это можно сделать, потому что я увидел его в приложении iphone 4squre. Они получили раздел настроек настроек уведомления о звонках, и пользователь может включить или отключить различное уведомление для приложения.

Я смотрю по сети, чтобы найти правильное решение для этого, но все еще не нашел пути. Может ли кто-нибудь дать представление о том, как это сделать?

Заранее спасибо:)

4b9b3361

Ответ 1

Прежде всего, вы can not enable and disable push notification внутри приложения. Если вы нашли некоторые приложения, которые сделали это, то должно быть обходное решение.

Как и если вы хотите сделать Внутри приложения, используйте один идентификатор и отправьте его на сервер в соответствии с кнопкой push push enable и disable. Итак, ваше кодирование на стороне сервера использует этот идентификатор и работает в соответствии с этим. Как идентификатор, скажем, он разрешает, иначе ваш сервер отправит уведомление иначе.

Вы можете проверить, что пользователь установил enable или disable Push Notifications, используя следующий код.

Включение или отключение уведомлений Iphone Push

UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) 
 // Yes it is..

Надеюсь, это поможет вам.

Ответ 2

[ FYI - мало кто сообщил, что он перестает работать на iOS 10]

Вы можете легко включить и отключить push-уведомления в своем приложении, снова позвонив registerForRemoteNotificationTypes и unregisterForRemoteNotificationTypes. Я пробовал это, и он работает.

Ответ 3

Прагматично можно включить и отключить push-уведомление, зарегистрировав и отменив push-уведомление.

Включить Push Notification:

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
}

Отключить Push Notification:

UIApplication.shared.unregisterForRemoteNotifications()