Swift UIActivityViewController Image Share not working

前端 未结 3 1478
北荒
北荒 2021-02-13 19:23

I am using UIActivityViewController to share image. After the WhatsApp recent changes to allow share i am able to see WhatsApp in the share option. I am sharing an

相关标签:
3条回答
  • 2021-02-13 19:51

    It seems like WhatsApp shares image only when the array contains images and not combination of both image and text.

    func shareImage() {
        //var messageStr:String  = "Check out my awesome iPicSafe photo!"
        var img: UIImage = currentPhoto!
        //var shareItems:Array = [img, messageStr]
        var shareItems:Array = [img]
        let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
        activityViewController.excludedActivityTypes = [UIActivityTypePrint, UIActivityTypePostToWeibo, UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList, UIActivityTypePostToVimeo]
        self.presentViewController(activityViewController, animated: true, completion: nil)
    }
    
    0 讨论(0)
  • 2021-02-13 19:52

    In Swift 3 use this code

     @IBAction func whatsappShareWithImages(_ sender: AnyObject)
        {
    
            let urlWhats = "whatsapp://app"
            if let urlString = urlWhats.addingPercentEncoding(withAllowedCharacters:CharacterSet.urlQueryAllowed) {
                if let whatsappURL = URL(string: urlString) {
    
                    if UIApplication.shared.canOpenURL(whatsappURL as URL) {
    
                        if let image = UIImage(named: "whatsappIcon") {
                            if let imageData = UIImageJPEGRepresentation(image, 1.0) {
                                let tempFile = URL(fileURLWithPath: NSHomeDirectory()).appendingPathComponent("Documents/whatsAppTmp.wai")
                                do {
                                    try imageData.write(to: tempFile, options: .atomic)
                                    self.documentInteractionController = UIDocumentInteractionController(url: tempFile)
                                    self.documentInteractionController.uti = "net.whatsapp.image"
                                    self.documentInteractionController.presentOpenInMenu(from: CGRect.zero, in: self.view, animated: true)
    
                                } catch {
                                    print(error)
                                }
                            }
                        }
    
                    } else {
                        // Cannot open whatsapp
                    }
                }
            }
    
        }
    

    Add this code in your app "plist"

      <key>LSApplicationQueriesSchemes</key>
        <array>
            <string>whatsapp</string>
        </array>
    

    You can also refer to small app for reference : https://github.com/nithinbemitk/iOS-Whatsapp-Share

    0 讨论(0)
  • 2021-02-13 20:03

    To share Text || Image try this Swift.

    func share(shareText shareText:String?,shareImage:UIImage?){
    
        var objectsToShare = [AnyObject]()
    
        if let shareTextObj = shareText{
            objectsToShare.append(shareTextObj)
        }
    
        if let shareImageObj = shareImage{
            objectsToShare.append(shareImageObj)
        }
    
        if shareText != nil || shareImage != nil{
            let activityViewController = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
            activityViewController.popoverPresentationController?.sourceView = self.view
    
            presentViewController(activityViewController, animated: true, completion: nil)
        }else{
            print("There is nothing to share")
        }
    }
    

    To share just call like this:

    let imageToShare = UIImage(named: "myImage")
    share(shareText: "Sharing this text", shareImage: imageToShare)
    
    0 讨论(0)
提交回复
热议问题