Опубликовать фото на Instagram, используя их iOS-крючки
Я использую следующий код в своем приложении iOS для использования крючков Instagram iPhone для отправки фотографии в Instagram. Я просто хочу, чтобы меню "Открыть в..." имело приложение Instagram, никаких других приложений. Но в моем случае также появляется камера+. Как я могу ограничить Instagram?
Кроме того, могу ли я напрямую открыть Instagram вместо того, чтобы показывать меню Open In?
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
//imageToUpload is a file path with .ig file extension
self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:imageToUpload]];
self.documentInteractionController.UTI = @"com.instagram.photo";
self.documentInteractionController.annotation = [NSDictionary dictionaryWithObject:@"my caption" forKey:@"InstagramCaption"];
[self.documentInteractionController presentOpenInMenuFromBarButtonItem:self.exportBarButtonItem animated:YES];
}
Ответы
Ответ 1
Чтобы ответить только на ваш первый вопрос: возможно, вы сможете ограничить меню "Открыть в...", чтобы просто показать Instagram для вашего устройства (например, удалив приложение "Камера +" ), но вы не будете способных ограничить пользователей, которые устанавливают ваше приложение на свои устройства. И это потому, что iPhone распознает, какие приложения могут открывать файлы определенного типа, и автоматически показывает все, что делает.
Ответ 2
BTW Instagram добавил для этого эксклюзивное расширение файла (ig) и UTI (com.instagram.exclusivegram). Он по-прежнему открывает меню "Открыть с...", но единственным вариантом является Instagram.
Дополнительная информация здесь: https://instagram.com/developer/mobile-sharing/iphone-hooks/
Ответ 3
Вы можете получить решение из этой ссылки.
-
Сохраните изображение с расширением .igo
вместо .ig
. Это "эксклюзивная" версия типа файла.
-
Создайте UIDocumentInteractionController
, затем присвойте значение com.instagram.exclusivegram
свойству UTI
.
-
Представьте свой UIDocumentInteractionController
с помощью presentOpenInMenuFromRect:inView:animated
.
Ответ 4
Это сработало для меня, сделайте это так, и у вас будет только Instagram в качестве эксклюзивного приложения для открытия вашего изображения.
NSString *documentDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
// *.igo is exclusive to instagram
NSString *saveImagePath = [documentDirectory stringByAppendingPathComponent:@"Image.igo"];
NSData *imageData = UIImagePNGRepresentation(filteredImage);
[imageData writeToFile:saveImagePath atomically:YES];
NSURL *imageURL=[NSURL fileURLWithPath:saveImagePath];
_docController=[[UIDocumentInteractionController alloc]init];
_docController.delegate=self;
[email protected]"com.instagram.photo";
[_docController setURL:imageURL];
_docController.annotation=[NSDictionary dictionaryWithObjectsAndKeys:@"#yourHashTagGoesHere",@"InstagramCaption", nil];
[_docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
Ответ 5
self.documentInteractionController = [self setupControllerWithURL:imgurl usingDelegate:self];
self.documentInteractionController=[UIDocumentInteractionController interactionControllerWithURL:imgurl];
self.documentInteractionController.UTI = @"com.instagram.exclusivegram";
используйте этот код в той же последовательности.
здесь documentInteractionController является объектом UIDocumentInteractionController.just для ваших знаний.
вы получите instagram только в окне "открыть".