2015-04-26 3 views
15

My iOS - 8.1.2, и я использую UIActivityViewController для совместного использования. я нажимаю на кнопку и позволяет UIActivityViewController представитьFacebook не отображается в 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 и Подробнее кнопка.
При нажатии Подробнее Я получаю это.

enter image description here Где FACEBOOK. У меня есть приложение facebook в моем iPhone, и оно настроено с моим идентификатором тоже в настройках. Но facebook никогда не появляется здесь. Twitter делает. Это ошибка или что? Пожалуйста, предложите

Благодаря

ответ

18

Я впервые увидел это, когда Facebook обновил свое приложение 24 апреля. Обычный обмен текстами в Facebook не работает, пока установлено приложение Facebook. После его удаления он снова будет доступен.

Если вы попытаетесь поделиться URL-адресом или изображением вместе с обычным текстом, вы увидите Facebook как опцию, но текстовое поле будет пустым. Изображение или URL-адрес будут прикреплены без проблем.

Я отправил образец проекта, который воспроизводит эту проблему на GitHub:

https://github.com/djr/UIActivityViewController-Facebook

Это не ответ, но это довольно ясно, что проблема вызвана приложением Facebook.

EDIT:

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

  1. Определить, установлено ли приложение 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 
    } 
    
  2. Создать подкласс 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; 
    } 
    
  3. Сообщите пользователю, что они должны вставить в текстовое поле Facebook, чтобы поделиться.

  4. Обвините это на Facebook.

+0

Но когда мы удаляем приложение fb, то как мы можем делиться на fb? Немного смущает? Не могли бы вы уточнить !! Благодарю. –

+0

Я попробовал образец. При удалении Fb я получил приложение fb в контроллере activityview. Но что это значит? Где он будет опубликован? Пожалуйста, помогите !! Спасибо –

+0

@Rajan Вы можете войти в Facebook в приложении настроек iOS. Если вы вошли в систему и не используете приложение Facebook, приложение Facebook не может помешать вам прикреплять обычный текст к сообщению. В iOS 7 это не кажется проблемой. – djr

1
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]; 
+0

будет включать FB в UIActivityViewController или исключить? У меня нет ничего в исключенных действиях. Проверьте мой код –

+0

в sharedArray, передайте еще один аргумент, чтобы делиться, как NSURL или UIImage, и попробовать, он должен работать. –

+0

@ArpitLokwani Я хочу поделиться только текстом, а не URL или изображениями, но не работать. –

1

Чтобы показать кнопку обмена 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]; 
3

Я подтверждаю, что сообщалось djr - если текст приложения FB больше не используется. Я удалил приложение FB и теперь использую как текстовые, так и графические работы.

+0

Но когда мы удаляем приложение fb, то как мы можем делиться на fb? Немного смущает? Не могли бы вы уточнить !! Благодарю. –

+0

Мышление вслух: Проблема может быть в том, что 'activityType' Facebook отправляет вам, когда у вас есть приложение, теперь что-то вроде' com.facebook.extensions.post'. Раньше это был 'UIActivityTypePostToFacebook' (и все еще имеет место, если у вас нет FB). То же самое для Gmail и т. Д. – Webdevotion

3

Facebook хотел бы, чтобы вы использовали свой SDK. Они заблокировали возможность установки исходного текста. (Не знаю, как.) Проверьте свой ответ в аналогичной должности:

UIActivityViewController for Facebook not Showing Default Text

искомое решение (от Facebook) заключается в использовании их SDK.