web-dev-qa-db-ja.com

iOS共有vsアクションアプリ拡張

アプリ拡張機能を実装したいのですが、共有拡張機能として実装するかアクション拡張機能として実装するかを決定できません。

ドキュメント は違いについてはあまり言及しておらず、これだけです:

  • 共有(iOSおよびOS X):共有Webサイトに投稿するか、他のユーザーとコンテンツを共有します
  • アクション(iOSおよびOS X; UIおよび非UIバリアント):ホストアプリで生成されたコンテンツの操作または表示

技術的な違いもありますか(たとえば、Action拡張機能はShare拡張機能ではできないことを可能にしますか)、または単なる慣習ですApple物事を少なくするために従うことを望んでいますユーザーを混乱させますか?

少なくとも1つの違いは、非UIアクションが必要な場合は、共有拡張機能ではなくアクションを選択する必要があることです。

他の違いは何ですか?

私が探しているものの例:

  • どちらもUIをカスタマイズできますか?
  • 両方とも使用するデフォルトUIを提供してくれますか?
  • 両方に同じアクセス許可がありますか?
  • どちらもホストアプリから同じ入力を受け取りますか?
  • 両方が同じデータをホストアプリに送り返すことはできますか?
38
Senseful

これまでの私の発見は次のとおりです。

概要:

  • アイコン:共有拡張機能には色付きのアイコンがあります。
  • アイコンの場所:Safariなどの一部のアプリには、アイコンと競合する隠されないアクティビティアイコンが大量にあります。
  • ユーザーインターフェイス:共有拡張機能には一貫したUIが必要です。
  • Intent:共有拡張機能はコンテンツを共有するために予約されていますが、Appleはこの要件に違反しています。

アイコン

共有拡張機能には、アプリのメインアイコンと同じ色のアイコンが表示されます。実際、Appleは次のように述べています。「Share拡張ターゲットで別のアイコンを指定すると、Xcodeはそれを無視します。」[B]

アクション拡張機能は、「アプリアイコンの単色バージョン」を使用します。[E] または「テンプレートイメージバージョン」[B] アプリのアイコンの。

enter image description here


アイコンの場所

共有拡張機能は中央の行に表示され、アクション拡張機能は下の行に表示されます。

ターゲットとなるアプリによっては、共有とアクションの拡張機能として、アイコンが多かれ少なかれアイコンと競合する場合があります。たとえば、ユーザーが主にSafariを介して拡張機能にアクセスする場合、アプリはデフォルトで共有拡張機能*として他の4つのアイコン、またはアクション拡張機能として他の8つのアイコンと競合します。一方、マップアプリをターゲットにしている場合、アクション拡張機能(2)ではなく、共有拡張機能(4)としてより多くのアイコンと競合します。

したがって、ユーザーへの露出を最大限にするには、Safariをターゲットにする場合は共有拡張機能を選択し、マップをターゲットにする場合はアクション拡張機能を選択します。

注:ほとんどのアクティビティは、 IActivity および IActivityViewController APIを使用してホストアプリ自体によって提供されます。 NSHipsterでのそれらに関するすばらしい記事 があります。

*明らかに、共有およびアクティビティ拡張の数は、インストールされているアプリと、ユーザーが表示/非表示を選択したアプリに応じて変わります。

IOS 9.1シミュレーターの例:

  • 連絡先:
    • 共有(1):メール
    • アクティビティ(0):
  • マップ:
    • 共有(4):メール、リマインダー、Twitter、Facebook
    • アクティビティ(2):お気に入りに追加、印刷
  • ニュース:
    • 共有(4):メール、リマインダー、Twitter、Facebook
    • アクティビティ(5):閲覧リストに追加、コピー、Safariで開く、懸念事項の報告、チャンネルのミュート
  • 写真:
    • 共有(4):メール、Twitter、Facebook、Flickr
    • アクティビティ(6):コピー、スライドショー、非表示、連絡先に割り当て、壁紙として使用、印刷
  • サファリ:
    • 共有(4):メール、リマインダー、Twitter、Facebook
    • アクティビティ(10):お気に入りに追加、ブックマークを追加、閲覧リストに追加、ホーム画面に追加、共有リンクに追加、ニュースに追加、コピー、印刷、ページの検索、デスクトップサイトの要求
  • (強調表示されたテキスト):
    • 共有(3):メール、Twitter、Facebook
    • アクティビティ(1):コピー

(斜体は、アイコンを非表示にできることを意味します。)


ユーザーインターフェース

デフォルトShare拡張テンプレートには、物事の一貫性を保つために SLComposeServiceViewController のサブクラスが付属しています。そして、Appleは、[可能な限り]共有拡張機能でシステム提供のUIを使用する]ことを望んでいます。[E]

アクション拡張、一方で、アクションタイプPresents User Interfaceまたはユーザーインターフェイスなし)、前者には空白のUIViewControllerが付属しています。

enter image description hereenter image description here
デフォルトの共有拡張子。デフォルトは、ユーザーインターフェイスアクション拡張を提示します。


意図

Appleは、Share拡張機能が「共有Webサイトに投稿するか、他のユーザーとコンテンツを共有する」と述べていますが、[A] たとえリマインダーでこの要件に違反していても。

アクション拡張機能は、「ホストアプリで作成されたコンテンツを操作または表示する」ことを目的としています。[A]


同じもの

  • どちらも、アプリで拡張機能の複数のバージョンを提供できます。 (たとえば、アプリは2つの共有拡張機能と2つのアクション拡張機能を提供できます。)
  • 私の限られたテストでは、これらは両方ともデフォルトで無効になっているようで、ユーザーは共有/アクション拡張機能を有効にするために明示的に詳細ボタンをタップする必要があります。

参照資料

77
Senseful