如何创建 React Native ios 分享扩展应用

How to create a react native ios share extension app

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

如何在react-native for iOS中实现非Safari应用的分享功能?

这是因为默认设置,如果此包用于共享 url 到您的应用程序。

您需要 change/extend/rewrite NSExtensionActivationRuleConfig.plist 的共享扩展中,并继续使用 react-native-share-extension 包。直接阅读有关此密钥的更多信息 from author and in Apple docs

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

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

可以找到 NSExtensionActivationRule 的所有键 here

我通过在信息 plist 中添加这个来修复它

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

默认情况下,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 中并允许成功构建: