Опубликовать фотографию в Instagram, используя свои хуки для iOS
Я использую следующий код в своем приложении для iOS, чтобы использовать Instagram для подключения фотографии к Instagram. Я только хочу, чтобы в меню "Открыть в..." было приложение Instagram, а не другие приложения. Но в моем случае Camera + также обнаруживается. Как я могу ограничиться 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];
}
5 ответов
Чтобы ответить только на первый вопрос: возможно, вы сможете ограничить меню "Открыть в..." только показом Instagram для вашего устройства (например, удалив приложение "Камера +"), но не сможете ограничить пользователи, которые устанавливают ваше приложение на свои устройства. И это потому, что iPhone распознает, какие приложения могут открывать файлы определенного типа, и автоматически показывает все, что делает.
Кстати, Instagram добавил для этого эксклюзивные расширения файлов (ig) и UTI (com.instagram.exclusivegram). Он по-прежнему открывает меню Открыть с помощью..., но единственный вариант - это Instagram.
Более подробная информация здесь: https://instagram.com/developer/mobile-sharing/iphone-hooks/
Вы можете получить решение по этой ссылке.
Сохранить изображение с помощью
.igo
расширение вместо.ig
, Это "эксклюзивная" версия типа файла.Создать
UIDocumentInteractionController
затем назначьте значениеcom.instagram.exclusivegram
в собственностьUTI
,Представьте свой
UIDocumentInteractionController
сpresentOpenInMenuFromRect:inView:animated
,
Это сработало для меня, сделайте это так, и у вас будет только 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;
_docController.UTI=@"com.instagram.photo";
[_docController setURL:imageURL];
_docController.annotation=[NSDictionary dictionaryWithObjectsAndKeys:@"#yourHashTagGoesHere",@"InstagramCaption", nil];
[_docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
self.documentInteractionController = [self setupControllerWithURL:imgurl usingDelegate:self];
self.documentInteractionController=[UIDocumentInteractionController interactionControllerWithURL:imgurl];
self.documentInteractionController.UTI = @"com.instagram.exclusivegram";
используйте этот код в той же последовательности. здесь documentInteractionController является объектом UIDocumentInteractionController.just для вашего знания. Вы получите инстаграм только в "открытом" окне.