Подтвердить что ты не робот

Опубликовать фото на 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];
}
4b9b3361

Ответ 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 только в окне "открыть".