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
Building apps that play nicely with other apps
Search
Bryan Irace
November 21, 2013
Programming
1
350
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
600
iOS at Tumblr
irace
2
1.5k
Building Tumblr for iOS
irace
0
630
Modularity in mobile applications
irace
0
130
When the iOS SDK says “Jump,” ask “How High?”
irace
7
1.4k
Don't be "an Objective-C" or "a Swift Developer"
irace
5
800
Tumblr iOS architecture
irace
5
540
Node.js for mobile developers
irace
1
140
Introduction to Objective-C and Cocoa Touch
irace
7
650
Other Decks in Programming
See All in Programming
AWS re:Invent 2024個人的まとめ
satoshi256kbyte
0
100
Оптимизируем производительность блока Казначейство
lamodatech
0
950
선언형 UI에서의 상태관리
l2hyunwoo
0
270
Scaling your build logic
antalmonori
1
100
『改訂新版 良いコード/悪いコードで学ぶ設計入門』活用方法−爆速でスキルアップする!効果的な学習アプローチ / effective-learning-of-good-code
minodriven
28
4.2k
盆栽転じて家具となる / Bonsai and Furnitures
aereal
0
1.9k
AHC041解説
terryu16
0
400
どうして手を動かすよりもチーム内のコードレビューを優先するべきなのか
okashoi
3
870
Rubyでつくるパケットキャプチャツール
ydah
0
170
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
370
為你自己學 Python
eddie
0
520
Асинхронность неизбежна: как мы проектировали сервис уведомлений
lamodatech
0
1.4k
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Why Our Code Smells
bkeepers
PRO
335
57k
A Philosophy of Restraint
colly
203
16k
Git: the NoSQL Database
bkeepers
PRO
427
64k
For a Future-Friendly Web
brad_frost
176
9.5k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
4 Signs Your Business is Dying
shpigford
182
22k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
KATA
mclloyd
29
14k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Embracing the Ebb and Flow
colly
84
4.5k
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