Keyboard Extension sharing
-
Upload
grady-zhuo -
Category
Software
-
view
249 -
download
4
description
Transcript of Keyboard Extension sharing
![Page 1: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/1.jpg)
Extension SharingCustom Keyboard in iOS 8
![Page 2: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/2.jpg)
Grady Zhuo• iOS Developer
• iOS 開發經驗2年
• 使⽤用開發語⾔言:
• Objective-C
• Python
• Swift
![Page 3: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/3.jpg)
ExtensionApple’s Plan for a Powerful App Ecosystem
![Page 4: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/4.jpg)
什麼是 Extension
• 為特定⺫⽬目的建制的⼆二進位檔
• 不是App
• 透過Apple的Framework程式呼叫 - 不能⾃自已呼叫Extension
• ⾮非App對App的IPC呼叫 - Extension也不是App
• App間呼叫依然採⽤用-[UIApplication openURL:]
![Page 5: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/5.jpg)
Extension的運作
![Page 6: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/6.jpg)
Extension的運作(獨⽴立)
Containing app
App extension
Host app
Request
Response
![Page 7: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/7.jpg)
Extension的運作(間接)
Containing app Shared
resources
Open URL
App extension
Host app
Request
ResponseRead/Write
Read/Write
![Page 8: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/8.jpg)
Extension的⽣生命週期
App extension ⽣生命週期
1.使⽤用者選⽤用Extension4.系統刪除Extension
3. 執⾏行載具App中Extension 2.系統啟動選⽤用的Extension
![Page 9: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/9.jpg)
Custom Keyboard⾃自已的鍵盤,⾃自已刻!
![Page 10: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/10.jpg)
Custom Keyboard• Bundle Configuration as App
• UIKit Framework
• UIInputViewController - as ViewController Life-cycle
• viewDidLoad
• viewWillAppear
• viewDidAppear
• viewWillDisappear
• viewDidDisapper
![Page 11: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/11.jpg)
Keyboard 呼叫流程
Custom Keyboard
Text Input ObjectLorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do ciusmod tempor
incididunt ut labore et dolore
Maecenas
magna aliqua
Running Keyboard
UIInputViewController
Next Keyboard
View
Hello
UIButton
insertText:
Containing App
Custom Keyboard Target
Xcode ProjectApp Extension Target Template
hello
![Page 12: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/12.jpg)
UITextDocumentProxy
Lorem ipsum dolor sit amet,
consectetur adipisicing elit,
sed do ciusmod tempor
incididunt ut labore et dolore
Maecenas hello
magna aliqua
Running Keyboard
UIInputViewController
Next Keyboard
View
Hello
textDocumentProxy <UITextDocumentProxy>
UIInputViewController
UIKit Framework
insertText:
![Page 13: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/13.jpg)
Info.plist Extended Keys
• PrimaryLanguage:鍵盤主要對應的語⾔言 ex. zh-TW, en-US,…
• NSExtensionPrincipalClass:Extension啟動時主要的Class
✦ Swift需完整Namespace
✦ ex. MyModule.KeyboardViewController
✦ 也可⽤用NSMainStoryboard代替
• App Extension Key參考⽂文件
![Page 14: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/14.jpg)
PrimaryLanguage
PrimaryLanguage
![Page 15: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/15.jpg)
RequestsOpenAccess的功⽤用• 可根據使⽤用者位置與聯絡資訊改善鍵盤
• 可與Server連線
• 可與Keyboard Containing App 進⾏行共通資源的設定
• 可同步⾄至iCloud,使所有裝置都有相同的偏好設定與資源
• 可以透過Containing App 提供In app purchase或GameCenter⽀支援
• 需使⽤用者同意,請參閱Designing for User Trust
![Page 16: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/16.jpg)
Demo
![Page 17: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/17.jpg)
建⽴立Keyboard Extension
![Page 18: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/18.jpg)
1. ⾄至專案設定加⼊入⼀一個新的Target
![Page 19: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/19.jpg)
2. 選擇Custom Keyboard
![Page 20: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/20.jpg)
3. 設定Extension專案資料
![Page 21: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/21.jpg)
4. 按Activate
![Page 22: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/22.jpg)
設定鍵盤主要語系為中⽂文
![Page 23: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/23.jpg)
5. 開啟Keyboard的Info.plist這裡也可以從專案檔選取Target設定
![Page 24: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/24.jpg)
6.展開⾄至NSExtensionAttribute
![Page 25: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/25.jpg)
7. 修改PrimaryLanguagezh-TW就是台灣使⽤用的繁體中⽂文
![Page 26: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/26.jpg)
Q & A
![Page 27: Keyboard Extension sharing](https://reader031.fdocument.pub/reader031/viewer/2022020116/55820f8cd8b42ac7728b462f/html5/thumbnails/27.jpg)
感謝聆聽