web-dev-qa-db-fra.com

Partage iOS vs extension d'application Action

Je souhaite implémenter une extension d'application, mais je ne peux pas décider si je dois l'implémenter en tant qu'extension de partage ou extension d'action.

La documentation ne dit pas grand-chose sur les différences, juste ceci:

  • Partager (iOS et OS X) : publier sur un site Web de partage ou partager du contenu avec d'autres
  • Action (iOS et OS X; variantes UI et non UI) : Manipuler ou afficher le contenu provenant d'une application hôte

Existe-t-il également des différences techniques (par exemple, une extension Action me permet-elle de faire quelque chose que l'extension Share ne fait pas), ou s'agit-il simplement d'une convention Apple veut que vous suiviez pour réduire les choses déroutant pour les utilisateurs?

Il semble qu'au moins une différence est que si vous voulez une action non-UI, vous devez choisir une action au lieu d'une extension de partage.

Quelles sont les autres différences?

Exemples de choses que je recherche:

  • Les deux me permettent-ils de personnaliser l'interface utilisateur?
  • Les deux me donnent-elles une interface utilisateur par défaut à utiliser?
  • Ont-ils tous les deux les mêmes autorisations, ou suis-je autorisé à faire plus de choses dans l'un contre l'autre?
  • Reçoivent-ils tous les deux la même entrée de l'application Hôte?
  • Peuvent-ils tous deux renvoyer les mêmes données à l'application hôte?
38
Senseful

Voici mes conclusions jusqu'à présent:

Sommaire:

  • Icône: Les extensions de partage ont des icônes colorées.
  • Emplacement de l'icône: Certaines applications, comme Safari, ont une grande quantité d'icônes d'activité non masquables avec lesquelles votre icône serait en concurrence.
  • Interface utilisateur: Les extensions de partage doivent avoir une interface utilisateur cohérente.
  • Intention: Les extensions de partage sont censées être réservées au partage de contenu, mais même Apple viole cette exigence.

Icône

Les extensions de partage reçoivent une icône colorée, qui est la même que l'icône principale de votre application. En fait, Apple déclare: "Si vous fournissez une icône distincte dans votre cible d'extension de partage, Xcode l'ignore."[B]

Les extensions d'action utilisent "une version monochromatique de l'icône de l'application",[E] ou "une version d'image modèle"[B] de l'icône de votre application.

enter image description here


Emplacement de l'icône

Les extensions de partage apparaissent sur la ligne du milieu, les extensions d'action apparaissent sur la ligne du bas.

Selon l'application ciblée, votre icône peut être en concurrence avec plus ou moins d'icônes en tant qu'extension de partage contre action. Par exemple, si les utilisateurs doivent accéder à votre extension via Safari principalement, votre application sera en concurrence avec 4 autres icônes par défaut comme extension de partage *, ou 8 autres icônes comme extension d'action. D'un autre côté, si vous ciblez l'application Maps, vous seriez en concurrence avec plus d'icônes en tant qu'extension de partage (4) plutôt qu'en tant qu'extension d'action (2).

Par conséquent, pour maximiser votre exposition à l'utilisateur, vous souhaitez choisir une extension de partage lors du ciblage de Safari, mais une extension d'action lors du ciblage de Maps.

Remarque: La plupart des activités sont fournies par l'application hôte elle-même à l'aide des API IActivity et IActivityViewController . Il y a un grand article à leur sujet sur NSHipster .

* Évidemment, le nombre d'extensions de partage et d'activité change en fonction des applications installées et que l'utilisateur a choisi d'afficher/masquer.

Exemples du simulateur iOS 9.1:

  • Contacts:
    • Partager (1): Mail
    • Activités (0):
  • Plans:
    • Partager (4): Mail, Rappels, Twitter, Facebook
    • Activités (2): Ajouter aux favoris, Imprimer
  • Nouvelles:
    • Partager (4): Mail, Rappels, Twitter, Facebook
    • Activités (5): ajouter à la liste de lecture, copier, ouvrir dans Safari, signaler un problème, désactiver le canal
  • Photos:
    • Partager (4): Mail, Twitter, Facebook, Flickr
    • Activités (6): Copier, Diaporama, Masquer, Attribuer au contact, Utiliser comme fond d'écran, Imprimer
  • Safari:
    • Partager (4): Mail, Rappels, Twitter, Facebook
    • Activités (10): Ajouter aux favoris, Ajouter un signet, Ajouter à la liste de lecture, Ajouter à l'écran d'accueil, Ajouter aux liens partagés, Ajouter aux nouvelles, Copier, Imprimer, Rechercher sur la page, Demander le bureau Site
  • (Texte en surbrillance):
    • Partager (3): Mail, Twitter, Facebook
    • Activités (1): Copie

(Les italiques signifient que les icônes peuvent être masquées.)


Interface utilisateur

Le modèle Extension de partage par défaut est livré avec une sous-classe SLComposeServiceViewController pour garder les choses cohérentes. Et Apple veut que vous "utilisiez l'interface utilisateur fournie par le système dans une extension de partage [autant que possible]". "[E]

Extensions d'action, d'autre part, vous permettent de choisir un Type d'action ( Présente l'interface utilisateur ou Aucune interface utilisateur ), le premier étant livré avec un UIViewController vide.

enter image description hereenter image description here
Extension de partage par défaut; Par défaut présente l'extension d'action de l'interface utilisateur.


Intention

Bien que Apple indique qu’une extension de partage doit "publier sur un site Web de partage ou partager du contenu avec d’autres",[A] même ils violent cette exigence avec des rappels.

Les extensions d'action sont destinées à "manipuler ou afficher le contenu provenant d'une application hôte".[A]


Les choses qui sont les mêmes

  • Les deux permettent à votre application de fournir plusieurs versions de l'extension. (Par exemple, votre application peut fournir deux extensions de partage et deux extensions d'action.)
  • Dans mes tests limités, ils semblent tous deux désactivés par défaut, l'utilisateur devant appuyer explicitement sur le bouton plus pour activer l'extension de partage/action.

Les références

77
Senseful