Paolpa
Paolpa

Reputation: 319

How send image to WhatsApp from my application?

In July 2013 WhatsApp opened their URL schemes for our apps. I have sent text to Whatsapp from my application, but now I would like send a image. How send a image to Whatsapp?

I'm not sure how do it.

Thank you.

Upvotes: 2

Views: 13869

Answers (2)

Tobias Theil
Tobias Theil

Reputation: 21

Here is a finally working solution for Swift. The method is triggered by a button. you can find some more explanations here

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)
    }
}

Upvotes: 2

Daniel Amitay
Daniel Amitay

Reputation: 6667

Per their documentation, you need to use UIDocumentInteractionController. To selectively display only Whatsapp in the document controller (it is presented to the user, at which point they can select Whatsapp to share to), follow their instructions:

Alternatively, if you want to show only WhatsApp in the application list (instead of WhatsApp plus any other public/*-conforming apps) you can specify a file of one of aforementioned types saved with the extension that is exclusive to 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

You need to save the image to disk, and then create a UIDocumentInteractionController with that file URL.

Here is some example code:

_documentController = [UIDocumentInteractionController interactionControllerWithURL:_imageFileURL];
_documentController.delegate = self;
_documentController.UTI = @"net.whatsapp.image";
[_documentController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]

Upvotes: 6

Related Questions