Facebook не отображается в UIActivityViewController, но твиттер делает
My iOS - это 8.1.2, и я использую UIActivityViewController для совместного использования.
Я нажимаю на кнопку и позволяю UIActivityViewController представить
- (IBAction)UIActivityTypeButtonClick:(id)sender {
NSString* [email protected]"I am sharing this text";
NSArray* [email protected][text];
UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil];
[email protected][];
[self presentViewController:activityVC animated:YES completion:nil];
}
Я получаю это
![enter image description here]()
Я получаю Сообщение, Twitter, Почта, WhatsApp и Подробнее.
При нажатии Дополнительно я получаю это.
Где FACEBOOK. У меня есть приложение facebook в моем iPhone, и оно настроено с моим идентификатором тоже в настройках. Но facebook никогда не появляется здесь. Twitter делает. Это ошибка или что? Пожалуйста, предложите
Спасибо
Ответы
Ответ 1
Я впервые увидел это, когда Facebook обновил свое приложение 24 апреля. Обычный обмен текстами в Facebook не работает, пока установлено приложение Facebook. После его удаления он снова появится.
Если вы попытаетесь поделиться URL-адресом или изображением вместе с простым текстом, вы увидите Facebook как опцию, но текстовое поле будет пустым. Изображение или URL-адрес будут прикреплены без проблем.
Я разместил образец проекта, который воспроизводит эту проблему на github:
https://github.com/djr/UIActivityViewController-Facebook
Это не ответ, но довольно ясно, что проблема вызвана приложением Facebook.
EDIT:
Это не идеально, но я создал обходное решение. Не забывайте, что вам нужно будет прикрепить изображение или URL для этого.
-
Определите, установлено ли у пользователя приложение Facebook. Если да, то дайте им какое-то информационное сообщение.
BOOL facebookIsInstalled = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb://"]];
BOOL isUserLoggedInWithFacebook = [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook];
if(isUserLoggedInWithFacebook && facebookIsInstalled)
{
// Explain that they have to copy and paste in order to share on Facebook
}
-
Создайте подкласс UIActivityItemProvider и переопределите
- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
{
NSString *stringToShare = @"string to share";
if([activityType isEqualToString:UIActivityTypePostToFacebook] ||
[activityType isEqualToString:@"com.facebook.Facebook.ShareExtension"] ||
[activityType.lowercaseString rangeOfString:@"facebook"].length)
// Because who knows when they are going to change the activityType string?
{
// Automatically copy the text for them
[[UIPasteboard generalPasteboard] setString:stringToShare];
}
return stringToShare;
}
-
Сообщите пользователю, что им нужно вставить в текстовое поле Facebook, чтобы поделиться.
-
Убейте его на Facebook.
Ответ 2
Я подтверждаю, что сообщил djr - если текст приложения FB больше не используется. Я удалил приложение FB и теперь использую как текстовые, так и графические работы.
Ответ 3
Facebook хотел бы, чтобы вы использовали свой SDK. Они заблокировали возможность установки исходного текста. (Не знаете, как.) Проверьте мой ответ в подобном сообщении:
UIActivityViewController для Facebook не показывает текст по умолчанию
Желательным решением (из Facebook) является использование их SDK.
Ответ 4
NSString* [email protected]"I am sharing this text";
NSURL *myWebsite = [NSURL URLWithString:@"http://www.website.com/"];
// UIImage * myImage =[UIImage imageNamed:@"myImage.png"];
NSArray* [email protected][text,myWebsite];
UIActivityViewController * activityVC=[[UIActivityViewController alloc]initWithActivityItems:sharedArray applicationActivities:nil];
NSArray *excludedActivities = @[];
activityVC.excludedActivityTypes=excludedActivities;
[self presentViewController:activityVC animated:YES completion:nil];
Ответ 5
Чтобы показать кнопку общего доступа к facebook, вы должны добавить изображение в массив элементов активности... это может быть ошибкой на стороне яблока, но я не видел открытого радара об этой проблеме.
Также обратите внимание, что текст iOS 8.3 по какой-то причине не может быть добавлен в facebook. при добавлении текста вы представляете только пустое текстовое поле.
UIImage *image = [UIImage imageNamed:@"__some_image__file"];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image]
applicationActivities:nil];
[self presentViewController:activityViewController animated:YES completion:nil];