如何创建React Native iOS共享扩展应用程序

时间:2018-11-03 19:00:36

标签: javascript ios react-native react-native-ios ios8-share-extension

我希望我的react-native应用程序可以从Whatsapp,Skype和Photos中共享。我尝试使用react-native-share-extension,但它仅在Safari浏览器中显示扩展名。

如何在iOS的react-native中在Safari以外的应用程序中实现共享功能?

3 个答案:

答案 0 :(得分:0)

这是因为默认设置(如果此程序包用于共享与您的应用程序的网址)。

您需要在共享扩展的NSExtensionActivationRule中更改/扩展/重写Config.plist,并继续使用react-native-share-extension软件包。直接在from authorApple docs中详细了解此键。

因此您可以完全重写规则以应用例如pdf文件(如苹果文档中所述):

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

可以找到here的所有NSExtensionActivationRule键。

答案 1 :(得分:0)

我通过在info plist中添加它来解决了该问题

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

答案 2 :(得分:0)

默认情况下,react-native-share-extension仅允许从浏览器共享URL。如果要告诉系统在共享您似乎错过的URL时显示扩展名,则需要添加一些额外的配置。

对于iOS,您只需更新Info.plist文件并添加以下内容:

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

要确认设置正确,应在XCode中显示此设置并允许成功构建: