Опубликовать фотографию в 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/

Вы можете получить решение по этой ссылке.

  1. Сохранить изображение с помощью .igo расширение вместо .ig, Это "эксклюзивная" версия типа файла.

  2. Создать UIDocumentInteractionControllerзатем назначьте значение com.instagram.exclusivegram в собственность UTI,

  3. Представьте свой 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 для вашего знания. Вы получите инстаграм только в "открытом" окне.

Другие вопросы по тегам