狠狠撸
Search
Submit Search
iOS 8 App Extension
?
9 likes
?
3,951 views
Takeo Nanba
この资料は発表当时(2014/7/29)のものです。既に仕様が変わっている部分もありますので、ご注意ください。
Read less
Read more
1 of 39
Download now
Download to read offline
More Related Content
iOS 8 App Extension
1.
iOS8 App Extension LINE
Developer Meetup in Fukuoka #6 2014.07.29 ?難波 健雄
2.
自己紹介 ? 難波 健雄 ?
LINE Fukuoka iOS Developer ? github.com/groovelab ? no music no life
3.
自己紹介 JAZZ やってます
4.
自己紹介 福岡城のFacebookページ
5.
はじめに ? 動作環境 ? Xcode6
beta4 ? iOS8 beta4 ? iOS SDK 8 beta4
6.
はじめに ? 動作環境 ? Xcode6
beta4 ? iOS8 beta4 ? iOS SDK 8 beta4? beta5 で変わるかもしれません
7.
アジェンダ ? App Extension ?
Extension Point ? Host AppとApp Extension ? Containing AppとApp Extensionの配布 ? App Extensionの実装とデバッグ
8.
App Extension ? iOS8から新しく追加されたアプリ連携の仕組み ?
iOS7まではURLスキームによる連携? (別アプリ起動) ? 複数のアプリで同じ機能を使用できる 詳細は App Extension Programming Guide を参照
9.
App Extension 同じ機能 例えば、、、 ? ブラウザからFacebook?Twitter以外のSNSへ投稿 ?
現在のホークスの試合を通知センターで表示 ? 画像?動画の編集 ? 独自のキーボード
10.
App Extension ? すでにGitHubには、たくさんのリポジトリが作ら れている ?
たとえば ? たとえば ? たとえば ? たとえば
11.
App Extension いま、App Extensionがアツイ! ?
すでにGitHubには、たくさんのリポジトリが作ら れている
12.
Extension Point ? AppExtensionには様々な種類がある
13.
Extension Point ? AppExtensionには様々な種類がある ?
種類?→?Extension Point
14.
Extension Point ? Today ?
Share ? Action ? Photo Editing ? Document Provider ? Custom Keyboard iOSのみ
15.
Extension Point ? Today ?
Share ? Action ? Photo Editing ? Document Provider?←?諸事情により割愛します ? Custom Keyboard
16.
Extension Point ? Today ?
通知センターの「今日」に表示 ? Widgetとも呼ぶ
17.
Extension Point ? Share ?
コンテンツの共有 ? SNSへの投稿
18.
Extension Point ? Action ?
コンテンツの編集 ? 画像?テキスト ? サンプルコード ? Extension Request Handling ? Safari Plugin ? JavaScriptで実装
19.
Extension Point ? Photo
Editing ? 写真アプリから連携 ? 画像や動画を編集 ? サンプルコード
20.
Extension Point ? Custom
Keyboard ? 独自のキーボードを作成可能
21.
Host AppとApp Extension ?
App Extensionを呼び出すアプリ? →?Host App ? Host AppとApp Extensionは別プロセスで動作する
22.
Host AppとApp Extension ?
Host AppとApp Extensionのデータ受け渡しは? NSExtensionContextインスタンスを利用する ? NSExtensionContext?→?テキスト?画像などを含む
23.
Containing App ? App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成 2. Targetの追加 → Application Extension → Extension Pointを決定
24.
Containing App ? App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成?←?Containing App 2. Targetの追加 → Application Extension → Extension Pointを決定
25.
Containing App ? App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成?←?Containing App 2. Targetの追加 → Application Extension → Extension Pointを決定 ? App Extensionの配布 1. Containing App をAppStoreに登録 2. Containing App をAppStoreからインストール?
26.
Containing App ? App
Extensionの作成方法 1. XcodeでiOSアプリProjectを作成?←?Containing App 2. Targetの追加 → Application Extension → Extension Pointを決定 ? App Extensionの配布 1. Containing App をAppStoreに登録 2. Containing App をAppStoreからインストール? 同時にAppExtensionもインストールされる
27.
App Extensionの実装 ? Containing
Appにtargetを追加する ここまでは同じ
28.
App Extensionの実装 ? Containing
Appにtargetを追加する ここまでは同じ ? Extension Pointによって実装が異なる ? Todayの場合 1. StoryBoardでUIを作成 2. UIに表示するデータを取得する処理を実装 3. 取得したデータをUIにセットする処理を実装
29.
App Extensionのデバッグ 1. 追加したtargetをRun
? 2. どのアプリを起動するか選択?←?Containing AppはNG 3. 起動したアプリからApp Extensionを呼ぶ 4. RunしたAppExtensionがデバッガに接続される ? デバッグコンソール ? NSLog() ? break point
30.
App Extensionのデバッグ 1. 追加したtargetをRun
? 2. どのアプリを起動するか選択?←?Containing AppはNG 3. 起動したアプリからApp Extensionを呼ぶ 4. RunしたAppExtensionがデバッガに接続される ? デバッグコンソール ? NSLog() ? break point
31.
Today Extension ? UIViewControllerを継承したTodayViewController ?
StoryBoardを使用可能 ? UILabel, UIButton ? キーボード入力できないのでUITextFieldは利用不可 ? preferredContentSizeでサイズ変更 ? viewDidLoad は通知センターを表示するたびに呼ばれる ? NSURLConnectionで外部コンテンツ参照可能
32.
Share Extension ? SLComposeServiceViewControllerを継承した ShareViewController ?
デフォルトのUI(ダイアログ)を使用する ? Storyboardは背景に使用される ? con?gurationItemsでダイアログのフッターにアイテムを追 加 ? didSelectPostで投稿処理を実装する
33.
Action Extension ? UIViewControllerを継承したActionViewController ?
StoryBoardを使用可能 ? NSExtensionContextを通じて編集するコンテンツ を取得?セットする ? done で処理を実装する
34.
Photo Editing Extension ?
UIViewControllerを継承した PhotoEditingViewController ? StoryBoardを使用可能 ? startContentEditingWithInputで編集するコンテンツを 表示 ? ?nishContentEditingWithCompletionHandlerで編集し たコンテンツを保存する
35.
Custom Keyboard ? UIInputViewControllerを継承した KeyboardViewController ?
StoryBoardを使用できない ? viewDidLoadでUIButtonをaddSubviewしていく ? textDocumentProxyのinsertText にテキストを渡す
36.
実装で注意すること ? 使用できないクラス?メソッドがある ? NS_EXTENSION_UNAVAILABLE ?
[UIApplication sharedApplication] ? [UIApplication openURL] ? [self.extensionContext openURL: …] ? ↑ContainingAppを起動することは可能 ? UIAlertController?←?iOS8版UIAlertView ? Todayでは使用できず
37.
実装で注意すること ? Containing AppとAppExtensionのデータ共有 ?
AppGroupを設定することで実現可能 ? info.plist で受け付けるコンテンツを制限 ? NSExtensionActivationRule ? NSExtensionActivationSupportsText ? NSExtensionActivationSupportsImageWithMaxC ount
38.
実装で注意すること ? バッドノウハウ (beta4だけ?) ?
TodayはiOSシミュレータのほうがデバッグしやすい ? 修正内容を反映させるのにiOSの再起動が必要 ? iOSシミュレータを終了 → Run ? Photo Editing、Custom Keyboardは? 実機のみデバッガを使用できる ? Custom KeyboardはUserDefaultsでContainingAppとデータ共有で きない?? ↑公式ドキュメントにはできると書いてあるので、beta4のバグかも
39.
最後に LINE Fukuokaでは 開発エンジニアを募集しています https://linefukuoka.co.jp/career/developer
Download