提问人:Scoota P 提问时间:11/17/2023 最后编辑:HangarRashScoota P 更新时间:11/22/2023 访问量:67
如何在 iOS 17 中实现“与应用程序共享”功能?
How to implement "Share with apps" functionality in iOS 17?
问:
我正在尝试创建一个应用程序扩展,我可以使用“与应用程序共享”操作在快捷方式中使用该扩展。我创建了扩展程序,它显示在常规共享表中,用于共享任何内容。但是,当我进入快捷方式应用程序以创建使用“与应用程序共享”操作的自动化并尝试选择我的应用程序时,我只能看到健康,LinkedIn,松弛,提醒和其他一些应用程序。此共享功能与常规共享功能有何不同?
有谁知道如何让他们的应用程序显示在使用“与应用程序共享”操作的快捷方式中时可以选择的应用程序列表中?
答:
股份延期确实是实现这一目标的必经之路。根据您的屏幕截图,您似乎已经实现了该扩展。
我在 iOS 模拟器中重新创建了与您相同的快捷方式,并且 actuall 设法使用您在问题中使用的相同方式使共享扩展工作。话虽如此,有一种更简单的方法可以对以下配置执行相同的操作:NSActivationRule
在共享扩展目标中,应包含如下内容:Info.plist
<key>NSExtension</key>
<dict>
<key>NSExtensionMainStoryboard</key>
<string>MainInterface</string>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.share-services</string>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
</dict>
NSExtensionPointIdentifier
定义扩展的类型,这里是共享扩展,NSExtensionMainStoryboard
指向包含共享扩展 UI 的情节提要,NSExtensionActivationRule
定义共享表何时应根据要共享的数据的 UTI 类型显示扩展。
此处,激活规则设置为计数为 1。这意味着扩展仅在共享单个图像时显示,这就是快捷方式的作用。请注意,这只是一个速记,与问题中的激活规则执行相同的操作。NSExtensionActivationSupportsImageWithMaxCount
在模拟器上测试
另一件需要考虑的事情是,Xcode 有时会在模拟器或设备上部署最新版本的扩展时出现问题。我发现最可靠的测试方法是运行扩展目标,然后选择快捷方式应用程序作为主机应用程序。
在设备上进行测试
最后,在设备上,“与应用共享”步骤似乎仅列出使用分发证书签名的应用程序。一旦 TestFlight 版本在模拟器中工作,它可能是在您的设备上测试它的方法。
评论
您是否在?info.plist
例如,如果扩展支持:
- 文本>
public.text
- 或者,图像>
public.image
信息.plist
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>Public Text</string>
<key>LSItemContentTypes</key>
<array>
<string>public.text</string>
</array>
</dict>
<dict>
<key>CFBundleTypeName</key>
<string>Public Image</string>
<key>LSItemContentTypes</key>
<array>
<string>public.image</string>
</array>
</dict>
</array>
评论