【问题标题】:UIActivityViewController, iOS, swiftUIActivityViewController,iOS,斯威夫特
【发布时间】: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 来阅读和该应用程序支持的其他功能并将我转移到该应用程序。

是否可以通过操作扩展来实现?

谢谢。

【问题讨论】:

标签: ios swift share uiactivityviewcontroller


【解决方案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>

这里附上我的图片展示整个场景

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2017-07-22
    • 2017-03-24
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多