Klien saya ingin membagikan gambar di Instagram, Twitter, Facebook.
Saya telah melakukan Twitter dan Facebook tetapi tidak menemukan API atau apa pun di internet untuk berbagi gambar di Instagram. Apakah mungkin untuk membagikan gambar di Instagram? jika ya lalu bagaimana?
Ketika saya memeriksa situs pengembang Instagram, saya telah menemukan Perpustakaan Ruby on Rails dan Python. Tetapi tidak ada dokumentasi Sdk iOS
Saya telah mendapatkan token dari instagram sesuai instagram.com/developer tetapi sekarang tidak tahu apa yang harus dilakukan langkah selanjutnya untuk berbagi dengan gambar instagram.
ios
objective-c
swift
instagram-api
Hiren
sumber
sumber
Jawaban:
Akhirnya saya mendapat jawabannya. Anda tidak bisa langsung memposting gambar di instagram. Anda harus mengubah gambar Anda dengan UIDocumentInteractionController.
@property (nonatomic, retain) UIDocumentInteractionController *dic; CGRect rect = CGRectMake(0 ,0 , 0, 0); UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIGraphicsEndImageContext(); NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.igo"]; NSURL *igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", jpgPath]]; self.dic.UTI = @"com.instagram.photo"; self.dic = [self setupControllerWithURL:igImageHookFile usingDelegate:self]; self.dic=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile]; [self.dic presentOpenInMenuFromRect: rect inView: self.view animated: YES ]; - (UIDocumentInteractionController *) setupControllerWithURL: (NSURL*) fileURL usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate { UIDocumentInteractionController *interactionController = [UIDocumentInteractionController interactionControllerWithURL: fileURL]; interactionController.delegate = interactionDelegate; return interactionController; }
CATATAN: setelah Anda mengarahkan ke aplikasi Instagram, Anda tidak dapat kembali ke aplikasi Anda. Anda harus membuka aplikasi Anda lagi
Unduh sumber dari sini
sumber
Berikut adalah kode yang diuji penuh untuk Mengunggah gambar + teks teks ke Instagram ..
file in.h
//Instagram @property (nonatomic, retain) UIDocumentInteractionController *documentController; -(void)instaGramWallPost { NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if([[UIApplication sharedApplication] canOpenURL:instagramURL]) //check for App is install or not { NSData *imageData = UIImagePNGRepresentation(imge); //convert image into .png format. NSFileManager *fileManager = [NSFileManager defaultManager];//create instance of NSFileManager NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //create an array and store result of our search for the documents directory in it NSString *documentsDirectory = [paths objectAtIndex:0]; //create NSString object, that holds our exact path to the documents directory NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"insta.igo"]]; //add our image to the path [fileManager createFileAtPath:fullPath contents:imageData attributes:nil]; //finally save the path (image) NSLog(@"image saved"); CGRect rect = CGRectMake(0 ,0 , 0, 0); UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIGraphicsEndImageContext(); NSString *fileNameToSave = [NSString stringWithFormat:@"Documents/insta.igo"]; NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:fileNameToSave]; NSLog(@"jpg path %@",jpgPath); NSString *newJpgPath = [NSString stringWithFormat:@"file://%@",jpgPath]; NSLog(@"with File path %@",newJpgPath); NSURL *igImageHookFile = [[NSURL alloc]initFileURLWithPath:newJpgPath]; NSLog(@"url Path %@",igImageHookFile); self.documentController.UTI = @"com.instagram.exclusivegram"; self.documentController = [self setupControllerWithURL:igImageHookFile usingDelegate:self]; self.documentController=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile]; NSString *caption = @"#Your Text"; //settext as Default Caption self.documentController.annotation=[NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"%@",caption],@"InstagramCaption", nil]; [self.documentController presentOpenInMenuFromRect:rect inView: self.view animated:YES]; } else { NSLog (@"Instagram not found"); } } - (UIDocumentInteractionController *) setupControllerWithURL: (NSURL*) fileURL usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate { NSLog(@"file url %@",fileURL); UIDocumentInteractionController *interactionController = [UIDocumentInteractionController interactionControllerWithURL: fileURL]; interactionController.delegate = interactionDelegate; return interactionController; }
ATAU
-(void)instaGramWallPost { NSURL *myURL = [NSURL URLWithString:@"Your image url"]; NSData * imageData = [[NSData alloc] initWithContentsOfURL:myURL]; UIImage *imgShare = [[UIImage alloc] initWithData:imageData]; NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if([[UIApplication sharedApplication] canOpenURL:instagramURL]) //check for App is install or not { UIImage *imageToUse = imgShare; NSString *documentDirectory=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSString *saveImagePath=[documentDirectory stringByAppendingPathComponent:@"Image.igo"]; NSData *imageData=UIImagePNGRepresentation(imageToUse); [imageData writeToFile:saveImagePath atomically:YES]; NSURL *imageURL=[NSURL fileURLWithPath:saveImagePath]; self.documentController=[[UIDocumentInteractionController alloc]init]; self.documentController = [UIDocumentInteractionController interactionControllerWithURL:imageURL]; self.documentController.delegate = self; self.documentController.annotation = [NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@"Testing"], @"InstagramCaption", nil]; self.documentController.UTI = @"com.instagram.exclusivegram"; UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController; [self.documentController presentOpenInMenuFromRect:CGRectMake(1, 1, 1, 1) inView:vc.view animated:YES]; } else { DisplayAlertWithTitle(@"Instagram not found", @"") } }
dan Tulis ini ke .plist
<key>LSApplicationQueriesSchemes</key> <array> <string>instagram</string> </array>
sumber
Anda dapat menggunakan salah satu skema url yang disediakan oleh Instagram
Dok resmi Instagram di sini
Bagikan dengan UIDocumentInteractionController
final class InstagramPublisher : NSObject { private var documentsController:UIDocumentInteractionController = UIDocumentInteractionController() func postImage(image: UIImage, view: UIView, result:((Bool)->Void)? = nil) { guard let instagramURL = NSURL(string: "instagram://app") else { if let result = result { result(false) } return } if UIApplication.sharedApplication().canOpenURL(instagramURL) { let jpgPath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("instagrammFotoToShareName.igo") if let image = UIImageJPEGRepresentation(image, 1.0) { image.writeToFile(jpgPath, atomically: true) let fileURL = NSURL.fileURLWithPath(jpgPath) documentsController.URL = fileURL documentsController.UTI = "com.instagram.exclusivegram" documentsController.presentOpenInMenuFromRect(view.bounds, inView: view, animated: true) if let result = result { result(true) } } else if let result = result { result(false) } } else { if let result = result { result(false) } } } }
Bagikan dengan pengalihan langsung
import Photos final class InstagramPublisher : NSObject { func postImage(image: UIImage, result:((Bool)->Void)? = nil) { guard let instagramURL = NSURL(string: "instagram://app") else { if let result = result { result(false) } return } let image = image.scaleImageWithAspectToWidth(640) do { try PHPhotoLibrary.sharedPhotoLibrary().performChangesAndWait { let request = PHAssetChangeRequest.creationRequestForAssetFromImage(image) let assetID = request.placeholderForCreatedAsset?.localIdentifier ?? "" let shareURL = "instagram://library?LocalIdentifier=" + assetID if UIApplication.sharedApplication().canOpenURL(instagramURL) { if let urlForRedirect = NSURL(string: shareURL) { UIApplication.sharedApplication().openURL(urlForRedirect) } } } } catch { if let result = result { result(false) } } } }
ekstensi untuk mengubah ukuran foto ke ukuran yang disarankan
import UIKit extension UIImage { // MARK: - UIImage+Resize func scaleImageWithAspectToWidth(toWidth:CGFloat) -> UIImage { let oldWidth:CGFloat = size.width let scaleFactor:CGFloat = toWidth / oldWidth let newHeight = self.size.height * scaleFactor let newWidth = oldWidth * scaleFactor; UIGraphicsBeginImageContext(CGSizeMake(newWidth, newHeight)) drawInRect(CGRectMake(0, 0, newWidth, newHeight)) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } }
Jangan lupa untuk menambahkan skema yang diperlukan di plist
sumber
Semoga jawaban ini akan menyelesaikan pertanyaan Anda. Ini secara langsung akan membuka folder perpustakaan di Instagram, bukan di Kamera.
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { NSURL *videoFilePath = [NSURL URLWithString:[NSString stringWithFormat:@"%@",[request downloadDestinationPath]]]; // Your local path to the video NSString *caption = @"Some Preloaded Caption"; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeVideoAtPathToSavedPhotosAlbum:videoFilePath completionBlock:^(NSURL *assetURL, NSError *error) { NSString *escapedString = [self urlencodedString:videoFilePath.absoluteString]; NSString *escapedCaption = [self urlencodedString:caption]; NSURL *instagramURL = [NSURL URLWithString:[NSString stringWithFormat:@"instagram://library?AssetPath=%@&InstagramCaption=%@",escapedString,escapedCaption]]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { [[UIApplication sharedApplication] openURL:instagramURL]; } }];
sumber
jika Anda tidak ingin menggunakan UIDocumentInteractionController
import Photos ... 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 let url = NSURL(string: u)! if UIApplication.sharedApplication().canOpenURL(url) { UIApplication.sharedApplication().openURL(NSURL(string: u)!) } else { let alertController = UIAlertController(title: "Error", message: "Instagram is not installed", preferredStyle: .Alert) alertController.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil)) self.presentViewController(alertController, animated: true, completion: nil) } } }
sumber
Untuk iOS 6 dan di atasnya, Anda dapat menggunakan UIActivity ini untuk mengunggah gambar ke Instagram yang memiliki alur kerja yang sama menggunakan pengait iOS tetapi menyederhanakan pengembangan:
https://github.com/coryalder/DMActivityInstagram
sumber
ini adalah jawaban yang benar yang saya implementasikan dengan detail. Dalam file .h
UIImageView *imageMain; @property (nonatomic, strong) UIDocumentInteractionController *documentController;
file in.m hanya menulis
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if([[UIApplication sharedApplication] canOpenURL:instagramURL]) { CGFloat cropVal = (imageMain.image.size.height > imageMain.image.size.width ? imageMain.image.size.width : imageMain.image.size.height); cropVal *= [imageMain.image scale]; CGRect cropRect = (CGRect){.size.height = cropVal, .size.width = cropVal}; CGImageRef imageRef = CGImageCreateWithImageInRect([imageMain.image CGImage], cropRect); NSData *imageData = UIImageJPEGRepresentation([UIImage imageWithCGImage:imageRef], 1.0); CGImageRelease(imageRef); NSString *writePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"instagram.igo"]; if (![imageData writeToFile:writePath atomically:YES]) { // failure NSLog(@"image save failed to path %@", writePath); return; } else { // success. } // send it to instagram. NSURL *fileURL = [NSURL fileURLWithPath:writePath]; self.documentController = [UIDocumentInteractionController interactionControllerWithURL:fileURL]; self.documentController.delegate = self; [self.documentController setUTI:@"com.instagram.exclusivegram"]; [self.documentController setAnnotation:@{@"InstagramCaption" : @"We are making fun"}]; [self.documentController presentOpenInMenuFromRect:CGRectMake(0, 0, 320, 480) inView:self.view animated:YES]; } else { NSLog (@"Instagram not found"); }
Pasti Anda akan mendapatkan hasil. Misalnya Anda akan melihat popover dari bawah dengan gambar instagram. Klik di atasnya dan bersenang-senang.
sumber
Saya mencoba ini di aplikasi saya dan berfungsi dengan sempurna (Swift)
import Foundation import UIKit class InstagramManager: NSObject, UIDocumentInteractionControllerDelegate { private let kInstagramURL = "instagram://" private let kUTI = "com.instagram.exclusivegram" private let kfileNameExtension = "instagram.igo" private let kAlertViewTitle = "Error" private let kAlertViewMessage = "Please install the Instagram application" var documentInteractionController = UIDocumentInteractionController() // singleton manager class var sharedManager: InstagramManager { struct Singleton { static let instance = InstagramManager() } return Singleton.instance } func postImageToInstagramWithCaption(imageInstagram: UIImage, instagramCaption: String, view: UIView) { // called to post image with caption to the instagram application let instagramURL = NSURL(string: kInstagramURL) if UIApplication.sharedApplication().canOpenURL(instagramURL!) { let jpgPath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent(kfileNameExtension) UIImageJPEGRepresentation(imageInstagram, 1.0)!.writeToFile(jpgPath, atomically: true) let rect = CGRectMake(0,0,612,612) let fileURL = NSURL.fileURLWithPath(jpgPath) documentInteractionController.URL = fileURL documentInteractionController.delegate = self documentInteractionController.UTI = kUTI // adding caption for the image documentInteractionController.annotation = ["InstagramCaption": instagramCaption] documentInteractionController.presentOpenInMenuFromRect(rect, inView: view, animated: true) } else { // alert displayed when the instagram application is not available in the device UIAlertView(title: kAlertViewTitle, message: kAlertViewMessage, delegate:nil, cancelButtonTitle:"Ok").show() } } } func sendToInstagram(){ let image = postImage InstagramManager.sharedManager.postImageToInstagramWithCaption(image!, instagramCaption: "\(description)", view: self.view) }
sumber
Inilah jawaban yang benar. Anda tidak dapat langsung memposting gambar di Instagram. Anda perlu mengalihkan ke Instagram menggunakan UIDocumentInteractionController ...
NSString* imagePath = [NSString stringWithFormat:@"%@/instagramShare.igo", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]]; [[NSFileManager defaultManager] removeItemAtPath:imagePath error:nil]; UIImage *instagramImage = [UIImage imageNamed:@"imagename you want to share"]; [UIImagePNGRepresentation(instagramImage) writeToFile:imagePath atomically:YES]; NSLog(@"Image Size >>> %@", NSStringFromCGSize(instagramImage.size)); self.dic=[UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:imagePath]]; self.dic.delegate = self; self.dic.UTI = @"com.instagram.exclusivegram"; [self.dic presentOpenInMenuFromRect: self.view.frame inView:self.view animated:YES ];
}
CATATAN: setelah Anda mengarahkan ke aplikasi Instagram, Anda tidak dapat kembali ke aplikasi Anda. Anda harus membuka aplikasi Anda lagi
sumber
Anda dapat melakukannya tanpa menggunakan UIDocumentInteractionController dan langsung membuka Instagram dengan 3 metode berikut:
Ini berfungsi seperti semua aplikasi terkenal lainnya. Kode tersebut ditulis di Objective c, jadi Anda bisa menerjemahkannya ke swift jika Anda mau. Yang perlu Anda lakukan adalah menyimpan gambar Anda ke perangkat dan menggunakan URLScheme
tambahkan ini di dalam file .m Anda
#import <Photos/Photos.h>
Pertama, Anda perlu menyimpan UIImage Anda ke perangkat dengan metode ini:
-(void)savePostsPhotoBeforeSharing { UIImageWriteToSavedPhotosAlbum([UIImage imageNamed:@"image_file_name.jpg"], self, @selector(image:didFinishSavingWithError:contextInfo:), NULL); }
Metode ini adalah panggilan balik untuk menyimpan gambar ke perangkat Anda:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo; { [self sharePostOnInstagram]; }
Setelah gambar disimpan ke perangkat, Anda perlu menanyakan gambar yang baru saja Anda simpan dan mendapatkannya sebagai PHAsset
-(void)sharePostOnInstagram { PHFetchOptions *fetchOptions = [PHFetchOptions new]; fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO],]; __block PHAsset *assetToShare; PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions]; [result enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) { assetToShare = asset; }]; if([assetToShare isKindOfClass:[PHAsset class]]) { NSString *localIdentifier = assetToShare.localIdentifier; NSString *urlString = [NSString stringWithFormat:@"instagram://library?LocalIdentifier=%@",localIdentifier]; NSURL *instagramURL = [NSURL URLWithString:urlString]; if ([[UIApplication sharedApplication] canOpenURL: instagramURL]) { [[UIApplication sharedApplication] openURL: instagramURL]; } else { // can not share with whats app NSLog(@"No instagram installed"); } } }
Dan jangan lupa untuk memasukkan ini ke info.plist Anda di bawah
LSApplicationQueriesSchemes
<string>instagram</string>
sumber
- (void) shareImageWithInstagram { NSURL *instagramURL = [NSURL URLWithString:@"instagram://"]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { UICachedFileMgr* mgr = _gCachedManger; UIImage* photoImage = [mgr imageWithUrl:_imageView.image]; NSData* imageData = UIImagePNGRepresentation(photoImage); NSString* captionString = [NSString stringWithFormat:@"ANY_TAG",]; NSString* imagePath = [UIUtils documentDirectoryWithSubpath:@"image.igo"]; [imageData writeToFile:imagePath atomically:NO]; NSURL* fileURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"file://%@",imagePath]]; self.docFile = [[self setupControllerWithURL:fileURL usingDelegate:self]retain]; self.docFile.annotation = [NSDictionary dictionaryWithObject: captionString forKey:@"InstagramCaption"]; self.docFile.UTI = @"com.instagram.photo"; // OPEN THE HOOK [self.docFile presentOpenInMenuFromRect:self.view.frame inView:self.view animated:YES]; } else { [UIUtils messageAlert:@"Instagram not installed in this device!\nTo share image please install instagram." title:nil delegate:nil]; } }
Saya mencoba ini di aplikasi saya dan itu pasti akan berhasil
sumber
UIUtils
&UICachedFileMgr
?Bagi saya, cara terbaik dan termudah dijelaskan di sini Bagikan foto ke Instagram dari Aplikasi iOS saya
Anda perlu menyimpan gambar di perangkat menggunakan format .igo, lalu gunakan "UIDocumentInteractionController" untuk mengirim aplikasi Instagram jalur lokal. Jangan lupa untuk menyetel "UIDocumentInteractionControllerDelegate"
Saran saya adalah menambahkan sesuatu seperti:
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { <your code> }
sumber
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"]; if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"Documents/Insta_Images/%@",@"shareImage.png"]]; NSURL *igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", jpgPath]]; docController.UTI = @"com.instagram.photo"; docController = [self setupControllerWithURL:igImageHookFile usingDelegate:self]; docController =[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile]; docController.delegate=self; [docController presentOpenInMenuFromRect:CGRectMake(0 ,0 , 612, 612) inView:self.view animated:YES];
sumber
Saya perhatikan jika Anda meletakkan
URL
menunjuk ke gambaractivityItems
alih-alihUIImage
,Copy to Instagram
item aktivitas muncul dengan sendirinya, dan Anda tidak perlu melakukan apa pun. Harap dicatat bahwaString
objek di dalamnyaactivityItems
akan dibuang dan tidak ada cara untuk mengisi teks di Instagram. Jika Anda masih ingin memberi petunjuk kepada pengguna untuk memposting teks tertentu, Anda perlu membuat aktivitas khusus di mana Anda menyalin teks itu ke papan klip dan memberi tahu pengguna tentangnya, seperti dalam inti ini .sumber
@import Photos; -(void)shareOnInstagram:(UIImage*)imageInstagram { [self authorizePHAssest:imageInstagram]; } -(void)authorizePHAssest:(UIImage *)aImage{ PHAuthorizationStatus status = [PHPhotoLibrary authorizationStatus]; if (status == PHAuthorizationStatusAuthorized) { // Access has been granted. [self savePostsPhotoBeforeSharing:aImage]; } else if (status == PHAuthorizationStatusDenied) { // Access has been denied. } else if (status == PHAuthorizationStatusNotDetermined) { // Access has not been determined. [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) { if (status == PHAuthorizationStatusAuthorized) { // Access has been granted. [self savePostsPhotoBeforeSharing:aImage]; } }]; } else if (status == PHAuthorizationStatusRestricted) { // Restricted access - normally won't happen. } } -(void)saveImageInDeviceBeforeSharing:(UIImage *)aImage { UIImageWriteToSavedPhotosAlbum(aImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL); } - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo; { if (error == nil){ [self sharePostOnInstagram]; } } -(void)shareImageOnInstagram { PHFetchOptions *fetchOptions = [PHFetchOptions new]; fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:false]]; PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions]; __block PHAsset *assetToShare = [result firstObject]; if([assetToShare isKindOfClass:[PHAsset class]]) { NSString *localIdentifier = assetToShare.localIdentifier; NSString *urlString = [NSString stringWithFormat:@"instagram://library?LocalIdentifier=%@",localIdentifier]; NSURL *instagramURL = [NSURL URLWithString:urlString]; if ([[UIApplication sharedApplication] canOpenURL: instagramURL]) { [[UIApplication sharedApplication] openURL:instagramURL options:@{} completionHandler:nil]; } else { NSLog(@"No instagram installed"); } } }
CATATAN: - IMP TODO: - Tambahkan kunci di bawah ini di Info.plist
<key>LSApplicationQueriesSchemes</key> <array> <string>instagram</string> </array>
sumber
Saya menggunakan kode ini:
NSString* filePathStr = [[NSBundle mainBundle] pathForResource:@"UMS_social_demo" ofType:@"png"]; NSURL* fileUrl = [NSURL fileURLWithPath:filePathStr]; NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/test.igo"]; [[NSData dataWithContentsOfURL:fileUrl] writeToFile:jpgPath atomically:YES]; NSURL* documentURL = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@", jpgPath]]; UIDocumentInteractionController *interactionController = [UIDocumentInteractionController interactionControllerWithURL: documentURL]; self.interactionController = interactionController; interactionController.delegate = self; interactionController.UTI = @"com.instagram.photo"; CGRect rect = CGRectMake(0 ,0 , 0, 0); [interactionController presentOpenInMenuFromRect:rect inView:self.view animated:YES];
sumber
-(void)shareOnInstagram { CGRect rect = CGRectMake(self.view.frame.size.width*0.375 ,self.view.frame.size.height/2 , 0, 0); NSString * saveImagePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/ShareInstragramImage.igo"]; [UIImagePNGRepresentation(_image) writeToFile:saveImagePath atomically:YES]; NSURL *igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", saveImagePath]]; self.documentController=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile]; self.documentController.UTI = @"com.instagram.exclusivegram"; self.documentController = [self setupControllerWithURL:igImageHookFile usingDelegate:self]; [self.documentController presentOpenInMenuFromRect: rect inView: self.view animated: YES ]; } -(UIDocumentInteractionController *) setupControllerWithURL: (NSURL*) fileURL usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate { UIDocumentInteractionController *interactionController = [UIDocumentInteractionController interactionControllerWithURL: fileURL]; interactionController.delegate = interactionDelegate; return interactionController; }
sumber
NSURL *myURL = [NSURL URLWithString:sampleImageURL]; NSData * imageData = [[NSData alloc] initWithContentsOfURL:myURL]; UIImage *imageToUse = [[UIImage alloc] initWithData:imageData]; NSString *documentDirectory=[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSString *saveImagePath=[documentDirectory stringByAppendingPathComponent:@"Image.ig"]; [imageData writeToFile:saveImagePath atomically:YES]; NSURL *imageURL=[NSURL fileURLWithPath:saveImagePath]; self.documentController = [UIDocumentInteractionController interactionControllerWithURL:imageURL]; self.documentController.delegate = self; self.documentController.annotation = [NSDictionary dictionaryWithObjectsAndKeys:[NSString stringWithFormat:@""], @"", nil]; self.documentController.UTI = @"com.instagram.exclusivegram"; [self.documentController presentOpenInMenuFromRect:CGRectMake(1, 1, 1, 1) inView:self.view animated:YES];
sumber