iOSドキュメントインタラクションプログラミングトピックス

iOSドキュメント
インタラクション
プログラミング
トピックス
目次
ドキュメントインタラクションについて 4
ドキュメントのプレビューとオプションの表示 4
ファイルタイプのサポートの登録 4
ほかのアプリケーションからのファイルのオープン 5
Quick Lookプレビューの表示と印刷 5
ファイルのプレビューとオープン 6
Document Interaction Controllerの作成と設定 7
Document Interaction Controllerの表示 8
アプリケーションでサポートするファイルタイプの登録 9
サポート対象のファイルタイプを開く 11
Quick Lookフレームワークの使用 12
書類の改訂履歴 14
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
2
リスト
アプリケーションでサポートするファイルタイプの登録 9
リスト 1
カスタムファイル形式用のドキュメントタイプ情報 10
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
3
ドキュメントインタラクションについて
iOSは、アプリケーションが直接的にはサポートしていないファイルのプレビューを表示するテクノ
ロジーを提供しています。また、ファイルタイプの関連付けに関するシステムレベルのレジストリも
提供しています。アプリケーションはこのレジストリを使って、インストールされているほかのアプ
リケーションのファイルを開く処理ができます。このような強力なテクノロジーとして、UIKitフレー
ムワークのUIDocumentInteractionControllerクラス(『UIDocumentInteractionController Class
Reference 』を参照)とQuick Lookフレームワーク(『Quick Look Framework Reference for iOS 』を参照)
があります。
iOS 4.2から導入されたQuick Lookフレームワークは、さまざまな種類のドキュメントに対応した印刷
サポートが組み込まれています。印刷とコピーの機能をカスタマイズして提供したい場合は、Document
Interaction Controllerのデリゲートにメソッドを実装することによって、その機能を追加できます。
UIDocumentInteractionControllerクラスとQLPreviewControllerクラスの使用方法を示すコー
ドについては、サンプルコードプロジェクト「DocInteraction 」を参照してください。
ドキュメントのプレビューとオプションの表示
アプリケーションが直接的にはサポートしていないファイル(iWork文書、PDFファイル、画像ファイ
ルなど)を扱うための選択肢をユーザに提供するには、Document Interaction Controller
(UIDocumentInteractionControllerクラスのインスタンス)を使用します。Document Interaction
Controllerは、ファイルのプレビューをモーダルモードで表示できます。また、ファイルを使用するた
めのさまざまな選択肢(別のアプリケーションでファイルを開いたり、AirPrintを使用してファイルを
印刷するなど)を含むメニューを表示できます。
関連項目: “ファイルのプレビューとオープン” (6 ページ)
ファイルタイプのサポートの登録
アプリケーションで特定の種類のファイルを開くことができる場合は、Xcodeプロジェクトの
Info.plistファイルにその情報を登録できます。他のアプリケーションがその種類のファイルを開
こうとすると、ユーザに提示されるオプションメニューの中にデベロッパのアプリケーションが表示
されます。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
4
ドキュメントインタラクションについて
ほかのアプリケーションからのファイルのオープン
関連項目: “アプリケーションでサポートするファイルタイプの登録” (9 ページ)
ほかのアプリケーションからのファイルのオープン
システムからアプリケーションに、特定のファイルを開いてユーザに表示するように要請する場合が
あります。これは通常、サポート対象としてデベロッパが登録した種類のファイルに、別のアプリ
ケーションが遭遇した場合に発生します。この場合、システムはデベロッパのアプリケーションに
ファイルのURLを渡し、アプリケーションをフォアグラウンドに移します。
関連項目: “サポート対象のファイルタイプを開く” (11 ページ)
Quick Lookプレビューの表示と印刷
ファイルのプレビューをきめ細かく制御するために、Quick Lookフレームワークを直接使用できます。
プレビューを表示するときに使用するアニメーションのスタイルを選ぶことができます。また、1つ
の項目だけでなく、複数の項目をプレビューすることもできます。Quick LookのPreview Controllerは、
サポート対象のファイルタイプのAirPrint印刷機能も提供しています。
関連項目: “Quick Lookフレームワークの使用” (12 ページ)
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
5
ファイルのプレビューとオープン
アプリケーション自身でプレビューやオープンができないファイルとやり取りする必要がある場合
は、そうしたやり取りを管理するUIDocumentInteractionControllerオブジェクトを使用します。
Document Interaction Controllerは、Quick Lookフレームワークと連携して、ファイルをその場でプレ
ビューできるかどうかや、別のアプリケーションで開くことができるかどうかを判断します。次に、
アプリケーションはDocument Interaction Controllerと連携して、利用可能な選択肢を適切なタイミン
グでユーザに表示します。
Document Interaction Controllerを使用するには、次の手順を実行します。
1.
やり取りしたいファイルごとにUIDocumentInteractionControllerクラスのインスタンスを作成
します。
2.
アプリケーションのユーザインターフェイスに、そのファイルの表現を提供します(通常は、
ファイル名または何らかのアイコンを表示します)。
3.
ユーザがそのファイル表現を操作したときは(タップなど)、Document Interaction Controllerに
次のいずれかのインターフェイスの表示を依頼します。
●
●
●
ファイルの内容を表示するファイルプレビュー
ファイルをプレビューしたり、別のアプリケーションを使用してファイルを開くための選択
肢を含むメニュー。コピーや印刷の選択肢をこのメニューに追加することもできます。それ
には、Document Interaction Controllerのデリゲートに適切なメソッドを実装します。
別のアプリケーションを使用してファイルを開くことだけをユーザに指示するメニュー
Document Interaction Controllerは、これらのアクションを直接実装できる組み込みのGesture
Recognizerを提供しています。
ファイルとやり取りをする任意のアプリケーションはすべて、Document Interaction Controllerを使用
できます。これらの機能が必要になる可能性が最も高いのは、ネットワークからファイルをダウン
ロードするアプリケーションです。たとえば、電子メールアプリケーションでは、Document Interaction
Controllerを使用して、電子メールに添付されたファイルをプレビューしたり開くことができます。
また、Document Interaction Controllerは、ファイルをダウンロードしないアプリケーションにとって
も役立ちます。たとえば、アプリケーションでファイル共有をサポートする場合(「File-Sharing Support」
in iOS Technology Overview とサンプルコードプロジェクト「DocInteraction 」を参照)、Document
Interaction Controllerを使用して、アプリケーションのDocuments/Sharedディレクトリに割り当てら
れたファイルを扱うことができます。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
6
ファイルのプレビューとオープン
Document Interaction Controllerの作成と設定
Document Interaction Controllerの作成と設定
Document Interaction Controllerを新規作成するには、扱いたいファイルで
UIDocumentInteractionControllerを初期化し、デリゲートオブジェクトを割り当てます。このデリ
ゲートは、ビューを表示するために必要な情報をコントローラに提供します。また、必要であれば、
これらのビューが表示されたときやユーザがビューを操作したときに、追加のアクションを実行する
ための情報も提供します。
次のコードでは、Document Interaction Controllerを新規に作成して、デリゲートを現在のオブジェク
トに設定しています。このメソッドの呼び出し元は、返されたオブジェクトを保持する必要がある点
に注意してください。
- (UIDocumentInteractionController *) setupControllerWithURL:(NSURL) fileURL
usingDelegate:(id <UIDocumentInteractionControllerDelegate>) interactionDelegate
{
UIDocumentInteractionController *interactionController =
[UIDocumentInteractionController interactionControllerWithURL:fileURL];
interactionController.delegate = interactionDelegate;
return interactionController;
}
Document Interaction Controllerを作成したら、そのプロパティを使用して、対応するファイルについて
の情報(名前、種類、URLなど)を取得できます。Document Interaction Controllerは、ドキュメントの
さまざまなサイズのアイコンを表すUIImageオブジェクトを含むiconsプロパティも持っています。
この情報はすべて、ユーザインターフェイス上にファイルを表示するときに利用できます。
別のアプリケーションでファイルを開くことができるようにする場合は、Document Interaction Controller
のannotationプロパティを使用して、オープン用のアプリケーションにカスタム情報を渡すことが
できます。オープン用のアプリケーションが認識できる形式で情報を提供するのは、デベロッパの責
任です。たとえば、このプロパティを、同じアプリケーションスイート内のアプリケーションで使用
できます。あるアプリケーションが、ファイルに関する追加情報を同じスイート内の別のアプリケー
ションに伝達したい場合、annotationプロパティを利用します。オープン用のアプリケーションは、
この注釈データを、渡されたoptionsディクショナリのUIApplicationLaunchOptionsAnnotationKey
キーに関連付けられた値として参照します。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
7
ファイルのプレビューとオープン
Document Interaction Controllerの表示
Document Interaction Controllerの表示
Document Interaction Controllerを使用して、ファイルのプレビューを表示したり、ファイルに対する
アクションをユーザに選ばせることができます。
●
●
●
ファイルのプレビューをモーダルモードで表示するには、presentPreviewAnimated:メソッド
を呼び出します。
ユーザに一連の選択肢(別のアプリケーションでファイルを開くなど)を提示するには、
presentOptionsMenuFromRect:inView:animated:メソッドまたは
presentOptionsMenuFromBarButtonItem:animated:メソッドを呼び出します。
別のアプリケーションでファイルを開くオプションのみをユーザに選択させるには、
presentOpenInMenuFromRect:inView:animated:メソッドまたは
presentOpenInMenuFromBarButtonItem:animated:メソッドを呼び出します。
これらの各メソッドは、1つのビュー(ドキュメントのプレビューまたはメニューのいずれか)の表
示を試みます。これらのメソッドを呼び出したときは、その戻り値を確認します。NOの戻り値は、要
求したビューに何もコンテンツが含まれていないため、表示されないことを表します。たとえば、
ファイルを開くことができるアプリケーションがインストールされていない場合、
presentOpenInMenuFromRect:inView:animated:メソッドはNOを返します。
ファイルのプレビューを表示するメソッドを呼び出す場合は、デリゲートオブジェクトは
documentInteractionControllerViewControllerForPreview:メソッドを実装している必要があ
ります。プレビューはモーダルモードで表示されるため、このメソッドから返されるView Controllerは
そのプレビューの親になります。このメソッドを実装していない場合や、メソッドからnilが返され
た場合、あるいは、返されたView Controllerが別のモーダルView Controllerを表示できない場合は、ド
キュメントのプレビューは表示されません。
Document Interaction Controllerは、自身が表示したビューの破棄を自動的に行います。ただし、必要
であれば、dismissMenuAnimated:メソッドまたはdismissPreviewAnimated:メソッドを呼び出し
て、プログラムでビューを破棄することもできます。
Gesture Recognizerを使用してDocument Interaction Controllerを表示する方法を示すサンプルコードに
ついては、DocInteraction を参照してください。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
8
アプリケーションでサポートするファイルタ
イプの登録
アプリケーションで特定のタイプのファイルを開ける場合は、そのことをシステムに登録するべきで
す。登録することにより、ほかのアプリケーションはiOSのDocument Interactionテクノロジーを利用
して、そのファイルをデベロッパのアプリケーションに渡すという選択肢をユーザに提示できます。
ファイルタイプのサポートを宣言するには、アプリケーションのInfo.plistプロパティリストファイ
ルにCFBundleDocumentTypesキーを含めなければなりません(“Core Foundation Keys”を参照)。システ
ムは、この情報をレジストリに追加します。ほかのアプリケーションは、Document Interaction Controller
を介してこの情報にアクセスできます。
CFBundleDocumentTypesキーには、辞書の配列が含まれており、それぞれの辞書は特定のドキュメ
ントタイプについての情報を識別します。通常、1つのドキュメントタイプは、特定のファイルタイ
プと1対1に対応します。ただし、アプリケーションで複数のファイルタイプを同じように扱う場合
は、これらのファイルタイプをグループにまとめて、1つのドキュメントタイプとして扱うこともで
きます。たとえば、アプリケーション固有のドキュメントタイプとして新旧2つのファイル形式があ
る場合は、両方を1つのドキュメントタイプエントリにまとめることができます。これによって、新
旧の各ファイルは同じドキュメントタイプのように見えるため、同じように扱うことができます。
CFBundleDocumentTypes配列内のそれぞれの辞書には、次のキーを含めることができます。
●
CFBundleTypeName ― ドキュメントタイプの名前を指定します。
●
CFBundleTypeIconFiles ― ドキュメントのアイコンとして使用する画像リソース用のファイル
名の配列です。
●
LSItemContentTypes ― このグループ内でサポート可能なファイルタイプを表すUTI typesを含む
文字列の配列が含まれます。
●
LSHandlerRank ― このアプリケーションがドキュメントタイプを所有しているのか、それとも
単にそのドキュメントタイプを開けるだけなのかを表します。
アプリケーション側から見ると、ドキュメントは、そのアプリケーションがサポートし、1つのエン
ティティとして扱う1つの(または複数の)ファイルタイプです。たとえば、画像処理アプリケーショ
ンでは、さまざまな画像ファイル形式を別々のドキュメントタイプとして扱うことによって、それぞ
れの形式に対応する動作をきめ細かく調節できます。逆に、ワードプロセッサアプリケーションで
は、元の画像形式には関知せず、単純にすべての画像形式を1つのドキュメントタイプとして扱うこ
とが考えられます。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
9
アプリケーションでサポートするファイルタイプの登録
リスト 1に、カスタムファイルタイプを開くことができるアプリケーションのInfo.plistのXMLの例
を示します。LSItemContentTypesキーは、このファイル形式に関連付けられているUTIを示します。
CFBundleTypeIconFilesキーは、それを表示するときに使用するアイコンリソースを指します。
リスト 1
カスタムファイル形式用のドキュメントタイプ情報
<dict>
<key>CFBundleTypeName</key>
<string>My File Format</string>
<key>CFBundleTypeIconFiles</key>
<array>
<string>MySmallIcon.png</string>
<string>MyLargeIcon.png</string>
</array>
<key>LSItemContentTypes</key>
<array>
<string>com.example.myformat</string>
</array>
<key>LSHandlerRank</key>
<string>Owner</string>
</dict>
CFBundleDocumentTypesキーの内容の詳細については、『Information Property List Key Reference 』の
このキーの説明を参照してください。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
10
サポート対象のファイルタイプを開く
システムがアプリケーションに、特定のファイルを開いてユーザに表示するように要請する場合があ
ります。通常、このような状況は、別のアプリケーションがそのファイルを検出して、それを処理す
るためにDocument Interaction Controllerを使用した場合に発生します。開くべきファイルの情報は、
アプリケーションデリゲートのapplication:didFinishLaunchingWithOptions:メソッドで受け取
ります。アプリケーションがカスタムファイルタイプを扱う場合は、
(applicationDidFinishLaunching:メソッドではなく)このデリゲートメソッドを実装して、そ
れを使用してアプリケーションを初期化しなければなりません。
application:didFinishLaunchingWithOptions:メソッドに渡されたoptionsディクショナリには、
開くべきファイルについての情報が含まれています。具体的には、次のキーをこのディクショナリ内
で探す必要があります。
●
UIApplicationLaunchOptionsURLKey ― 開くべきファイルを指定するNSURLオブジェクトが含
まれています。
●
UIApplicationLaunchOptionsSourceApplicationKey ― オープン要求を出したアプリケーショ
ンのバンドル識別子を含むNSStringが含まれています。
●
UIApplicationLaunchOptionsSourceApplicationKey ― ファイルを開くときにそのファイル
に関連付けたいと要求元アプリケーションが希望していたプロパティリストオブジェクトが含まれ
ています。
UIApplicationLaunchOptionsURLKeyキーが存在する場合、アプリケーションはそのキーで参照さ
れるファイルを開いて、その内容を直ちに表示しなければなりません。ディクショナリ内のその他の
キーを使用して、ファイルを開くときの環境についての情報を収集できます。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
11
Quick Lookフレームワークの使用
ファイルのプレビューをきめ細かく制御するために、Quick Lookフレームワークを直接使用できます。
このフレームワークで一番重要なクラスはQLPreviewControllerです。このクラスは、プレビュー
アクションに応答するためにデリゲートを利用し、プレビュー項目を提供するためにデータソースを
利用します。
iOS 4.2以降では、Quick LookのPreview Controllerによって提供される特殊なビューに、アクションボタ
ンと「Print(プリント)」項目が付いています。Preview Controllerがファイルのプレビューを提供で
きる場合は、それを印刷することもできます。印刷用のコードを記述する必要はありません。
Quick LookのPreview Controllerを表示するには、次のいずれかの方法を使用できます。
●
●
●
UINavigationControllerオブジェクトを使用してPreview Controllerをビューにプッシュします。
親クラス(UIViewController)のpresentModalViewController:animated:メソッドを使用し
て、フルスクリーンのモーダルモードでPreview Controllerを表示します。
Document Interaction Controllerを表示します(“ファイルのプレビューとオープン” (6 ページ)
を参照)。ユーザは、Document Interaction Controllerのオプションメニューから「クイックルッ
ク」を選ぶことによって、Quick LookのPreview Controllerを呼び出すことができます。
Quick LookのPreview Controllerをデベロッパ自身で用意する場合は、アプリケーションの外観とナビ
ゲーションのスタイルに最も適した表示オプションを選びます。 アプリケーションでナビゲーショ
ンバーを使用しない場合は、フルスクリーンのモーダルモード表示が最適です。アプリケーションで
iPhoneスタイルのナビゲーションを使用する場合は、プレビューをビューにプッシュする方法を選択
できます。
表示されるプレビューには、項目のURLの最後のパスコンポーネントから取得したタイトルが入りま
す。これをオーバーライドするには、プレビュー項目のpreviewItemTitleアクセサを実装します。
Quick LookのPreview Controllerは、以下の項目のプレビューを表示できます。
●
iWork文書
●
Microsoft Office文書(Office 97以降)
●
Rich Text Format(RTF)文書
●
PDFファイル
●
画像
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
12
Quick Lookフレームワークの使用
●
public.textタイプに準拠したUTI(Uniform Type Identifier)を持つテキストファイル(『Uniform
Type Identifiers Reference 』を参照)。
●
カンマ区切り(CSV)ファイル
Quick LookのPreview Controllerを使用するには、『QLPreviewControllerDataSource Protocol Reference 』に
記載されているメソッドを使用してデータソースオブジェクトを提供しなければなりません。この
データソースは、Preview Controllerにプレビュー項目を提供し、プレビュー用のナビゲーションリス
ト含める項目数を伝えます。このリストに複数の項目が存在する場合は、モーダルモード表示の(フ
ルスクリーンの)コントローラがナビゲーションの矢印を表示します。これを利用して、ユーザは項
目を切り替えることができます。Navigation Controllerを使用してプッシュされたQuick LookのPreview
Controllerの場合は、プレビュー項目のリスト内を移動するために、ナビゲーションバーにボタンを提
供することができます。
Quick Lookフレームワークの詳細については、『Quick Look Framework Reference for iOS 』を参照してく
ださい。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
13
書類の改訂履歴
この表は「iOSドキュメントインタラクションプログラミングトピックス 」の改訂履歴です。
日付
メモ
2010-11-15
プレビュー機能を提供する方法と、特定のファイルタイプを開くよ
うに登録する方法を解説した新規文書。
2010-11-15 | © 2010 Apple Inc. All Rights Reserved.
14
Apple Inc.
© 2010 Apple Inc.
All rights reserved.
本書の一部あるいは全部を Apple Inc. から書
面による事前の許諾を得ることなく複写複製
(コピー)することを禁じます。また、製品
に付属のソフトウェアは同梱のソフトウェア
使用許諾契約書に記載の条件のもとでお使い
ください。書類を個人で使用する場合に限り
1 台のコンピュータに保管すること、またそ
の書類にアップルの著作権表示が含まれる限
り、個人的な利用を目的に書類を複製するこ
とを認めます。
Apple ロゴは、米国その他の国で登録された
Apple Inc. の商標です。
キーボードから入力可能な Apple ロゴについ
ても、これを Apple Inc. からの書面による事
前の許諾なしに商業的な目的で使用すると、
連邦および州の商標法および不正競争防止法
違反となる場合があります。
本書に記載されているテクノロジーに関して
は、明示または黙示を問わず、使用を許諾し
ません。 本書に記載されているテクノロジー
に関するすべての知的財産権は、Apple Inc.
が保有しています。 本書は、Apple ブランド
のコンピュータ用のアプリケーション開発に
使用を限定します。
本書には正確な情報を記載するように努めま
した。 ただし、誤植や制作上の誤記がないこ
とを保証するものではありません。
Apple Inc.
1 Infinite Loop
Cupertino, CA 95014
U.S.A.
Apple Japan
〒106-6140 東京都港区六本木 6
丁目10番1号 六本木ヒルズ
http://www.apple.com/jp
Apple, the Apple logo, iPhone, iWork, and Xcode
are trademarks of Apple Inc., registered in the
U.S. and other countries.
AirPrint is a trademark of Apple Inc.
iOS is a trademark or registered trademark of
Cisco in the U.S. and other countries and is used
under license.
Apple Inc. は本書の内容を確認しておりますが、本
書に関して、明示的であるか黙示的であるかを問わ
ず、その品質、正確さ、市場性、または特定の目的
に対する適合性に関して何らかの保証または表明を
行うものではありません。その結果、本書は「現状
有姿のまま」提供され、本書の品質または正確さに
関連して発生するすべての損害は、購入者であるお
客様が負うものとします。
いかなる場合も、Apple Inc. は、本書の内容に含ま
れる瑕疵または不正確さによって生じる直接的、間
接的、特殊的、偶発的、または結果的損害に対する
賠償請求には一切応じません。そのような損害の可
能性があらかじめ指摘されている場合においても同
様です。
上記の損害に対する保証および救済は、口頭や書面
によるか、または明示的や黙示的であるかを問わ
ず、唯一のものであり、その他一切の保証にかわる
ものです。 Apple Inc. の販売店、代理店、または従
業員には、この保証に関する規定に何らかの変更、
拡張、または追加を加える権限は与えられていませ
ん。
一部の国や地域では、黙示あるいは偶発的または結
果的損害に対する賠償の免責または制限が認められ
ていないため、上記の制限や免責がお客様に適用さ
れない場合があります。 この保証はお客様に特定
の法的権利を与え、地域によってはその他の権利が
お客様に与えられる場合もあります。