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
180
Produtividade e Xcode Template
serralvo
0
150
Notificações no iOS 10
serralvo
0
98
Mini-curso de Git
serralvo
0
85
Other Decks in Programming
See All in Programming
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
200
複数アプリケーションを育てていくための共通化戦略
irof
10
4k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
280
WindowInsetsだってテストしたい
ryunen344
1
190
Spring gRPC で始める gRPC 入門 / Introduction to gRPC with Spring gRPC
mackey0225
2
520
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
120
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
290
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
2
640
ドメインモデリングにおける抽象の役割、tagless-finalによるDSL構築、そして型安全な最適化
knih
11
2k
データベースコネクションプール(DBCP)の変遷と理解
fujikawa8
1
270
XSLTで作るBrainfuck処理系
makki_d
0
210
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
320
Featured
See All Featured
Navigating Team Friction
lara
187
15k
Become a Pro
speakerdeck
PRO
28
5.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
A better future with KSS
kneath
239
17k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Language of Interfaces
destraynor
158
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
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!