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:
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:
Voici mes conclusions jusqu'à présent:
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.
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.
(Les italiques signifient que les icônes peuvent être masquées.)
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.
Extension de partage par défaut; Par défaut présente l'extension d'action de l'interface utilisateur.
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]