ios - recuperar - ¿Habilitar/deshabilitar la notificación push de Apple desde la aplicación de iPhone?
recuperar notificaciones iphone (7)
1.Desde su aplicación No aparece la primera vez que el usuario abre la aplicación después de instalarla ... si luego decide permitir que se active desde la configuración del dispositivo.
2.puede hacerse desde la aplicación y la configuración ... si desea deshabilitarla desde su aplicación, puede enviar el token del dispositivo (quien decida deshabilitar la notificación de inserción) a su servidor y almacenarlo por ej. como "no hay lista de notificaciones" y cuando envía la carga útil, ignora estos tokens para que no reciban la notificación.
3. Ya lo respondo.
Buena suerte.
Tengo una duda más sobre APNS
. Es decir, cuando la aplicación se inicia por primera vez, la aplicación solicita el permiso de notificaciones push de Apple si el usuario acepta que puede recibir las notificaciones. Si el usuario cancela no puede recibir ninguna notificación. ¿Estoy claro?
Ahora mi duda es,
La primera vez, si el usuario cancela el servicio de notificación de inserción desde la aplicación (botón de clic con el botón
Cancel
) nuevamente después de algunos días, si desea recibir la Notificación de Apple, es posible habilitar la Notificación de Apple de nuevo para el usuario en particular desde la Aplicación.¿Y si el usuario acepta el servicio de notificación push de Apple primero y después de algunos días, si no desea recibir las notificaciones, es posible desactivar el
APNS
en nuestra aplicación? Espero que entiendas mi duda. ¿Alguien puede aclarar esta duda?¿Es posible hacer estos escenarios anteriores en nuestra aplicación para iPhone?
Por favor, ayúdame. Gracias por adelantado.
Cuando da su permiso por primera vez, el token del dispositivo de su iPhone se registra con el servidor APN y luego puede recibir la notificación de inserción. Más tarde, puede habilitar / deshabilitar desde la configuración de su dispositivo → notificación → su aplicación.
Desafortunadamente, no puede habilitar o deshabilitar las notificaciones push para su aplicación desde el código de la aplicación. El diálogo que pide permiso se muestra solo una vez. Por lo general, otras aplicaciones muestran instrucciones al usuario para habilitar / deshabilitar las notificaciones automáticas yendo a Configuración-> Notificación-> Nombre de la aplicación.
Mi requisito era habilitar y deshabilitar la notificación de inserción con un UISwitch
UIS. Para habilitar la notificación de inserción desde el código, use esto dentro de la acción del botón.
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
Inorder para deshabilitar
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
Pragmáticamente, es posible habilitar y deshabilitar la notificación de inserción al registrar y anular el registro de la notificación de inserción.
Habilitar notificación push:
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()
}
Métodos de delegado
@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
}
Desactivar la notificación push:
UIApplication.shared.unregisterForRemoteNotifications()
Puede leer los permisos de su aplicación usando UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
y luego realizar un bitwise y la operación con los diferentes tipos para ver cuáles están habilitados. También puede llamar a unregisterForRemoteNotifications
para deshabilitar las notificaciones. Lo único que no puedes hacer es activar las notificaciones, aunque puedes dirigir al usuario.
Puedes usar este código para dar soporte en 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(@"");
}
}