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

Connectez-vous ou Inscrivez-vous pour répondre.