10

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?

Preview
  • 35,317
  • 10
  • 92
  • 112
Trinu
  • 1,721
  • 3
  • 21
  • 41

3 Answers3

2

I fixed it by adding this in info plist

<dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>1</integer>
        </dict>
    </dict>
Trinu
  • 1,721
  • 3
  • 21
  • 41
2

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:

Preview
  • 35,317
  • 10
  • 92
  • 112
1

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 e.g. 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.

seclace
  • 98
  • 7