アプリ拡張機能を実装したいのですが、共有拡張機能として実装するかアクション拡張機能として実装するかを決定できません。
ドキュメント は違いについてはあまり言及しておらず、これだけです:
技術的な違いもありますか(たとえば、Action拡張機能はShare拡張機能ではできないことを可能にしますか)、または単なる慣習ですApple物事を少なくするために従うことを望んでいますユーザーを混乱させますか?
少なくとも1つの違いは、非UIアクションが必要な場合は、共有拡張機能ではなくアクションを選択する必要があることです。
他の違いは何ですか?
私が探しているものの例:
これまでの私の発見は次のとおりです。
共有拡張機能には、アプリのメインアイコンと同じ色のアイコンが表示されます。実際、Appleは次のように述べています。「Share拡張ターゲットで別のアイコンを指定すると、Xcodeはそれを無視します。」[B]
アクション拡張機能は、「アプリアイコンの単色バージョン」を使用します。[E] または「テンプレートイメージバージョン」[B] アプリのアイコンの。
共有拡張機能は中央の行に表示され、アクション拡張機能は下の行に表示されます。
ターゲットとなるアプリによっては、共有とアクションの拡張機能として、アイコンが多かれ少なかれアイコンと競合する場合があります。たとえば、ユーザーが主にSafariを介して拡張機能にアクセスする場合、アプリはデフォルトで共有拡張機能*として他の4つのアイコン、またはアクション拡張機能として他の8つのアイコンと競合します。一方、マップアプリをターゲットにしている場合、アクション拡張機能(2)ではなく、共有拡張機能(4)としてより多くのアイコンと競合します。
したがって、ユーザーへの露出を最大限にするには、Safariをターゲットにする場合は共有拡張機能を選択し、マップをターゲットにする場合はアクション拡張機能を選択します。
注:ほとんどのアクティビティは、 IActivity および IActivityViewController APIを使用してホストアプリ自体によって提供されます。 NSHipsterでのそれらに関するすばらしい記事 があります。
*明らかに、共有およびアクティビティ拡張の数は、インストールされているアプリと、ユーザーが表示/非表示を選択したアプリに応じて変わります。
(斜体は、アイコンを非表示にできることを意味します。)
デフォルトShare拡張テンプレートには、物事の一貫性を保つために SLComposeServiceViewController のサブクラスが付属しています。そして、Appleは、[可能な限り]共有拡張機能でシステム提供のUIを使用する]ことを望んでいます。[E]
アクション拡張、一方で、アクションタイプ(Presents User Interfaceまたはユーザーインターフェイスなし)、前者には空白のUIViewControllerが付属しています。
Appleは、Share拡張機能が「共有Webサイトに投稿するか、他のユーザーとコンテンツを共有する」と述べていますが、[A] たとえリマインダーでこの要件に違反していても。
アクション拡張機能は、「ホストアプリで作成されたコンテンツを操作または表示する」ことを目的としています。[A]