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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Fabricio Serralvo
December 06, 2017
Programming
160
0
Share
iMessage Apps
Fabricio Serralvo
December 06, 2017
More Decks by Fabricio Serralvo
See All by Fabricio Serralvo
Um Pouco Sobre Property Wrappers
serralvo
2
200
Produtividade e Xcode Template
serralvo
0
160
Notificações no iOS 10
serralvo
0
110
Mini-curso de Git
serralvo
0
95
Other Decks in Programming
See All in Programming
Kubernetesを使わない環境にもCloud Nativeなデプロイを実現する / Enabling Cloud Native deployments without the complexity of Kubernetes
linyows
3
400
Road to RubyKaigi: Play Hard(ware)
makicamel
1
580
(Re)make Regexp in Ruby: Democratizing internals for the JIT
makenowjust
3
1.1k
【ディップ|26年新卒研修資料】TDD実装演習
dip_tech
PRO
0
190
Firefoxにコントリビューションして得られた学び
ken7253
2
160
PHPer、Cloudflare に引っ越す
suguruooki
2
200
Back to the roots of date
jinroq
0
840
[RubyKaigi 2026] Require Hooks
palkan
1
320
Claude CodeでETLジョブ実行テストを自動化してみた
yoshikikasama
0
1.2k
ソースコード→AST→オペコード、の旅を覗いてみる
o0h
PRO
1
130
実用!Hono RPC2026
yodaka
2
310
Are We Really Coding 10× Faster with AI?
kohzas
0
170
Featured
See All Featured
Claude Code のすすめ
schroneko
67
220k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
120
Faster Mobile Websites
deanohume
310
31k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
Designing Experiences People Love
moore
143
24k
Building AI with AI
inesmontani
PRO
1
990
Practical Orchestrator
shlominoach
191
11k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
910
30 Presentation Tips
portentint
PRO
1
290
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
530
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!