SlideShare a Scribd company logo
1 of 32
Download to read offline
iOS Extension
Jason
2014/12/09
擴展 (Extension)
是 iOS 8 和 OSX 10.10 加入的一個非常大的
功能,讓開發者可以通過系統提供給我們的擴
展接入點 (Extension point),來為系統特定
的服務提供某些附加的功能。
擴展種類
Today Extension - 在下拉的通知中心「今天」 界面中添加
widget
Share Extension - 點擊分享按鈕後將網站或相片透過應用分享
Action Extension - 點擊Action按鈕後透過判斷上下文來將內容
發送到應用
Photo Editing Extension - 在系統的照片應用中提供照片編輯的
能力
Document Provider Extension - 提供和管理文件內容
Customer Keyboard Extension - 提供可以用在所有應用的替代
系統鍵盤的自定義鍵盤或輸入法
情境-編輯相片
情境-編輯相片
使用 Photo Editing Extension
三個角色
Host App
使用者透過此App來啟動Extension,就叫做Host App。
Today Share / Action Photo Editing
Today.app Chrome.app Photo.app
Containing App
此App包含一個以上的Extension,就叫做Containing
App。
App Extension
客製化地擴展功能和內容,即叫做App
Extension。它能透過擴展接入點被開啟。
Today Extension 使用流程
App Extension 溝通
Today.ap
p
Dropbox
Today
View
Database
Dropbox.a
pp
Open
URL
App Extension 溝通
Share Extension 使用流程
Share Extension 使用流程
App Extension 溝通
透過Apple Framework存取
透過Apple Framework存取
分開運行
不同的行程
分開的位址空間
獨立執行
分別系統優化
共享資源
App群組
UserDefault
FileManager
共享資源
NSURL *directory = [[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:@"group.domain
"];
NSUserDefaults *shared = [[NSUserDefaults alloc]
initWithSuiteName:@"group.domain"];
共用程式碼
相同的資料模型
Data Model
相同的邏輯
Logic
相同的視圖
View
共用程式碼
相同的框架
Framework
相同的靜態程式庫
Static Library
共用程式碼
NSURL *containerURL = [[NSFileManager defaultManager]
containerURLForSecurityApplicationGroupIdentifier:@"group.d
omain"];
NSString *sorPath = [NSString
stringWithFormat:@"%@/Dylib.framework",[[NSBundle
mainBundle] bundlePath]];
NSString *desPath = [NSString
stringWithFormat:@"%@/Library/Caches/Dylib.framework",co
ntainerURL.path];
BOOL copyResult = [[NSFileManager defaultManager]
copyItemAtPath: sorPath toPath:desPath error:&err];
The basic life cycle of an app
extension
An app extension
communicates directly only
with the host app
An app extension can
communicate indirectly with its
containing app
An app extension's container is
distinct from its containing
app's container
Demo
參考
WWDC 2014 Session筆記 - iOS 通知中心擴展製作入門
http://onevcat.com/2014/08/notification-today-widget/
書籍-iOS 8 程式設計實戰205個快速上手的開發技巧
CocoaHeads Taipei 2014/11/13–iOS Extension
http://www.slideshare.net/wpsteak/ios-8-extension
Apple Developer–App Extensions
https://developer.apple.com/app-extensions/
App Extension Programming
Guidehttps://developer.apple.com/library/prerelease/ios/do
cumentation/General/Conceptual/ExtensibilityPG/

More Related Content

More from ShengWen Chiou

Xamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryXamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryShengWen Chiou
 
Xamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryXamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryShengWen Chiou
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OSShengWen Chiou
 
Symbolicate Crash 使用教學
Symbolicate Crash 使用教學Symbolicate Crash 使用教學
Symbolicate Crash 使用教學ShengWen Chiou
 
Apple Watch Specifications
Apple Watch SpecificationsApple Watch Specifications
Apple Watch SpecificationsShengWen Chiou
 
Apple Watch UI Elements
Apple Watch UI ElementsApple Watch UI Elements
Apple Watch UI ElementsShengWen Chiou
 
Apple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesApple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesShengWen Chiou
 
CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學ShengWen Chiou
 
Parental Gate 使用教學
Parental Gate 使用教學Parental Gate 使用教學
Parental Gate 使用教學ShengWen Chiou
 

More from ShengWen Chiou (17)

Xamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class LibraryXamarin.iOS中引用第三方Objective-C的Class Library
Xamarin.iOS中引用第三方Objective-C的Class Library
 
Xamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class LibraryXamarin.iOS中引用自製Objective-C的Class Library
Xamarin.iOS中引用自製Objective-C的Class Library
 
iBeacon 相關應用
iBeacon 相關應用iBeacon 相關應用
iBeacon 相關應用
 
Xamarin 研究
Xamarin 研究Xamarin 研究
Xamarin 研究
 
What’s New In watch OS
What’s New In watch OSWhat’s New In watch OS
What’s New In watch OS
 
Apple Watch Feature
Apple Watch FeatureApple Watch Feature
Apple Watch Feature
 
Symbolicate Crash 使用教學
Symbolicate Crash 使用教學Symbolicate Crash 使用教學
Symbolicate Crash 使用教學
 
Apple Watch Specifications
Apple Watch SpecificationsApple Watch Specifications
Apple Watch Specifications
 
Apple Watch UI Elements
Apple Watch UI ElementsApple Watch UI Elements
Apple Watch UI Elements
 
Apple Watch Human Interface Guidelines
Apple Watch Human Interface GuidelinesApple Watch Human Interface Guidelines
Apple Watch Human Interface Guidelines
 
AppleDoc 使用教學
AppleDoc 使用教學AppleDoc 使用教學
AppleDoc 使用教學
 
Quickblox Study
Quickblox StudyQuickblox Study
Quickblox Study
 
Auto layout 介紹
Auto layout 介紹Auto layout 介紹
Auto layout 介紹
 
iOS Touch ID 介紹
iOS Touch ID 介紹iOS Touch ID 介紹
iOS Touch ID 介紹
 
iOS Keychain 介紹
iOS Keychain 介紹iOS Keychain 介紹
iOS Keychain 介紹
 
CocoaPods 使用教學
CocoaPods 使用教學CocoaPods 使用教學
CocoaPods 使用教學
 
Parental Gate 使用教學
Parental Gate 使用教學Parental Gate 使用教學
Parental Gate 使用教學
 

iOS Extension