web-dev-qa-db-fra.com

Comment créer une application d'extension de partage native pour iOS

Je souhaite que mon application react-native soit disponible pour le partage à partir de Whatsapp, Skype, Photos .. J'ai essayé d'utiliser react-native-share-extension mais elle ne montre que l'extension dans le navigateur Safari.

Comment implémenter la fonctionnalité de partage dans des applications autres que Safari dans react-native pour iOS?

6
Trinu

Je l'ai corrigé en ajoutant ceci dans le plist info

<dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>1</integer>
        </dict>
    </dict>
0
Trinu

Par défaut, react-native-share-extension autorise uniquement le partage des URL à partir des navigateurs. Il y a une configuration supplémentaire à ajouter si vous souhaitez que le système affiche votre extension lors du partage d'une URL que vous semblez avoir manquée.

Pour iOS, vous devez simplement mettre à jour le fichier Info.plist et ajouter les éléments suivants:

<key>NSExtensionAttributes</key>
<dict>
  <key>NSExtensionActivationRule</key>
  <dict>
    <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
    <integer>1</integer>
  </dict>
</dict>

Pour confirmer qu'il est correctement effectué, ce paramètre doit ensuite être affiché dans XCode et permettre une construction réussie:

0
Balthazar

Cela est dû au fait que la configuration par défaut si ce package concerne le partage d’URL avec votre application.

Vous devez modifier/étendre/réécrire NSExtensionActivationRule dans Config.plist de votre extension de partage et rester avec le paquet react-native-share-extension. En savoir plus sur cette clé de l'auteur et dans Documents Apple directement.

Ainsi, vous pouvez entièrement réécrire la règle à appliquer, par exemple. fichiers pdf (comme indiqué dans les documents Apple):

<key>NSExtensionAttributes</key>
<dict>
    <key>NSExtensionActivationRule</key>
    <string>
        {extensionItems = ({
            attachments = ({
                registeredTypeIdentifiers = (
                    "com.Adobe.pdf",
                    "public.file-url"
                );
            });
        })}
    </string>
</dict>

Toutes les clés de NSExtensionActivationRule sont disponibles ici .