ver recuperar pantalla notificaciones historial funciona como centro borradas bloqueada notifications ios8 localnotification

notifications - pantalla - recuperar notificaciones iphone



Compruebe si las notificaciones locales están habilitadas en IOS 8 (8)

He buscado en todo Internet cómo crear notificaciones locales con IOS 8. He encontrado muchos artículos, pero ninguno explicó cómo determinar si el usuario ha activado o desactivado las "alertas". ¡¡¡Alguien podría ayudarme por favor!!! Preferiría usar Objective C sobre Swift.


Aquí hay una función simple en Swift 3 que verifica si al menos un tipo de notificación está habilitado.

¡Disfrutar!

static func areNotificationsEnabled() -> Bool { guard let settings = UIApplication.shared.currentUserNotificationSettings else { return false } return settings.types.intersection([.alert, .badge, .sound]).isEmpty != true }

Gracias Michał Kałużny por la inspiración.


Creo que este código es más preciso:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) { UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types]; if (types & UIUserNotificationTypeBadge) { NSLog(@"Badge permission"); } if (types & UIUserNotificationTypeSound){ NSLog(@"Sound permission"); } if (types & UIUserNotificationTypeAlert){ NSLog(@"Alert permission"); } }


Objetivo C + iOS 10

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) { switch (settings.authorizationStatus) { case UNAuthorizationStatusNotDetermined: break; case UNAuthorizationStatusDenied: break; case UNAuthorizationStatusAuthorized: break; default: break; } }];


Para ampliar la respuesta de Albert, no está obligado a usar rawValue en Swift. Debido a que UIUserNotificationType ajusta a OptionSetType , es posible hacer lo siguiente:

if let settings = UIApplication.shared.currentUserNotificationSettings { if settings.types.contains([.alert, .sound]) { //Have alert and sound permissions } else if settings.types.contains(.alert) { //Have alert permission } }

Utilice la sintaxis de corchete [] para combinar tipos de opciones (similar al operador a nivel de bits o | para combinar indicadores de opciones en otros idiomas).


Usando la respuesta @simeon, Xcode me dice que

''currentUserNotificationSettings'' quedó en desuso en iOS 10.0: Use UserNotifications Framework''s - [UNUserNotificationCenter getNotificationSettingsWithCompletionHandler:] y - [UNUserNotificationCenter getNotificationCategoriesWithCompletionHandler:]

Así que aquí está la solución usando el UNUserNotificationCenter para Swift 4 :

UNUserNotificationCenter.current().getNotificationSettings(){ (settings) in switch settings.alertSetting{ case .enabled: //Permissions are granted case .disabled: //Permissions are not granted case .notSupported: //The application does not support this notification type } }


Veloz con guard :

guard let settings = UIApplication.sharedApplication().currentUserNotificationSettings() where settings.types != .None else { return }


Edit: Echa un vistazo a la answer @ simeon.

En Swift, necesitas usar rawValue :

let grantedSettings = UIApplication.sharedApplication().currentUserNotificationSettings() if grantedSettings.types.rawValue & UIUserNotificationType.Alert.rawValue != 0 { // Alert permission granted }


Puede verificarlo utilizando la UIApplication de currentUserNotificationSettings UIApplication de currentUserNotificationSettings

if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]){ // Check it''s iOS 8 and above UIUserNotificationSettings *grantedSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; if (grantedSettings.types == UIUserNotificationTypeNone) { NSLog(@"No permiossion granted"); } else if (grantedSettings.types & UIUserNotificationTypeSound & UIUserNotificationTypeAlert ){ NSLog(@"Sound and alert permissions "); } else if (grantedSettings.types & UIUserNotificationTypeAlert){ NSLog(@"Alert Permission Granted"); } }

Espero que esto ayude, Avísame si necesitas más información.