Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iMessage Apps
Search
Fabricio Serralvo
December 06, 2017
Programming
0
140
iMessage Apps
Fabricio Serralvo
December 06, 2017
Tweet
Share
More Decks by Fabricio Serralvo
See All by Fabricio Serralvo
Um Pouco Sobre Property Wrappers
serralvo
2
160
Produtividade e Xcode Template
serralvo
0
140
Notificações no iOS 10
serralvo
0
94
Mini-curso de Git
serralvo
0
81
Other Decks in Programming
See All in Programming
Make Parsers Compatible Using Automata Learning
makenowjust
1
5.1k
Sharing features among Android applications: experience feedback
jbvincey
0
110
国漢文混用体からHolloまで
minhee
1
190
The Implementations of Advanced LR Parser Algorithm
junk0612
1
320
Enterprise Web App. Development (1): Build Tool Training Ver. 5
knakagawa
1
120
Making TCPSocket.new "Happy"!
coe401_
1
1.5k
Code smarter, not harder - How AI Coding Tools Boost Your Productivity | Webinar 2025
danielsogl
0
140
Do Dumb Things
mitsuhiko
0
440
監視 やばい
syossan27
10
9.4k
Empowering Developers with HTML-Aware ERB Tooling @ RubyKaigi 2025, Matsuyama, Ehime
marcoroth
2
730
Deoptimization: How YJIT Speeds Up Ruby by Slowing Down / RubyKaigi 2025
k0kubun
0
850
Being an ethical software engineer
xgouchet
PRO
0
210
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
23
2.6k
A designer walks into a library…
pauljervisheath
205
24k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
21k
Making Projects Easy
brettharned
116
6.1k
Being A Developer After 40
akosma
91
590k
Agile that works and the tools we love
rasmusluckow
328
21k
Building an army of robots
kneath
304
45k
Writing Fast Ruby
sferik
628
61k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Music & Morning Musume
bryan
47
6.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Transcript
IMESSAGE APPS COCOAHEADS CAMPINAS
OLÁ, SOU O FABRÍCIO github.com/serralvo !
" DEV iOS @ ELDORADO
UM PAPO SOBRE APPS PARA IMESSAGE
UM POUCO SOBRE
STICKERS
APPS
APIs
UM POUCO SOBRE
SURGIU NO iOS 5
ONDE FUNCIONA?
⌚ EM TODO O ECOSSISTEMA
iOS 10 TROUXE A NOVIDADE
E EM VERSÕES ANTERIORES?
FALLBACK
E EM DEVICES SEM O APP?
APP STORE EXCLUSIVA
None
None
STICKERS
"FUN WAY TO COMMUNICATE"
ADICIONAR EM UMA MENSAGEM
IDEAL PARA ENGAJAMENTO
None
ANIMADOS OU ESTÁTICOS
E COMO FAÇO TUDO ISSO?
DOIS JEITOS PARA FAZER
TEM O JEITO FÁCIL
E TEM O JEITO MUITO FÁCIL
None
None
None
None
None
None
None
APPS
ALGUMAS CONSIDERAÇÕES
0 NÃO TEMOS ACESSO AS MENSAGENS
⚠ STANDALONE
App Extension nope iMessage App
DICA PARA QUEM QUER COMEÇAR
None
API
MESSAGES FRAMEWORK É DELE QUE VAMOS FALAR
MSMESSAGE
INTERFACE GRÁFICA
MSMESSAGETEMPLATELAYOUT
None
let layout = MSMessageTemplateLayout() layout.image = UIImage(named: "coverImage") layout.caption =
"Message In A Bottle" let message = MSMessage() message.layout = layout
None
E O ENVIO DE INFORMAÇÕES?
var components = URLComponents() components.queryItems = [ URLQueryItem(name: "songID", value:
“92381”), URLQueryItem(name: "name", value: “Message In A Bottle") ] let message = MSMessage() message.url = components.url
MSCONVERSATION
guard let conversation = activeConversation else { fatalError("Whooops, expected a
conversation") } // iOS 10 API conversation.insert(message) { error in if let e = error { print(e) } } // iOS 11 API conversation.send(message) { error in if let e = error { print(e) } }
MSSESSION
guard let conversation = activeConversation else { fatalError("Whooops, expected a
conversation") } let session = conversation.selectedMessage?.session ?? MSSession() let message = MSMessage(session: session)
MSMESSAGESAPPVC
None
// Changing presentation style requestPresentationStyle(.expanded) // Messages Handling override func
didSelect(_ message: MSMessage, conversation: MSConversation) { print("Items: \(message.url?.query ?? “Nope")") }
MSSTICKERBROWSERVC
// MSStickerBrowserViewDataSource override func numberOfStickers(in stickerBrowserView: MSStickerBrowserView) -> Int {
return 5 } override func stickerBrowserView(_ stickerBrowserView: MSStickerBrowserView, stickerAt index: Int) -> MSSticker { // ... }
RECAPITULANDO
VIEWCONTROLLER
VIEWCONTROLLER CONVERSATION
VIEWCONTROLLER CONVERSATION MESSAGE B A
VIEWCONTROLLER CONVERSATION MESSAGE SESSION A&B
4 REFERÊNCIAS
DÚVIDAS?!
OBRIGADO!