share extension@pixiv

Post on 22-Nov-2014

248 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Share Extension@pixiv

TRANSCRIPT

kitasuke@trippiece

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

TodayShareActionPhoto EditingStorage ProviderCustom Keyboard

App Extensions

← 今日はこれ

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

Share Extension とは?

使用例

e.g. Twitter e.g. Pocket

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

実装の流れ

ターゲット

App Groups

e.g. Capabilities

NSExtensionAttributes

e.g. Info.plist

主要なメソッド

e.g. SLComposeServiceViewController

ローカル → NSUserDefaults

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

コンテンツ共有

1. NSExtensionContext の inputItems からNSExtensionItem を取得

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

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

コンテンツ取得

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

本題

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

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

やりたいこと

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

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

JavaScript ファイル

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

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

実装内容

デモ

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

まとめ

We’re hiring iOS & Android Engineers!!

top related