2013-06-06 162 views
3

我有一個應用程序,我在Instagram上共享圖像,它的工作原理非常好。在ios的instagram上共享圖像

如截圖所示。當我按下Instagram上的按鈕共享時,它會在UIActivityviewcontroller中打開。

是否有可能如果我點擊在Instagram上分享,並且它直接將我帶到本地Instagram應用程序?

如果用戶在他的設備中安裝了其他應用程序,則由於UIActivityViewController,應用程序也會顯示該應用程序。

我不想顯示UIActivityview控制器說「在Instagram中打開」。

在此先感謝。

編輯

我正在上Instagram的屏幕截圖視圖和共享的屏幕截圖。

當我點擊一個按鈕共享它打開,如我不想要的截圖所示。

我正在使用下面的代碼。

NSURL *instagramURL = [NSURL URLWithString:@"instagram://"]; 

       if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) 
       { 
        CGRect rect = CGRectMake(0 ,0 , 0, 0); 
        UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0); 
        [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

        UIGraphicsEndImageContext(); 
        NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
        NSString* documentsDirectory = [paths objectAtIndex:0]; 

        imagename=[NSString stringWithFormat:@"ff.ig"]; 
        NSString* fullPathToFile = [documentsDirectory stringByAppendingPathComponent:imagename]; 
        ////NSLog(@"%@",fullPathToFile); 

        igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", fullPathToFile]]; 

        self.dic.UTI = @"com.instagram.photo"; 
        self.dic = [self setupControllerWithURL:igImageHookFile usingDelegate:self]; 
        self.dic=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile]; 


         self.dic.annotation = [NSDictionary dictionaryWithObject:@"Image" forKey:@"InstagramCaption"]; 

    [self.dic presentOpenInMenuFromRect: rect inView:self.view animated: YES ]; 
    } 

回答

1
self.documentInteractionController = [self setupControllerWithURL:imgurl usingDelegate:self]; 

self.documentInteractionController=[UIDocumentInteractionController interactionControllerWithURL:imgurl]; 

self.documentInteractionController.UTI = @"com.instagram.exclusivegram"; 

使用此代碼相同的序列。這裏documentInteractionController是UIDocumentInteractionController.just的對象。只有在「打開」窗口中才能看到instagram。

用igo擴展名而不是ig保存圖像。

通過這個,你只會在你的「打開」菜單中獲得instagram選項。

或者,如果您想在按按鈕時直接打開instagram,則可以傳遞應用程序的直接網址,它會將您引導至本地的Instagram應用程序。

希望它可以幫助你。

+0

感謝您的答覆,但我的形象成功地共享,但我想沒有「在Instagram的開放」,分享圖像是可能的? 當圖像共享成功,然後如何重定向到我的應用程序? –

+0

是的,您可以通過在if語句的上述代碼中使用** [[UIApplication sharedApplication] canOpenURL:instagramURL] **行直接轉到本地instagram應用程序。然後,您將被重定向到本機應用程序。一旦你進入本地的Instagram應用程序,你不能被重定向到你的應用程序。你必須再次打開你的應用程序。 – Manthan

+1

好的,但是什麼是instagramURL?我試過NSURL * instagramURL = [NSURL URLWithString:@「instagram://」];但沒有開放的本地Instagram應用程序 –

0

你檢查你的image.As的大小,它支持圖片比612 * 612大做檢查圖像的大小,你要留言

3

迅速

var instagramURL = NSURL(string: "instagram://app")! 
     if UIApplication.sharedApplication().canOpenURL(instagramURL) { 
      var documentDirectory = NSHomeDirectory().stringByAppendingPathComponent("Documents") 
      var saveImagePath = documentDirectory.stringByAppendingPathComponent("Image.igo") 
      var imageData = UIImagePNGRepresentation(self.bestScoreShareView.takeSnapshot(W: 640, H: 640)) 
      imageData.writeToFile(saveImagePath, atomically: true) 
      var imageURL = NSURL.fileURLWithPath(saveImagePath)! 
      docController = UIDocumentInteractionController() 
      docController.delegate = self 
      docController.UTI = "com.instagram.exclusivegram" 
      docController.URL = imageURL 
      docController.presentOpenInMenuFromRect(CGRectZero, inView: self.view, animated: true) 

     } else { 
      println("instagram not found") 
     } 

擴展取shapshot從UIView的

extension UIView { 
    func takeSnapshot(#W: CGFloat, H: CGFloat) -> UIImage { 
     var cropRect = CGRectMake(0, 0, 600, 600) 
     UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.mainScreen().scale) 
     drawViewHierarchyInRect(self.bounds, afterScreenUpdates: true) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     image.imageWithNewSize(CGSizeMake(W, H)) 
     return image 
    } 
} 

延長設置的圖像尺寸

extension UIImage { 
    func imageWithNewSize(newSize:CGSize) ->UIImage { 
     UIGraphicsBeginImageContext(newSize) 
     self.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height)) 

     let newImage = UIGraphicsGetImageFromCurrentImageContext(); 

     UIGraphicsEndImageContext(); 
     return newImage 
    } 
} 
+0

令人印象深刻的擴展! – Fattie

相關問題