Notificações no iOS 10

Notificações no iOS 10

Chegou a hora de olhar com um pouco mais de carinho para as notificações do seu app. Vamos aproveitar as novidades introduzidas no iOS 10 para engajar cada vez mais os nossos usuários e entregar-lhes uma melhor experiência com as Rich Notifications.

Ac0153ab43c41b1dc3932f19a94682e1?s=128

Fabricio Serralvo

March 22, 2017
Tweet

Transcript

  1. Notificações no iOS 10 CocoaHeads Campinas

  2. Fabrício Serralvo fabricio.serralvo@gmail.com

  3. None
  4. Criador do Futs

  5. Notificações

  6. iOS 3

  7. iOS 4

  8. iOS 8

  9. Quick Reply

  10. http://developer.boxcar.io/blog/2014-10-20-whats_new_in_push/

  11. iOS 9

  12. None
  13. iOS 10

  14. Novas possibilidades

  15. Antes de mais nada…

  16. Título, sub título e conteúdo

  17. None
  18. Media Attachments

  19. None
  20. None
  21. None
  22. Custom User Interface

  23. E como faço isso?

  24. None
  25. Media Attachments

  26. Notification Service

  27. File > New > Target

  28. Info.plist

  29. NotificationService.swift

  30. Dois métodos

  31. override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) ->

    Void) override func serviceExtensionTimeWillExpire()
  32. override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) ->

    Void) { self.contentHandler = contentHandler bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) if let bestAttemptContent = bestAttemptContent { if let pushContent = PushRepresentation(withUserInfo: bestAttemptContent.userInfo) { downloadAttachment(url: pushContent.contentURL, completion: { (completion) in contentHandler(bestAttemptContent) }) } } }
  33. func downloadAttachment(url: URL, completion: @escaping (Bool) -> Void) { (…)


    do { let attachment = try UNNotificationAttachment(identifier: "attachment", url: attachmentURL, options: nil) bestAttemptContent?.attachments = [attachment] completion(true) } catch { completion(false) } (…) }
  34. Alteração do Payload

  35. { "aps": { "alert": { "title": "Os chineses vem aí",

    "body": "Grandes jogadores podem deixar o país: Denis e Rodriguinho são os alvos", "url": “https://domain.com/files/photo.jpg" }, "mutable-content": 1, "content-available": 1 } }
  36. None
  37. None
  38. Envio do Payload Notification Service Entregue ao
 aplicativo

  39. Custom User Interface

  40. NotificationContent

  41. File > New > Target

  42. MainInterface.storyboard

  43. NotificationViewController.swift

  44. UIViewController

  45. func didReceive(_ notification: UNNotification)

  46. func didReceive(_ notification: UNNotification) { setupInterface(notification: notification) } func setupInterface(notification:

    UNNotification) { let player = Player.init(withRepresentation: […] ) let teamFrom = Team.init(withRepresentation: […]) let teamTo = Team.init(withRepresentation: […]) playerName?.text = player?.name teamFromName?.text = teamFrom?.name teamToName?.text = teamTo?.name
 
 (…)
 
 }
  47. Info.plist

  48. NSExtensionAttributes

  49. UNNotificationExtensionCategory

  50. { "aps": { "alert": { },
 "category": “transfer",
 "mutable-content": 1,

    "content-available": 1 } }
  51. UNNotificationExtensionDefaultContentHidden

  52. None
  53. Envio do Payload Notification Content Entregue ao
 aplicativo

  54. Para finalizar

  55. Título, sub título e conteúdo

  56. Alteração no payload

  57. { "aps": { "alert": { "title": “Novidades Mundo da Bola",

    "subtitle": "Janela de Transferências”, "body": “Hora de conferir quem chega e quem sai do seu clube do ❤" } } }
  58. None
  59. None
  60. Quanto isso custa?

  61. None
  62. Impacto em outros times

  63. Alteração do payload

  64. Implementação de outros times

  65. None
  66. None
  67. Advanced Notifications

  68. None
  69. Dúvidas?

  70. None
  71. Obrigado.