UIActivityViewController,iOS,斯威夫特
Posted
技术标签:
【中文标题】UIActivityViewController,iOS,斯威夫特【英文标题】:UIActivityViewController, iOS, swift 【发布时间】:2018-03-19 12:59:18 【问题描述】:我是否需要在 UIActivityViewController 中为我的另一个应用程序显示我的应用程序而不使用扩展程序?有可能吗?
当我点击 UIActivity ViewController 中显示的其他应用程序时,还需要将我转移到该应用程序中。(如果可能?)
我已经看过下面的 SO Thread I need to show my App in UIActivityViewController for All Applications as Action Extension(Default),但这是通过扩展完成的。
例如,在 ios 11.0 及更高版本中,它提供了显示文件的 myfile 应用程序。在此文件中,当我点击 pdf 时,它显示自己的 pdfviewer,但当我点击共享按钮时,它为我提供了另一个添加的 pdfviewer 来阅读和该应用程序支持的其他功能并将我转移到该应用程序。
是否可以通过操作扩展来实现?
谢谢。
【问题讨论】:
相关:***.com/questions/35931946/… 谁能告诉我为什么它会被否决?所以我会在以后的帖子中小心翼翼。 【参考方案1】:这取决于您是要接收文件还是数据。
如果您想在“打开方式”或“复制到”中列出,对于 PDF 等文档类型,只需在 Info.plist 中声明您是该文档类型的查看者。
否则,要直接通过活动视图接收数据,请使用要在活动视图中列出的操作或共享扩展。
【讨论】:
能否请您将 info.plist 中所需的声明发给我?【参考方案2】:终于找到答案了
当我使用 UIDocumentInteractionController 时,这向我展示了我的另一个支持“pdf”的应用程序,并在 info.plist 中添加了@matt 提供的属性。
以下代码在父应用程序中使用,因此当触摸按钮时,它会显示如下图所示的结果。 这是我的代码:-
@IBAction func ShareDocAction(_ sender : UIButton)
let fileUrl = Bundle.main.url(forResource: "Terms_Condition", withExtension: "pdf")
self.documentController = UIDocumentInteractionController(url: fileUrl!)
DispatchQueue.main.async
self.documentController.presentOptionsMenu(from: self.actionButton.frame, in: self.view, animated: true)
在子应用中,我们需要在 info.plist 中添加以下代码:-
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>PDF Document</string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>LSItemContentTypes</key>
<array>
<string>com.adobe.pdf</string>
</array>
</dict>
</array>
这里附上我的图片展示整个场景
谢谢
【讨论】:
以上是关于UIActivityViewController,iOS,斯威夫特的主要内容,如果未能解决你的问题,请参考以下文章
UIActivityViewController 共享 UIActivity 未显示
UIActivityViewController 不适用于 WKWebView
限制 UIActivityViewController 共享扩展活动