#ios #objective-c #facebook #uiactivityviewcontroller
#iOS #objective-c #Facebook #uiactivityviewcontroller
Вопрос:
У меня возникли некоторые проблемы с диалогом создания собственного общего доступа. Моя цель — поделиться ссылкой на мой продукт с помощью встроенного контроллера просмотра, но я не могу этого сделать. Я пытаюсь тестировать код:
NSURL *google = [NSURL URLWithString:@"http://google.com"];
NSArray *activityItems = @[google];
UIActivity *activity = [UIActivity new];
UIActivityViewController *activityViewControntroller = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:@[activity]];
activityViewControntroller.excludedActivityTypes = @[];
[self presentViewController:activityViewControntroller animated:true completion:nil];
И я не получаю значков FB и twitter. С другой стороны, я вижу это в обоих значках Safari, и когда я касаюсь его, я вижу «Вам нужно настроить свою учетную запись перед публикацией».
Итак, я хочу такого же поведения: иконки для всех самых популярных социальных сетей, таких как VK, FB, twitter; мессенджеры, такие как WhatsApp, viber и telegram. Если некоторые из них не установлены, я хочу, чтобы появилось диалоговое окно «Вы должны войти в систему раньше» и перенаправить на safari (например, для FB) для входа в систему или открыть appstore (например, для telegram или viber) для установки; в противном случае я хочу опубликовать сообщение с моей ссылкой.
Я вижу это так: исключите все типы из activity vc, затем принудительно добавьте все нужные мне значки и проверьте каждый из них по щелчку вручную. Но в документах Apple я прочитал, что «вы должны использовать собственное поведение для собственных элементов вместо создания пользовательских». Итак, будет ли это правильно? Или есть другие способы решить эту проблему?
Комментарии:
1. Facebook и Twitter появятся, только если они уже установлены на устройстве.
2. Но в Safari я вижу это, несмотря на то, установлены они или нет
Ответ №1:
Попробуйте это
-(void)clickShare:(UIButton *)sender{
NSArray * activityItems = @[[NSString stringWithFormat:@"Some initial text."], [NSURL URLWithString:@"http://www.google.com"]];
NSArray * applicationActivities = nil;
NSArray * excludeActivities = @[];
UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];
activityController.excludedActivityTypes = excludeActivities;
[self presentViewController:activityController animated:YES completion:nil];
}
этот код работает в моем проекте.
Комментарии:
1. Чем отличается мой код? Основная цель — показать ВСЕ значки с описанным поведением