Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Building apps that play nicely with other apps
Bryan Irace
November 21, 2013
Programming
1
260
Building apps that play nicely with other apps
Given at the NYC CocoaPods meetup ("Cocoa Kucha") on November 20, 2013.
Bryan Irace
November 21, 2013
Tweet
Share
More Decks by Bryan Irace
See All by Bryan Irace
Practical iOS application modularity
irace
1
510
iOS at Tumblr
irace
2
1.3k
Building Tumblr for iOS
irace
0
530
Modularity in mobile applications
irace
0
110
When the iOS SDK says “Jump,” ask “How High?”
irace
7
1.3k
Don't be "an Objective-C" or "a Swift Developer"
irace
5
710
Tumblr iOS architecture
irace
5
480
Node.js for mobile developers
irace
1
110
Introduction to Objective-C and Cocoa Touch
irace
7
520
Other Decks in Programming
See All in Programming
実践 SpiceDB - クライドネイティブ時代をサバイブできるパーミッション管理の実装を目指して / Practical SpiceDB
lmt_swallow
0
140
MLOps勉強会_リアルタイムトラフィックのサーバレスMLOps基盤_20220810
strsaito
1
450
Records の使い方はこれでいいの? をみんなで考えたい / Java DO #20
gishi_yama
0
130
一口目から美味しいReactのスルメ本🦑
taro28
2
690
Google I/O 2022 Android関連概要 / Google I/O 2022 Android summary
phicdy
1
410
Amazon Lookout for Visionで 筆跡鑑定してみた
cmnakamurashogo
0
180
SGGとは
inoue2002
0
440
設計の考え方とやり方
masuda220
PRO
56
31k
Pluggable Storage in PostgreSQL
sira
1
190
Pythonで鉄道指向プログラミング
usabarashi
0
130
Pythonによる開発をアップデートするライブラリの紹介
daikikatsuragawa
1
810
リーダブルテストコード / #vstat
jnchito
48
36k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
196
16k
Statistics for Hackers
jakevdp
782
210k
Adopting Sorbet at Scale
ufuk
63
7.6k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
The Language of Interfaces
destraynor
148
21k
Design by the Numbers
sachag
271
17k
Infographics Made Easy
chrislema
233
17k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
236
1.1M
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
21
1.4k
Navigating Team Friction
lara
175
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
638
52k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
Transcript
Building apps that play nicely with other apps Bryan Irace
Intents Contracts
…URLs?
URLs have shortcomings Like manually, explicitly defining all interactions between
apps
We can fix some of these shortcomings • Documentation !
• Discovery
We can fix some of these shortcomings • Time spent
writing client code ! • Bugs
CocoaPods
It’s OK to be selfish Provide code that helps others
integrate with you
Tumblr iOS SDK github.com/tumblr/ TMTumblrSDK
x-callback-url.com [scheme]://x-callback-url/ [action]?[x-callback parameters]&[action parameters] Used in Byword, Drafts, Instapaper,
Google Maps, Google Chrome, TextExpander, and many more
Please actually implement the “callback” part
URLs tumblr://x-callback-url/blog? blogName=bryan&postID=43724939726 ! tumblr://x-callback-url/text? title=Title&body=Body&tags=gif&tags=lol Hope others both find
and properly implement them
+ (void)viewBlog:(NSString *)blogName; ! + (void)createTextPost:(NSString *)title body:(NSString *)body tags:(NSArray
*)tags success:(NSURL *)successURL cancel:(NSURL *)cancelURL; pod install TMTumblrSDK
UIActivityViewController
@implementation TMTumblrActivity ! - (NSString *)activityTitle { return @"Tumblr"; }
! - (UIImage *)activityImage { return [UIImage imageNamed:@"UIActivityTumblr"]; } ! - (void)performActivity { // Open Tumblr app or hit API directly } pod install TMTumblrSDK
UIDocumentInteractionController
+ (UIDocumentInteractionController *)presentInteractionControllerWithURL:(NSURL *)URL caption:(NSString *)caption tags:(NSArray *)tags fromBarButtonItem:(UIBarButtonItem *)item
{ UIDocumentInteractionController *controller = [UIDocumentInteractionController interactionControllerWithURL:URL]; controller.UTI = @"com.tumblr.photo"; controller.annotation = @{ @"TumblrCaption" : caption, @"TumblrTags" : tags }; ! [controller presentOpenInMenuFromBarButtonItem:item animated:YES]; return controller; } pod install TMTumblrSDK
Publish an official API client Every app is different. Make
it easy for developers to hit your API directly if they’d prefer.
Subspecs • TMTumblrSDK/URLSchemes ! • TMTumblrSDK/Activity ! • TMTumblrSDK/DocumentInteraction !
• TMTumblrSDK/APIClient • TMTumblrSDK/APIClient/Authentication Don’t make developers include more code than they want to
Summary You should make it easy for developers to integrate
with your app ! Providing code via CocoaPods is obviously the best way to do so com/jobs