Заголовок не появляется на фотографии в 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");
}