【问题标题】: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 author 和Apple 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 中并允许成功构建: