2017-05-17 7 views
1

버튼을 클릭하면 스크린 샷을 만든 다음 Twitter, Instagram 및 Facebook에서이 사진을 공유 할 수있는 기능을 작성했습니다. 그래서 나는 인스 타 그램을 제외한 모든 앱에 대한 기능이 있습니다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) 
} 

을 그리고 인스 타 그램 공유를위한 기능도 :

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을 (를) 작성하는 방법에 대한 SO의 게시물 this을 (를) 참조하십시오. 심지어 Instagram을 포함하여 대부분의 소셜 서비스 아웃을 위해 맞춤형 UIActivity을 가진 고급 GitHub 레포에 대한 링크가 포함되어 있습니다.

+0

'UIActivityViewController'에 주어진 'activityItems'에 'UIImage' 만 있고 텍스트가 아니라면 Instagram이 공유 옵션에 나타납니다. –