2017-05-17 10 views
1

ボタンをクリックするとスクリーンショットが作成され、Twitter、Instagram、Facebookでこの写真を共有できるようになりました。 は、だから私は、Instagramのを除くすべてのアプリケーションのための機能があります。Swiftの社会的共有

func socialShare(sharingText: String?, sharingImage: UIImage?) { 
    var sharingItems = [AnyObject]() 

    if let text = sharingText { 
     sharingItems.append(text as AnyObject) 
    } 
    if let image = sharingImage { 
     sharingItems.append(image) 
    } 
    let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil) 

    activityViewController.excludedActivityTypes = [UIActivityType.addToReadingList, UIActivityType.print, UIActivityType.assignToContact, UIActivityType.copyToPasteboard] 

    self.present(activityViewController, animated: true, completion: nil) 
} 

をそしてInstagramの共有のための機能も:

var docController: UIDocumentInteractionController! 

func documentsDirectory() -> String { 
    return NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 
} 

func postImageToInstagram(sharingImage: UIImage?) { 



    let instagram = URL(string: "instagram://app")! 


    if UIApplication.shared.canOpenURL(instagram) { 


     let imageURL = URL(fileURLWithPath: documentsDirectory()) 

     let fullPath = imageURL.appendingPathComponent("instagram.igo") 

     do { 
      try UIImagePNGRepresentation(sharingImage!)!.write(to: fullPath) 

      let rect = CGRect(x: 0, y: 0, width: 0, height: 0) 

      let igImageHookFile = URL(string: "file://\(fullPath)") 

      docController = UIDocumentInteractionController(url: igImageHookFile!) 

      docController.uti = "com.instagram.photo" 
      docController.presentOpenInMenu(from: rect, in: self.view, animated: true) 
     } catch { 
      print(error) 
     } 
    } 
    else { 
     print("Instagram not installed") 
    } 

} 

私はそれを一緒に使用することができますどのように?彼らは別々にしか働かないので...

答えて

1

私は、InstagramがデフォルトのUIActivityViewControllerアクティビティに含まれていないことを少し迷惑にしていることがわかりました。しかし、Instagram用に独自のUIActivityを追加することはできません。すでに作成済みのメソッドでInstagramに投稿しなければならないロジックです。あなた自身のUIActivityの作成方法については、this投稿を参照してください。それはInstagramを含む大半のアウトソーシャルサービスのカスタムUIActivityを持つ派手なGitHubリポジトリへのリンクも含んでいます。

+0

私は、 'UIActivityViewController'に与えられた' activityItems'が単一の 'UIImage'とテキストしか含まれていない場合、共有オプションにInstagramが現れることに気付きました。 –

関連する問題