【问题标题】:How to create a react native ios share extension app如何创建一个反应原生 ios 共享扩展应用程序
【发布时间】:2018-11-03 19:00:35
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

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

您需要更改/扩展/重写 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>

NSExtensionActivationRule 的所有密钥都可以在here 中找到。

【讨论】:

    【解决方案2】:

    我通过在 info plist 中添加它来修复它

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

    【讨论】:

      【解决方案3】:

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

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

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

      为了确认它已正确完成,此设置应显示在 XCode 中并允许成功构建:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多