アプリを Safari や写真などの共有アクティビティ リストに表示するにはどうすればよいですか? Facebook と同じように、アプリを介してリンク/画像またはテキストを共有できるようにしたいと考えています。
Facebook/Twitter などはデフォルトUIActivityType
のリストで利用できますが、Pinterest や Zomato などの他のアプリはどのようにこれを実現していますか?
アプリを Safari や写真などの共有アクティビティ リストに表示するにはどうすればよいですか? Facebook と同じように、アプリを介してリンク/画像またはテキストを共有できるようにしたいと考えています。
Facebook/Twitter などはデフォルトUIActivityType
のリストで利用できますが、Pinterest や Zomato などの他のアプリはどのようにこれを実現していますか?
最も簡単な方法は、ファイル タイプの関連付けを使用することです。コンセプトはすでに確立されているため、すでに多くのチュートリアルが存在するため、ここでは主なキーワードについて説明します。
最初に決定することは、サポートするUniform Type Identifier (UTI)です。Apple から現在入手可能な UTI のリストを以下に示します。
次に、Xcode プロジェクトでターゲットを開き、 [情報] タブに移動します。そこに、ドキュメントの種類のエントリがあります。それを開き、プラス記号を押して新しいドキュメント タイプを追加します。サポートする名前と UTI を指定します (この例では PDF を選択しました)。
追加のドキュメント プロパティも指定する必要があることに注意してください。ほとんどのチュートリアルでは(LSHandlerRank, Alternate)
、キーと値のペアとして入力されていますが、これには理由がありませんでした。にも対応しているよう(foo, bar)
です。
次に、アプリを実行してデバイスに登録します。
メールアプリに添付ファイルなどの PDF がある場合、アプリがリストに表示されます。
最後に、AppDelegate で次のメソッドを実装する必要があります。
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"App opened with url %@", url);
return YES;
}
アプリが PDF を受信するたびに呼び出されます。ファイルは「受信箱」と呼ばれる特別なフォルダに入れられ、提供されたファイルの名前を示す URL が表示されます。
編集
これは、私の iPhone からのコンソール出力の例です。
2015-03-19 15:27:32.841 so 29147257[3951:1529409] App opened with url file:///private/var/mobile/Containers/Data/Application/A5723926-F869-49C0-A2AF-756795932B81/Documents/Inbox/first-1.pdf
これは、iOS 8 以降 (および OS X 10.10 以降) で実装された新しい機能です。それは拡張機能と呼ばれます。拡張機能を使用すると、アプリは Apple サンドボックスを離れて、通知センターや共有シートなど、OS の他の部分にアクセスできます。Apple は次のように説明しています。
iOS 8.0 および OS X v10.10 以降では、アプリ拡張機能を使用して、カスタム機能とコンテンツをアプリの枠を超えて拡張し、他のアプリやシステムを使用しているユーザーが利用できるようにすることができます。特定のタスクを有効にするアプリ拡張機能を作成します。ユーザーが拡張機能を取得すると、それを使用してさまざまなコンテキストでそのタスクを実行できます。たとえば、ソーシャル共有 Web サイトへの共有を可能にする拡張機能を提供すると、ユーザーはそれを使用して Web サーフィン中にコメントを投稿できます。または、現在のスポーツのスコアを表示する拡張機能を提供する場合、ユーザーはそれを通知センターに配置して、[今日] ビューを開いたときに最新のスコアを取得できるようにすることができます。ユーザーが iOS システム キーボードの代わりに使用できるカスタム キーボードを提供する拡張機能を作成することもできます。
Apple Watch アプリを含む、いくつかの異なる種類の拡張機能があります。これらすべてのタイプは、Apple のドキュメントで確認できます。
拡張機能の構築を開始するためのリソースを次に示します。
info.plist で UTImportedTypeDeclarations を使用する必要があります。
このhttp://www.raywenderlich.com/1948/how-integrate-itunes-file-sharing-with-your-ios-appの優れたチュートリアル