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 背景颜色

UIActivityViewController 共享 UIActivity 未显示

UIActivityViewController 不适用于 WKWebView

限制 UIActivityViewController 共享扩展活动

尝试呈现 UIActivityViewController 时崩溃

更改 UIActivityViewController 的 navigationBar 的颜色