【问题标题】:Share PDF through WhatsApp通过 WhatsApp 分享 PDF
【发布时间】:2018-08-07 22:33:48
【问题描述】:

我想将 PDF 直接分享到 WhatsApp。

以下是我找到的在 iOS 应用程序中在 WhatsApp 中发送文本和图像的链接,但无法找到如何将 PDF 直接发送到 WhatsApp。

Share image/text through WhatsApp in an iOS app

【问题讨论】:

  • whatsapp.com/faq/en/iphone/23559013 已作为 PDF 文档 (UTI: com.adobe.pdf)
  • stackoverflow.com/a/17723981/6656 参考这个答案并阅读答案中提到的描述
  • @PoojaM.Bohora 我尝试使用此解决方案这里是我的 TEXT 部分代码。我现在正在尝试 PDF 文件,但不幸的是我无法为 PDF 文件执行此操作。 .下面是我的文本部分代码..你能帮我处理 PDF 文件部分..
  • var str = "文本头" str=str.addingPercentEncoding(withAllowedCharacters: (NSCharacterSet.urlQueryAllowed))! let whatsappURL = URL(string: "whatsapp://send?text=(str)") if let aURL = whatsappURL { if UIApplication.shared.canOpenURL(aURL) { if let aURL = whatsappURL { UIApplication.shared.open(aURL , 选项: [:], completionHandler: nil) } } }
  • 您只能使用该 url 方法共享文本。要共享 pdf,您需要使用 UIActivityController 或 UIDocumentInteractionController

标签: ios swift pdf whatsapp


【解决方案1】:

您可以使用共享扩展 (UIActivityViewController) 来共享您的 pdf 文件 URL。请注意,用户必须选择 WhatsApp 应用程序才能共享文件。如果您想先检查是否安装了 WhatsApp,则需要注意编辑您的 info.plist 并将 whatsapp 添加到您的 LSApplicationQueriesSchemes 数组:


func sharePdfWhatsApp(url: URL) {
    let whatsappURL = URL(string:"whatsapp://app")!
    // this will make sure WhatsApp it is installed
    if UIApplication.shared.canOpenURL(whatsappURL) {
        let controller = UIActivityViewController(activityItems: [url], applicationActivities: nil)
        present(controller, animated: true) {
            print("done")
        }
    }
}

【讨论】:

  • UIActivityController 不需要添加 LSApplicationQueriesSchemes - 用于打开 Whatsapp 应用程序的 whatsapp url 方案。它自动使用 Whatsapp 的 url 方案。
【解决方案2】:

首先,您必须以Data 格式检索您的 PDF 文件。

var pdfDATA:Data!

一旦您获得上述变量的数据,您就可以运行以下代码以通过 WhatsApp 发送 PDF。

self.pdfDATA = try? Data.init(contentsOf: yourFilepath)
let activitycontroller = UIActivityViewController(activityItems: [self.pdfDATA], applicationActivities: nil)
            if activitycontroller.responds(to: #selector(getter: activitycontroller.completionWithItemsHandler))
            {
                activitycontroller.completionWithItemsHandler = {(type, isCompleted, items, error) in
                    if isCompleted
                    {
                    print("completed")
                    }
            }
        }
            activitycontroller.excludedActivityTypes = [UIActivityType.airDrop]
            activitycontroller.popoverPresentationController?.sourceView = buttonItemSize
            self.present(activitycontroller, animated: true, completion: nil)

【讨论】:

  • 当我在代码上创建一个带有 UIGraphicsBeginPDFContextToData 的 pdf 文件并尝试按照您所说的 pdfDATA:Data 发送它时,WhatsApp 会发出类似此类文件无法共享的警告。所以它不接受 pdf 文件进行这样的共享。我像上面的代码一样使用 UIActivityController 进行共享,但它不起作用。有人找到分享的解决方案吗? (我想分享保存在设备的 NSDocumentDirectory 上的 pdf 文件,而不是真正的 url pdf 文件)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多