2015-04-26 18 views
15

My iOS 8.1.2 i używam UIActivityViewController do udostępniania w serwisach społecznościowych. kliknięciu na przycisk i pozwolić UIActivityViewController przedstawićFacebook nie jest wyświetlany w UIActivityViewController, ale na Twitterze jest

- (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]; 
} 

jestem coraz to

enter image description here

jestem coraz Wiadomość, Twitter, Poczta, WhatsApp i przycisk Więcej.
Kliknięcie przycisku Więcej Otrzymuję to.

enter image description here Gdzie jest FACEBOOK. Mam aplikację na Facebooku na moim iPhonie i jest ona skonfigurowana z moim ID także w ustawieniach. Ale Facebook nigdy tu nie pojawia. Twitter robi. Czy to błąd, czy co? Proszę zaproponować

Dzięki

Odpowiedz

18

Pierwszy raz widziałem to, gdy Facebook zaktualizował swoją aplikację 24 kwietnia. Zwykłe udostępnianie tekstu na Facebooku nie działa tak długo, jak aplikacja Facebook jest zainstalowana. Po usunięciu jest ponownie dostępny.

Jeśli spróbujesz udostępnić adres URL lub obraz wraz ze zwykłym tekstem, zobaczysz opcję Facebook jako opcję, ale pole tekstowe będzie puste. Obraz lub adres URL zostaną dołączone bez problemu.

zamieściłem przykładowy projekt, który odtwarza ten problem na github:

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

To nie jest odpowiedź, ale to dość oczywiste, że problem jest spowodowany przez aplikację na Facebooku.

EDIT:

To nie jest idealne, ale stworzył obejścia. Nie zapominaj, że do działania będzie konieczne dołączenie obrazu lub adresu URL.

  1. Wykryj, czy użytkownik ma zainstalowaną aplikację Facebook. Jeśli tak, to daj im jakiś komunikat informacyjny.

    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. utworzyć podklasę UIActivityItemProvider i zastąpić

    - (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. Mów użytkownikowi, że trzeba wkleić do pola tekstowego Facebooku, aby dzielić.

  4. Obciąż to na Facebooku.

+0

Ale kiedy usuniemy aplikację fb, jak możemy udostępnić na fb? Trochę mylące? Czy możesz rozwinąć !! Dzięki. –

+0

Próbowałem próbki. Po usunięciu Fb mam aplikację fb w kontrolerze activityview. Ale co to znaczy? Gdzie zostanie opublikowany? Pomóżcie !! Dzięki –

+0

@Rajan Możesz zalogować się na Facebooku w aplikacji Ustawienia iOS. Jeśli jesteś zalogowany i nie masz aplikacji Facebook, aplikacja Facebook nie może powstrzymać Cię od dołączania zwykłego tekstu do postu. W systemie iOS 7 nie wydaje się to problemem. – 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

czy to będzie FB w UIActivityViewController czy wykluczenie? Nie mam nic w wykluczonych Czynnościach. Sprawdź mój kod w pytaniu –

+0

w sharedArray podaj jeszcze jeden argument do dzielenia się jak NSURL lub UIImage i spróbuj, powinien działać. –

+0

@ArpitLokwani Chcę udostępnić tylko tekst, a nie URL lub obrazy, ale nie działa. –

1

Aby wyświetlić przycisk udostępniania facebook należy dodać zdjęcie do tablicy elementów działalności ... to może być błąd na stronie apple ale nie widziałem żadnego otwartego radar o tym problemie.

Z uwagi na tekst iOS 8.3 z jakiegoś powodu nie można też dodać do Facebooka. podczas dodawania tekstu wyświetla się tylko puste pole tekstowe.

UIImage *image = [UIImage imageNamed:@"__some_image__file"]; 

UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:@[image] 
                        applicationActivities:nil]; 

[self presentViewController:activityViewController animated:YES completion:nil]; 
3

Potwierdzam, co zgłosił djr - jeśli tekst aplikacji FB nie jest już udostępniany. Usunąłem aplikację FB, a teraz udostępniam zarówno tekst, jak i obrazy.

+0

Ale kiedy usuniemy aplikację fb, jak możemy udostępnić na fb? Trochę mylące? Czy możesz rozwinąć !! Dzięki. –

+0

Myślenie głośno: Problemem może być "activityType", który wysyła Facebook, gdy aplikacja ma teraz coś w stylu "com.facebook.extensions.post". Kiedyś był to "UIActivityTypePostToFacebook" (i nadal ma miejsce, jeśli nie masz zainstalowanego FB). To samo dotyczy Gmaila itp. – Webdevotion

Powiązane problemy