cómo mostrar la imagen en ios notificaciones push?

iOS 10 introdujo actualizaciones de marco de notificación de inserción,

UserNotificationsUI.framework

Tal como está escrito en los documentos Apple, nos permite personalizar la apariencia de las notificaciones locales y remotas cuando aparecen en el dispositivo del usuario.

Entonces, si alguien tiene idea de cómo mostrar la imagen en la notificación de inserción cuando está en la pantalla de locking. lo mismo que la notificación de inserción andorid están haciendo.

Gracias,

Si desea personalizar la apariencia de las notificaciones locales y remotas, realice los siguientes pasos:

  1. Cree una categoría UNNotificationCategory y agregue a la categoría UNUserNotificationCenter :

     let newCategory = UNNotificationCategory(identifier: "newCategory", actions: [ action ], minimalActions: [ action ], intentIdentifiers: [], options: []) let center = UNUserNotificationCenter.current() center.setNotificationCategories([newCategory]) 
  2. Crea una UNNotificationContentExtension:

enter image description here

luego usa código o guión gráfico para personalizar tu UIViewController .

  1. Agregue categoría al UNNotificationContentExtension de UNNotificationContentExtension:

enter image description here

4. Notificación de envío

Notificación local

Cree un UNMutableNotificationContent y establezca el categoryIdentifier en “newCategory”, que incluye las categorías UNNotificationContentExtension y el UNNotificationContentExtension de UNNotificationContentExtension:

 let content = UNMutableNotificationContent() content.title = ... content.body = ... content.categoryIdentifier = "newCategory" let request = UNNotificationRequest.init(identifier: "newNotificationRequest", content: content, trigger: nil) let center = UNUserNotificationCenter.current() center.add(request) 

Notificación remota

Establezca "mutable-content : 1" y "category : newCategory" . Tenga en cuenta que el valor de la categoría se establece en “newCategory”, que coincide con lo que agregó previamente a UNUserNotificationCenter y UNNotificationContentExtension s plist.

Ejemplo:

  { "aps" : { "alert" : { "title" : "title", "body" : "Your message Here" }, "mutable-content" : "1", "category" : "newCategory" }, "otherCustomURL" : "http://www.xxx.jpg" } 
  1. Nota: necesita un dispositivo o simulador que admita 3D Touch, de lo contrario no podrá mostrar un UNNotificationContentExtension visualización UNNotificationContentExtension personalizado. (En iOS10 Beta1, no funciona. Pero ahora este trabajo sin toque en 3D)

Y … si solo desea mostrar una imagen en una notificación de inserción que se muestra en la pantalla de locking, debe agregar UNNotificationAttachment :

 let content = UNMutableNotificationContent() content.title = ... content.body = ... content.categoryIdentifier = "newCategory" let fileURL: URL = ... // your disk file url, support image, audio, movie let attachement = try? UNNotificationAttachment(identifier: "attachment", url: fileURL, options: nil) content.attachments = [attachement!] let request = UNNotificationRequest.init(identifier: "newNotificationRequest", content: content, trigger: nil) let center = UNUserNotificationCenter.current() center.add(request) 

enter image description here

Para obtener más detalles, demo

En realidad, si está configurando una notificación local y está interesado en que aparezca una imagen en la notificación en sí, no tiene que preocuparse por NotificationsUI.framework o UNNotificationContentExtensions en absoluto. Eso solo es útil si desea una IU personalizada cuando el usuario 3D toca o expande la notificación.

Para agregar una imagen que ya está en el dispositivo (ya sea enviada con la aplicación o generada / almacenada por la aplicación en algún momento antes de que se cree la notificación), solo necesita agregar UNNotificationAttachment con un archivo URL donde la ruta finaliza en .png (o .jpg probablemente también funcionará). Algo como esto:

 UNMutableNotificationContent *content = [UNMutableNotificationContent new]; content.title = @"Title"; content.body = @"Body"; content.sound = [UNNotificationSound defaultSound]; NSURL *imageURL = [NSURL URLWithString:@"file:/some/path/in/app/image.png"]; NSError *error; UNNotificationAttachment *icon = [UNNotificationAttachment attachmentWithIdentifier:@"image" URL:imageURL options:nil error:&error]; if (error) { NSLog(@"error while storing image attachment in notification: %@", error); } if (icon) { content.attachments = @[icon]; } 

Luego, cuando aparezca la notificación, la imagen aparecerá en el lado derecho del banner de notificación, como lo hace para las notificaciones de Mensajes. Y no tiene que pasar por todos los aros de configurar una extensión de contenido con un identificador de categoría, etc.

EDITAR: se actualizó para agregar que esta es solo una solución válida para notificaciones locales.

Tienes que trabajar un poco para crear notificaciones push y también cuando estás manejando.

  1. Cuando creas una carga útil, debes agregar un adjunto de atributo adicional, como a continuación:

     { aps : { alert: { }, mutable-content:1 } my-attachment = "url to resource" } 
  2. Cuando reciba un sistema de notificación llamará didReceive método de método didReceive de extensión, anule la notificación de la notificación método didReceive como este

     public func didReceive(_ request:UNNotificationRequest, withContentHandler contentHandler:(UNNotificatinContent) -> Void) { let fileUrl = // let attachment = UNNotificationAttachment(identifier : "image", url: fileUrl, options: nil) let content = request.content.mutableCopy as! UNMutableNotificationContent content.attachment = [attachment] contentHandler(content) } 

Aquí está la videoconferencia de la WWDC sobre este tema.

Implemente la vista personalizada de su notificación utilizando un UIViewController que se ajuste a UNNotificationContentExtension.

Ver https://developer.apple.com/reference/usernotificationsui/unnotificationcontentextension