2015-05-02 77 views
9

我正在使用UIActivityViewController來共享圖像。在WhatsApp最近更改允許共享後,我可以在共享選項中看到WhatsApp。我正在分享圖片和消息,我可以看到短信,但我無法分享圖片。相同的代碼適用於Viber,FB,微博等,不知道我缺少什麼WhatsApp。Swift UIActivityViewController圖像共享不起作用

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 FAQ http://www.whatsapp.com/faq/en/iphone/23559013 –

+0

我希望這些是早期的技術,我想使用上週推出的iOS 8共享擴展WhatsApp。我的問題是我能分享messageStr但不是UIImage img。 –

+1

只有'shareItems'數組只包含'img'時,它似乎才能共享圖像。所以我認爲這取決於WhatsApp。 – Satachito

回答

5

要共享文本||圖片試試這個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") 
    } 
} 

要共享只需要調用是這樣的:

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

建議:更改'shareText!= nil || shareImage!= nil'到'objectsToShare.count> 0' –

+0

Zaid Pathan ---不適合我的只有共享文本或共享圖像不是兩個...我也試過facebook&whatsapp太 –

+0

@bLacKhoLE 你能檢查'shareText','shareImage'不是零? –

17

似乎只有當數組包含圖像而不是圖像和文本的組合時,WhatsApp纔會共享圖像。

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

有沒有添加兩者的方法? – Amulya

+0

不。這就是它現在與whatsApp協同工作的方式。他們可能會在未來改變它。 –

+0

我想分享我的應用程序的徽標,但圖像增加,有時也會減少。分享facebook/whatsapp/twitter/mail時,圖像是否有任何尺寸? –

0

在斯威夫特3使用此代碼

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

    } 

在您的應用程序 「的plist」

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

添加該代碼您也可以參考小應用程序以供參考:https://github.com/nithinbemitk/iOS-Whatsapp-Share

相關問題