iOS9 - O compartilhamento no Instagram (com ganchos) não funciona
No momento, estou atualizando um dos meus aplicativos para ser compatível com iOS9 e estou tendo problemas com o compartilhamento da função Instagram. Estou usando os ganchos do Instagram, conforme declarado no site do desenvolvedor: (https://instagram.com/developer/mobile-sharing/iphone-hooks/)
A imagem que desejo compartilhar está sendo gerada com êxito, com o sufixo .igo, e a funcionalidade ainda está funcionando conforme o esperado no iOS8. Parece ter quebrado com a nova versão do iOS.
Aqui está o código para compartilhar no Instagram, usando o UIDocumentInteractionController:
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
//convert image into .png format.
NSData *imageData = UIImagePNGRepresentation(image);
//create instance of NSFileManager
NSFileManager *fileManager = [NSFileManager defaultManager];
//create an array and store result of our search for the documents directory in it
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
//create NSString object, that holds our exact path to the documents directory
NSString *documentsDirectory = [paths objectAtIndex:0];
//add our image to the path
NSString *fullPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"insta.igo"]];
//finally save the path (image)
[fileManager createFileAtPath:fullPath contents:imageData attributes:nil];
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 = [UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];
[self.documentController setDelegate:self];
[self.documentController setUTI:@"com.instagram.exclusivegram"];
[self.documentController presentOpenInMenuFromRect:rect inView:self.view animated:YES];
} else {
NSLog (@"Instagram not found");
}
Provavelmente vale a pena mencionar que eu já configurei os esquemas de URL no info.plist conforme necessário com as alterações do iOS9.
O UIDocumentInteractionController aparece e tem a opção 'Copiar para o Instagram'. Pressionar essa opção apenas leva o controlador a ser dispensado, sem que mensagens de log ou pontos de interrupção sejam chamados no delegado do controlador (definido como próprio; o controlador de exibição).
Se alguém tiver, ou tiver tido problemas com isso, seria ótimo ouvir seus pensamentos, ou melhor ainda, como foi resolvido.
Atualizar
Também vale mencionar, em um dispositivo iOS8, o Document Interaction Controller mostra um botão 'Abrir no Instagram'. O dispositivo iOS9 mostra um botão 'Copiar para Instagram'.