1

UIDocumentInteractionController와 UIActivityViewController는 모두 이미지를 다른 네트워크에 공유하기위한 메뉴를 제공합니다. Instagram을 치면 응용 프로그램을 종료하지 않고 Instagram에 게시 할 수있는 멋진 모달이 제공됩니다. 내 질문은 어떻게 메뉴를 표시하지 않고 자동으로 모달을 표시합니까?UIDocumentInteractionController 또는 UIActivityViewController에서 Instagram을 자동으로 선택하십시오.

Sounds라는이 앱이 가능하기 때문에 가능하다는 것을 알고 있지만 어떻게 완료되었는지 온라인에서 찾을 수는 없습니다. 여기

NSString *documentDirectory=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    NSString *saveImagePath=[documentDirectory stringByAppendingPathComponent:@"Image.ig"]; 
    NSData *imageData=UIImagePNGRepresentation(cardImage); 
    [imageData writeToFile:saveImagePath atomically:YES]; 
    NSURL *imageURL=[NSURL fileURLWithPath:saveImagePath]; 

    UIDocumentInteractionController *docController = [UIDocumentInteractionController interactionControllerWithURL:imageURL]; 
    docController.UTI = @"com.instagram.exclusivegram"; 
    docController = [self setupControllerWithURL:imageURL usingDelegate:self]; 
    [docController presentOpenInMenuFromRect:CGRectMake(1, 1, 1, 1) inView:self.view animated:YES]; 

메뉴 것 : : 여기가 현재 코드 메뉴가 보여줍니다 여기에 1

내가 원하는 기능이 자동으로 표시하기 :

2]

+0

당신은이 문제에 대한 해결책을 찾았나요? 나는 같은 문제를 안고있다. –

답변

0

다른를 제거하려면 응용 프로그램이 표시되는 코드가 다음과 같이 변경됩니다 (뒤집기).

docController.UTI = @"com.instagram.exclusivegram"; 
docController = [self setupControllerWithURL:imageURL usingDelegate:self]; 

.UTI 변수는 docController 개체를 재정의 한 후에 설정됩니다.

편집 : 정보를 채우고 공유 할 준비가 된 Instagram 응용 프로그램을 직접 열려고 시도하는 경우 iPhone을 확인하십시오. here.

+0

정말 구체적인 요청이지만 iPhone hook은 우리가 찾고있는 것이 아닙니다. 우리는 앱을 떠나고 싶지 않습니다. 자동으로 그 모달을 끌어 올리고 싶습니다. 이 응용 프로그램 소리 (https://www.sounds.am/) 않습니다. Instagram 버튼을 클릭하면 즉시 모달이 나타납니다. 그게 어떻게 된거 야? – evenodd

+0

이것은 정확히 내가 지난 2 일 동안 인터넷 검색을 해왔 던 것입니다. 답변을 찾았습니까? 나는 그것이 가능하다는 것을 알기 위해 애플 리케이션이 이것을하는 것을 보았다. –

0

난 당신이 당신이 오래가 인스 타 그램을 보여 UIActivityViewController을 사용할 수있어

SocialShare.shared.postImageToInstagram(UIImage(named: "1")) 
2

전화를 사용하려면 어떤 어디서나 인스 타 그램에

import UIKit 
import Photos 

class SocialShare: NSObject { 
    static let shared = SocialShare() 

    func postImageToInstagram(image: UIImage) { 
     UIImageWriteToSavedPhotosAlbum(image, self, #selector(SocialShare.image(_:didFinishSavingWithError:contextInfo:)), nil) 
    } 
    func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo:UnsafePointer<Void>) { 
     if error != nil { 
      print(error) 
     } 

     let fetchOptions = PHFetchOptions() 
     fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] 
     let fetchResult = PHAsset.fetchAssetsWithMediaType(.Image, options: fetchOptions) 
     if let lastAsset = fetchResult.firstObject as? PHAsset { 
      let localIdentifier = lastAsset.localIdentifier 
      let u = "instagram://library?LocalIdentifier=" + localIdentifier 
      UIApplication.sharedApplication().openURL(NSURL(string: u)!) 
     } 
    } 
} 

을 이미지를 공유하기 위해 사용하지 않는 코드 활동 항목 안에는 UIImage 만 있습니다. 텍스트, URL 등과 같은 항목을 추가하면 표시되지 않습니다. 이것은 Instagram에서 제정 한 제한 사항입니다. 그래서 같이

:

NSMutableArray *items = [NSMutableArray array]; 
[items addObject:[UIImage ...]]; 

// show view 
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:items 
                      applicationActivities:nil]; 
[vc presentViewController:activityVC animated:YES completion:nil]; 
0

여기 Zuhair의 답변을 구현하는 스위프트 4 클래스입니다.

import Foundation 
import Photos 

class InstagramSharer: NSObject { 
    static let shared = InstagramSharer() 

    func post(image: UIImage) { 
     UIImageWriteToSavedPhotosAlbum(image, self, #selector(image(image:didFinishSavingWithError:contextInfo:)), nil) 
    } 

    @objc 
    private func image(image: UIImage, didFinishSavingWithError error: NSError?, contextInfo: UnsafeRawPointer) { 
     guard error == nil else { 
      return 
     } 

     let fetchOptions = PHFetchOptions() 
     fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)] 
     let fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions) 

     if let lastAsset = fetchResult.firstObject { 
      let localIdentifier = lastAsset.localIdentifier 
      let url = "instagram://library?LocalIdentifier=" + localIdentifier 
      UIApplication.shared.openURL(URL(string: url)!) 
     } 
    } 
} 

사용

InstagramSharer.shared.post(image: #YOUR_IMAGE#) 
관련 문제