share extension@pixiv

19
kitasuke@trippiece Share Extension をををををを @pixiv

Upload: yusuke-kita

Post on 22-Nov-2014

248 views

Category:

Engineering


0 download

DESCRIPTION

Share Extension@pixiv

TRANSCRIPT

Page 1: Share Extension@pixiv

kitasuke@trippiece

Share Extension を触ってみた @pixiv

Page 2: Share Extension@pixiv

自己紹介

Ref. http://cnet4.cbsistatic.com/hub/i/r/2014/09/09/1d101da2-7abd-40aa-b0c9-94e4f9b27b95/thumbnail/770x433/c2705e97ac76cc74f2c19abc83929de9/apple-event-apple-watch-5446.jpg

Ref. http://cdn.macrumors.com/article-new/2014/09/applewatch2.jpg

Page 3: Share Extension@pixiv

TodayShareActionPhoto EditingStorage ProviderCustom Keyboard

App Extensions

← 今日はこれ

Page 4: Share Extension@pixiv

SNS への投稿コンテンツの共有

Share Extension とは?

Page 5: Share Extension@pixiv

使用例

e.g. Twitter e.g. Pocket

Page 6: Share Extension@pixiv

1. Share Extension 用のターゲット追加2. App Groups の設定3. NSExtensionAttributes の設定4. Containing app 側での認証・バリデーション・アップロード処理の実装5. Host app 側での更新処理実装

実装の流れ

Page 7: Share Extension@pixiv

ターゲット

Page 8: Share Extension@pixiv

App Groups

e.g. Capabilities

Page 9: Share Extension@pixiv

NSExtensionAttributes

e.g. Info.plist

Page 10: Share Extension@pixiv

主要なメソッド

e.g. SLComposeServiceViewController

Page 11: Share Extension@pixiv

ローカル → NSUserDefaults

サーバー → NSURLSession でアップロード

コンテンツ共有

Page 12: Share Extension@pixiv

1. NSExtensionContext の inputItems からNSExtensionItem を取得

2. NSExtensionItem の attachments から各NSItemProvider を取得

3. loadItemForTypeIdentifier: options: completionHandler: で各コンテンツを取得

コンテンツ取得

Page 13: Share Extension@pixiv

Pocket の辞書版を作りたいSafari で英語の記事を読んでいて、分からない単語があれば保存して後で調べる→ Safari で選択中のテキストをShare Extension で保存する

本題

Page 14: Share Extension@pixiv

1. Safari 上での情報を取得したい(そもそも可能?)2. テキストだけ共有したい( NSExtensionActivationSupportsImageWit

hMaxCount をゼロにしても駄目だった)

やりたいこと

← 勝手に表示されるこの画像が不要

Page 15: Share Extension@pixiv

Extension タスク開始時に実行される run 関数Extension タスク終了時に実行される finalize 関数Info.plist の NSExtensionAttributes 以下のNSExtensionJavaScriptPreprocessingFile にファイル名を指定する* JavaScript ファイルを使用すると、 kUTTypePropertyList タイプのNSItemProvider がセットされる

JavaScript ファイル

Page 16: Share Extension@pixiv

1. JavaScript ファイルをNSExtensionJavaScriptPreprocessingFile に設定

2. Safari が選択中の文字列とサイト URL を取得する処理を JavaScript で実装3. 選択された文字列をテキストビューに表示4. Post ボタンを押すと、選択された文字列と URLを NSUserDefaults に保存5. Host app で NSUserDefaults からコンテンツ取得

実装内容

Page 17: Share Extension@pixiv

デモ

Page 18: Share Extension@pixiv

情報量が少ないが思ったより簡単ログ見ながら手探りで進めるApple Watch 用アプリを開発出来ると思って、わくわくしながら開発するのが大事

まとめ

Page 19: Share Extension@pixiv

We’re hiring iOS & Android Engineers!!