Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Fabricio Serralvo

March 22, 2017
Tweet

More Decks by Fabricio Serralvo

Other Decks in Programming

Transcript

  1. Notificações no iOS 10
    CocoaHeads Campinas

    View Slide

  2. Fabrício Serralvo
    [email protected]

    View Slide

  3. View Slide

  4. Criador do Futs

    View Slide

  5. Notificações

    View Slide

  6. iOS 3

    View Slide

  7. iOS 4

    View Slide

  8. iOS 8

    View Slide

  9. Quick Reply

    View Slide

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

    View Slide

  11. iOS 9

    View Slide

  12. View Slide

  13. iOS 10

    View Slide

  14. Novas possibilidades

    View Slide

  15. Antes de mais nada…

    View Slide

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

    View Slide

  17. View Slide

  18. Media Attachments

    View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. Custom User Interface

    View Slide

  23. E como faço isso?

    View Slide

  24. View Slide

  25. Media Attachments

    View Slide

  26. Notification Service

    View Slide

  27. File > New > Target

    View Slide

  28. Info.plist

    View Slide

  29. NotificationService.swift

    View Slide

  30. Dois métodos

    View Slide

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

    View Slide

  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)
    })
    }
    }
    }

    View Slide

  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)
    }
    (…)
    }

    View Slide

  34. Alteração do Payload

    View Slide

  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
    }
    }

    View Slide

  36. View Slide

  37. View Slide

  38. Envio do
    Payload
    Notification
    Service
    Entregue ao

    aplicativo

    View Slide

  39. Custom User Interface

    View Slide

  40. NotificationContent

    View Slide

  41. File > New > Target

    View Slide

  42. MainInterface.storyboard

    View Slide

  43. NotificationViewController.swift

    View Slide

  44. UIViewController

    View Slide

  45. func didReceive(_ notification: UNNotification)

    View Slide

  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


    (…)


    }

    View Slide

  47. Info.plist

    View Slide

  48. NSExtensionAttributes

    View Slide

  49. UNNotificationExtensionCategory

    View Slide

  50. {
    "aps": {
    "alert": { },

    "category": “transfer",

    "mutable-content": 1,
    "content-available": 1
    }
    }

    View Slide

  51. UNNotificationExtensionDefaultContentHidden

    View Slide

  52. View Slide

  53. Envio do
    Payload
    Notification
    Content
    Entregue ao

    aplicativo

    View Slide

  54. Para finalizar

    View Slide

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

    View Slide

  56. Alteração no payload

    View Slide

  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 ❤"
    }
    }
    }

    View Slide

  58. View Slide

  59. View Slide

  60. Quanto isso custa?

    View Slide

  61. View Slide

  62. Impacto em outros times

    View Slide

  63. Alteração do payload

    View Slide

  64. Implementação de outros times

    View Slide

  65. View Slide

  66. View Slide

  67. Advanced Notifications

    View Slide

  68. View Slide

  69. Dúvidas?

    View Slide

  70. View Slide

  71. Obrigado.

    View Slide