简体   繁体   中英

How to create a react native ios share extension app

I want my react-native app to be available for share from Whatsapp, Skype, Photos.. I tried using react-native-share-extension but it is only showing the extension in the Safari browser.

How to implement the sharing feature in applications other than Safari in react-native for iOS?

This is because the default setup if this package is for sharing urls to your app.

You need to change/extend/rewrite NSExtensionActivationRule in Config.plist of your share extension and stay with react-native-share-extension package. Read more about this key from author and in Apple docs directly.

So you can rewrite entirely rule to apply eg pdf files (as said in apple docs):

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

All keys for NSExtensionActivationRule could be found here .

I fixed it by adding this in info plist

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

By default, react-native-share-extension only allows the sharing of urls from browsers. There is some extra configuration to add if you want to tell the system to show your extension when sharing a url that you seem to have missed.

For iOS, you simply need to update the Info.plist file and add the following:

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

To confirm it's done correctly, this setting should then be displayed in XCode and allow a successful build:

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM