Включение или отключение уведомлений Iphone Push внутри приложения
У меня есть приложение iphone, которое позволяет получать push-уведомления. В настоящее время я могу отключить push-уведомления для своего приложения, перейдя в настройки/уведомления iphone.
Но я хочу добавить переключатель или кнопку внутри своего приложения, чтобы включить или отключить push-уведомления.
Это можно сделать, потому что я увидел его в приложении iphone 4squre. Они получили раздел настроек настроек уведомления о звонках, и пользователь может включить или отключить различное уведомление для приложения.
Я смотрю по сети, чтобы найти правильное решение для этого, но все еще не нашел пути. Может ли кто-нибудь дать представление о том, как это сделать?
Заранее спасибо:)
Ответы
Ответ 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()