Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
iMessage Apps
Search
Fabricio Serralvo
December 06, 2017
Programming
180
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iMessage Apps
Fabricio Serralvo
December 06, 2017
More Decks by Fabricio Serralvo
See All by Fabricio Serralvo
Um Pouco Sobre Property Wrappers
serralvo
2
220
Produtividade e Xcode Template
serralvo
0
170
Notificações no iOS 10
serralvo
0
130
Mini-curso de Git
serralvo
0
110
Other Decks in Programming
See All in Programming
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
380
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
2
260
社内AIエージェント「Askワンバン」における コストチューニングの取り組み
t0yohei
0
150
ChromeでローカルLLM
ryu1013
0
200
Kotlinize Is Not Just Converting to Kotlin
chigichan24
1
220
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.5k
AIがコードを書いてくれる時代、我々は何を確かめるのか
yosuke_furukawa
PRO
13
5.7k
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Seven New Principles of Software Engineering
yegor256
0
440
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
280
Groovy as a human and AI friendly programming language
paulk
0
180
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
320
Featured
See All Featured
Balancing Empowerment & Direction
lara
6
1.4k
Claude Code のすすめ
schroneko
67
230k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1.1k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The browser strikes back
jonoalderson
0
1.9k
How to train your dragon (web standard)
notwaldorf
96
6.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Darren the Foodie - Storyboard
khoart
PRO
4
4.1k
Embracing the Ebb and Flow
colly
88
5.2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
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!