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
280
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
750
Tumblr iOS architecture
irace
5
480
Node.js for mobile developers
irace
1
120
Introduction to Objective-C and Cocoa Touch
irace
7
540
Other Decks in Programming
See All in Programming
Cloudflare WorkersでGoを動かすライブラリを作っている話
syumai
1
340
Prácticas de Seguridad en Kubernetes
pablokbs
0
130
Workshop on Jetpack compose
aldefy
0
140
AWSとCPUのムフフな関係
cmdemura
0
490
TSX First な Zero-Runtime SSG potato4d/dodai とその仕組み / owned static site generator #kyotojs
potato4d
1
480
10年以上続くプロダクトの フロントエンド刷新プロジェクトのふりかえり
yotahada3
2
360
What's new in Shopware 6.5
shyim
0
130
子育てとEMと転職と
_atsushisakai
1
430
ポケモンで学ぶiOS 16弾丸ツアー 🚅
giginet
PRO
1
620
Zynq MP SoC で楽しむエッジコンピューティング ~RTLプログラミングのススメ~
ryuz88
0
410
Qiita Night PHP 2023
fuwasegu
0
11k
Remote SSHで行うVS Codeリモートホスト開発とトラブルシューティング
smt7174
1
520
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
284
18k
Agile that works and the tools we love
rasmusluckow
321
20k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.5k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
217
21k
In The Pink: A Labor of Love
frogandcode
132
21k
For a Future-Friendly Web
brad_frost
166
7.8k
The Brand Is Dead. Long Live the Brand.
mthomps
48
2.9k
Building Adaptive Systems
keathley
27
1.3k
Stop Working from a Prison Cell
hatefulcrawdad
263
18k
VelocityConf: Rendering Performance Case Studies
addyosmani
317
22k
Side Projects
sachag
451
37k
From Idea to $5000 a Month in 5 Months
shpigford
374
44k
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