2015-05-02 25 views
9

Görüntüyü paylaşmak için UIActivityViewController kullanıyorum. WhatsApp'ın son paylaşıma izin vermesinin ardından, paylaşım seçeneğinde WhatsApp'ı görebiliyorum. Bir resim ve mesaj paylaşıyorum, metin mesajını görebiliyorum ancak görüntüleri paylaşamıyorum. Aynı kod Viber, FB, twitter vb. Ile iyi çalışıyor, WhatsApp için neyi kaçırdığımı bilmiyorum.Swift UIActivityViewController Image Share çalışmıyor

func shareImage() { 
    var messageStr:String = "Check out my awesome photo!" 
    var img: UIImage = currentPhoto! 

    var shareItems:Array = [img, messageStr] 

    let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil) 
    activityViewController.excludedActivityTypes = [UIActivityTypePrint, UIActivityTypePostToWeibo, UIActivityTypeCopyToPasteboard, UIActivityTypeAddToReadingList, UIActivityTypePostToVimeo] 

    self.presentViewController(activityViewController, animated: true, completion: nil) 

} 
+0

WhatsApp SSS http://www.whatsapp.com/faq/en/iphone/23559013 –

+0

Umarım bunlar önceki tekniklerdir, geçen hafta tanıttığı iOS 8 paylaşım uzantısını kullanmak istedim. Benim sorunum messageStr ama UIImage img. –

+1

Görüntüyü yalnızca 'shareItems' dizisi yalnızca 'img' içeriyorsa paylaşabiliyor gibi görünüyor. Yani bence WhatsApp'a kalmış. – Satachito

cevap

5

Paylaşmak için Metin || Image bu Swift'i deneyin.

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

aynen böyle diyoruz paylaşmak için:

Swift 3 kullanım

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

    } 

uygulama "plist"

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

Bu kodu ekle Bu kodu olarak

let imageToShare = UIImage(named: "myImage") 
share(shareText: "Sharing this text", shareImage: imageToShare) 
+2

Öneri: 'shareText! = Nil || shareImage! = nil 'to objectToShare.count> 0' –

+0

Zaid Pathan --- benim için değil sadece paylaşma metin veya sadece görüntü paylaşmak değil ... ben de facebook ve whatsapp ile denedim –

+0

BLacKhoLE Can 'shareText', 'shareImage' nı kontrol edin nil değil? –

17

Yalnızca dizi görüntü ve metin birleşimi içermediğinde WhatsApp paylaşımları görüntüsüne benziyor.

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

Her ikisini de eklemenin bir yolu var mı? – Amulya

+0

Hayır. Şimdi whatsApp ile nasıl çalışır. Gelecekte değiştirebilirler. –

+0

Uygulamamın logosunu paylaşmak istiyorum ancak resim artar ve bazen de kesilir. Facebook/whatsapp/twitter/mail için paylaşırken görüntü için herhangi bir boyut var mı? –

İlgili konular