2013 年 7 月,WhatsApp 为我们的应用程序开放了他们的 URL 方案。我已经从我的应用程序向 Whatsapp 发送了文本,但现在我想发送一张图片。如何将图像发送到 Whatsapp?
我不知道怎么做。
谢谢你。
2013 年 7 月,WhatsApp 为我们的应用程序开放了他们的 URL 方案。我已经从我的应用程序向 Whatsapp 发送了文本,但现在我想发送一张图片。如何将图像发送到 Whatsapp?
我不知道怎么做。
谢谢你。
根据他们的文档,您需要使用UIDocumentInteractionController
. 要在文档控制器中选择性地仅显示 Whatsapp(它呈现给用户,此时他们可以选择 Whatsapp 进行共享),请按照他们的说明进行操作:
或者,如果您只想在应用程序列表中显示 WhatsApp(而不是 WhatsApp 以及任何其他符合公共/* 标准的应用程序),您可以指定使用 WhatsApp 独有的扩展名保存的上述类型之一的文件:
images - «.wai» which is of type net.whatsapp.image
videos - «.wam» which is of type net.whatsapp.movie
audio files - «.waa» which is of type net.whatsapp.audio
您需要将图像保存到磁盘,然后UIDocumentInteractionController
使用该文件创建一个 URL。
这是一些示例代码:
_documentController = [UIDocumentInteractionController interactionControllerWithURL:_imageFileURL];
_documentController.delegate = self;
_documentController.UTI = @"net.whatsapp.image";
[_documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]
这是 Swift 的最终解决方案。该方法由按钮触发。你可以在这里找到更多解释
import UIKit
class ShareToWhatsappViewController: UIViewController, UIDocumentInteractionControllerDelegate {
var documentController: UIDocumentInteractionController!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func shareToWhatsapp(sender: UIButton) {
let image = UIImage(named: "my_image") // replace that with your UIImage
let filename = "myimage.wai"
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, false)[0] as! NSString
let destinationPath = documentsPath.stringByAppendingString("/" + filename).stringByExpandingTildeInPath
UIImagePNGRepresentation(image).writeToFile(destinationPath, atomically: false)
let fileUrl = NSURL(fileURLWithPath: destinationPath)! as NSURL
documentController = UIDocumentInteractionController(URL: fileUrl)
documentController.delegate = self
documentController.UTI = "net.whatsapp.image"
documentController.presentOpenInMenuFromRect(CGRectZero, inView: self.view, animated: false)
}
}