Заголовок не появляется на фотографии в Instagram после установки свойства аннотации UIDocumentInteractionController

Мое приложение может успешно загружать фотографии в Instagram, используя UIDocumentInteractionController, но я не могу успешно загрузить фотографию с подписью.

Документы Instagram говорят вам сделать это:

Чтобы включить предварительно заполненный заголовок с вашей фотографией, можно установить для свойства аннотации в запросе взаимодействия с документом значение NSDictionary, содержащее строку NSString под ключом "InstagramCaption". Примечание. Эта функция будет доступна в Instagram 2.1 и более поздних версиях.

Я попробовал это пять раз сейчас. Я пытался создать NSDictionary несколько разных способов, в том числе использование буквального синтаксиса, но я до сих пор не могу заставить его работать, поэтому с Instagram должно быть что-то не так.

Вот пример моего кода, который устанавливает документ и открывает фотографию в приложении Instagram для iOS:

UIImage *screenShot = finalImage;
NSString *savePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.igo"];

[UIImagePNGRepresentation(screenShot) writeToFile:savePath atomically:YES];

CGRect rect = CGRectMake(0 ,0 , 0, 0);
NSString  *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.igo"];
NSURL *igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", jpgPath]];

self.dic.UTI = @"com.instagram.photo";
self.dic.annotation = @{@"InstagramCaption" : @"Here's my caption!"};

self.dic = [self setupControllerWithURL:igImageHookFile usingDelegate:self];
self.dic=[UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];
[self.dic presentOpenInMenuFromRect:rect inView:self.view animated:YES];
NSURL *instagramURL = [NSURL URLWithString:@"instagram://media?id=MEDIA_ID"];

if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {

    [self.dic presentOpenInMenuFromRect: rect    inView: self.view animated: YES ];

} else {

    NSLog(@"No Instagram Found");
}
}

Обратите внимание, как я устанавливаю self.dic.annotation и следуйте рекомендациям Instagram.

Фотография прекрасно открывается в приложении Instagram для iOS и успешно загружается в профиль пользователя, но заголовок никогда не включается.

Похоже, что у людей была такая же проблема еще в 2013 году, но затем проблема была устранена.

1 ответ

Решение

Я просто понял это.

Все, что я сделал, это переместил свое утверждение туда, где я определил self.dic.annotation под следующим утверждением:

self.dic = [UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];

Вышеупомянутое утверждение возвращает новый экземпляр UIDocumentInteractionController и, очевидно, ни одно из его свойств не установлено.

РЕДАКТИРОВАТЬ: Я бы посоветовал не использовать исходный код, который я опубликовал, если вы не готовы вносить изменения. Я только заметил, что есть два утверждения, возвращающие UIDocumentInteractionController экземпляр, и они оба рядом друг с другом:

self.dic = [self setupControllerWithURL:igImageHookFile usingDelegate:self];
self.dic = [UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];

Этот код взят из учебника, поэтому я не могу ручаться за его качество. Если вы хотите использовать его, не забудьте проанализировать его строка за строкой, чтобы не столкнуться с какой-либо путаницей, которую я сделал.

РЕДАКТИРОВАТЬ 2:

Вот последний пример кода, который отлично работает. Вы должны быть в состоянии использовать это без ошибок:

UIImage *screenShot = finalImage;

NSString *savePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.igo"];

[UIImagePNGRepresentation(screenShot) writeToFile:savePath atomically:YES];

CGRect rect = CGRectMake(0 ,0 , 0, 0);
NSString  *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.igo"];
NSURL *igImageHookFile = [[NSURL alloc] initWithString:[[NSString alloc] initWithFormat:@"file://%@", jpgPath]];

self.dic = [UIDocumentInteractionController interactionControllerWithURL:igImageHookFile];
self.dic.UTI = @"com.instagram.photo";
self.dic.annotation = [NSDictionary dictionaryWithObject:@"Enter your caption here" forKey:@"InstagramCaption"];

[self.dic presentOpenInMenuFromRect:rect inView:self.view animated:YES];
NSURL *instagramURL = [NSURL URLWithString:@"instagram://media?id=MEDIA_ID"];

 if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {

        [self.dic presentOpenInMenuFromRect: rect    inView: self.view animated: YES ];

    } else {

        NSLog(@"No Instagram Found");
    }
Другие вопросы по тегам