UIActivityViewController,iOS,swift

UIActivityViewController, iOS, swift

我是否需要在 UIActivityViewController 中为我的另一个应用程序显示我的应用程序而不使用扩展?可能吗?

并且还需要当我点击 UIActivity ViewController 中显示的其他应用程序时将我转移到该应用程序。(如果可能的话?)

我已经查看了以下 SO 线程 I need to show my App in UIActivityViewController for All Applications as Action Extension(Default),但这是通过扩展完成的。

例如,在 iOS 11.0 及更高版本中,它会提供 myfile 应用程序,当我点击 pdf 时,它会显示 files.In 这个文件,但当我点击共享按钮时,它会显示自己的 pdfviewer为我提供另一个添加的 pdfviewer 阅读和该应用程序支持的其他功能,并将我转移到该应用程序。

是否可以使用 Action Extension?

谢谢。

这取决于您是要接收文档还是数据。

如果您想被列为“打开方式”或“复制到”,对于 PDF 等文档类型,只需在 Info.plist 中声明您是该文档类型的查看者即可。

否则,要直接通过 activity 视图接收数据,请使用要在 activity 视图中列出的操作或共享扩展。

终于找到答案了

当我使用 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>

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

谢谢