Partager une photo sur Instagram sans utiliser UIDocumentInteractionController
Bonjour,
Je souhaite qu'un utilisateur puisse partager une photo de mon app sur Instagram.
Pour ce faire, j'utilise le code ci-dessous qui utilise UIDocumentInteractionController.
@property (nonatomic, retain) UIDocumentInteractionController *documentController;
NSURL *instagramURL = [NSURL URLWithString:@instagram://library?AssetPath=assets-library];
if([[UIApplication sharedApplication] canOpenURL:instagramURL]) //check for App is install or not
{
NSData *imageData = UIImagePNGRepresentation(result); //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 URLWithString:newJpgPath];
NSLog(@url Path %@",igImageHookFile);
// [[UIApplication sharedApplication] openURL:instagramURL];
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);
}
ça fonctionne très bien mais je souhaiterais faire la même chose sans utiliser UIDocumentInteractionController qui me propose inutilement d'autres options. Autrement dit je voudrais qu'Instagram s'ouvre directement sur la photo à partager.
J'ai trouvé une alternative sur Stackoverflow http://stackoverflow.com/questions/16647803/ios-iphone-hooks-open-instagram-directly-without-showing-uidocumentinteractionco
- I save image locally to photos
- Then I open Instagram with following URL: instagram://library?AssetPath=assets-library
Je ne trouve cependant pas cette méthode satisfaisante car elle oblige l'utilisateur à enregistrer une photo dans sa photothèque.
Auriez-vous une autre idée ? Merci par avance !
Réponses
https://www.instagram.com/developer/mobile-sharing/iphone-hooks/
L'URL Scheme ne semble pas pouvoir faire ce que tu veux.
D'après eux :
Merci Larme, effectivement je que je souhaite faire semble compromis...
As-tu essayé la méthode instaGramWallPost de http://stackoverflow.com/questions/11393071/how-to-share-an-image-on-instagram-in-ios ?
ça parle de Instagram Photo Exclusive.
Oui c'est la méthode que j'utilise déjà , passe via UIDocumentInteractionController
l'exclusivité Instagram n'est plus d'actualité car d'autres apps peuvent utiliser ce même format "igo".