Pregunta sobre ios, iphone, push-notification, apple-push-notifications, permissions – ¿Habilitar / deshabilitar la notificación push de Apple desde la aplicación de iPhone?

20

Tengo una duda más sobreAPNS. 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,

Por primera vez, si el usuario canceló el servicio de notificación de inserción desde la aplicación (haga clic enCancel botón) nuevamente después de algunos días, si desean recibir la Notificación Push de Apple, es posible habilitar la Notificación Push de Apple nuevamente para el usuario en particular desde la Aplicación.

Y si el usuario acepta el servicio de notificaciones push de Apple primero y después de algunos días, si no desea recibir las notificaciones, es posible desactivar laAPNS 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.

Tu respuesta

7   la respuesta
0

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:

<code>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()
}
</code>

Métodos de delegado

<code>@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
}
</code>

Desactivar la notificación push:

<code>UIApplication.shared.unregisterForRemoteNotifications()
</code>
sí, por favor, compruebe si es posible. shaqir saiyed
así que eso significa que puedo poner un interruptor de ENCENDIDO / APAGADO en mi aplicación para mi Notificación de Aplicación y puedo habilitarlo / deshabilitarlo en cualquier momento que lo desee ... ¿Apple aprueba esto? shaqir saiyed
@shaqirsaiyed Sin embargo, no lo he confirmado, ya que solo he participado en la aplicación empresarial. Pero seguro que lo comprobaré con manzana. Esto puede ser muy útil. Krunal
4

Mi requisito era habilitar y deshabilitar pushnotificaton con unUISwitch.A fin de queHabilitar notificación push desde el código. Usa esto dentro de la acción del botón.

<code>[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
   (UIRemoteNotificationTypeBadge |  UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
</code>

Inorder para deshabilitar

<code>[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
</code>
Este código es bueno pero no funciona en iOS 10 iPatel
Como se mencionó anteriormente, la habilitación solo puede ocurrir una vez. Itai Spector
1

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. se puede hacer desde la aplicación y la configuración ... si desea deshabilitarla desde su aplicación, puede enviar el token del dispositivo (que decide 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.

Gracias por tu respuesta Malek_jundi. ¿Existe alguna posibilidad de encontrar mediante el código que el usuario apagó para recibir las notificaciones de mi aplicación (desde la pantalla de configuración de nuestro dispositivo iPhone)? Gracias por adelantado. Gopinath
No lo creo ... pero es simple que hará que una función de api mantenga 1 parámetro (toke dispositivo) una vez que el usuario haya desactivado la notificación (depende de usted cómo hacerlo en su aplicación, pero UISwitch es la mejor opción) ) llamará a esta api y establecerá una marca para que este token no reciba notificación ... eso es todo. Malek_Jundi
15

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 push ingresando en Configuración-> Notificación-> Nombre de la aplicación.

Puedes verificar si algún tipo de notificaciones push están habilitadas al usar esto:if([UIApplication sharedApplication].enabledRemoteNotificationTypes == UIRemoteNotificationTypeNone) adig
Gracias por tu respuesta Adig. ¿Existe alguna posibilidad de encontrar mediante el código que el usuario apagó para recibir las notificaciones de mi aplicación (desde la pantalla de configuración de nuestro dispositivo iPhone)? Gracias por adelantado. Gopinath
1

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.

0

Puedes usar este código para dar soporte en iOS 9

<code>    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(@"");
    }
}
</code>

ver¿Cómo actualizar el código utilizando enabledRemoteNotificationTypes porque "no es compatible con iOS 8"?

16

Puedes leer los permisos de tu aplicación usandoUIRemoteNotificationType 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 puedes llamarunregisterForRemoteNotifications para desactivar las notificaciones. Lo único que no puedes hacer es activar las notificaciones, aunque puedes dirigir al usuario.

Preguntas relacionadas