2015-04-26 6 views
15

Il mio iOS è 8.1.2 e sto usando UIActivityViewController per la condivisione social. clicco su un pulsante e lasciare che l'UIActivityViewController per presentareFacebook non è mostrato in UIActivityViewController ma twitter

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

sto ottenendo questo

enter image description here

sto ottenendo Messaggio, Twitter, posta, WhatsApp e un pulsante Altro.
Facendo clic su Altro Ho capito.

enter image description here Dove è FACEBOOK. Ho l'app per Facebook nel mio iPhone e viene configurata con il mio ID anche nelle impostazioni. Ma Facebook non si presenta mai qui. Twitter lo fa. È un bug o cosa? Si prega di suggerire

Grazie

risposta

18

Ho visto questo quando Facebook ha aggiornato la loro app il 24 aprile. La semplice condivisione di testo su Facebook non funziona finché l'app Facebook è installata. Dopo averlo eliminato, è nuovamente disponibile.

Se si tenta di condividere un URL o un'immagine insieme con il testo normale, vedrete Facebook come un'opzione ma il campo di testo sarà vuoto. L'immagine o l'URL si collegheranno senza problemi.

Ho pubblicato un progetto di esempio che riproduce questo problema su github:

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

Questa non è una risposta, ma è abbastanza chiaro che il problema è causato da l'applicazione Facebook.

EDIT:

Non è l'ideale, ma ho creato una soluzione. Non dimenticare che dovrai collegare un'immagine o un URL affinché funzioni.

  1. Rileva se l'utente ha installato l'app di Facebook. Se lo fanno, quindi dare loro un tipo di messaggio informativo.

    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. creare una sottoclasse di UIActivityItemProvider e sovrascrivere

    - (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. dire all'utente che devono incollare nel campo di testo di Facebook al fine di condividere.

  4. Dare la colpa a Facebook.

+0

Ma quando cancelliamo l'app fb, come possiamo condividere su fb? Poco confusionario? Potete per favore elaborare !! Grazie. –

+0

Ho provato il campione. Quando ho cancellato Fb ho ottenuto l'app fb nell'attivitàviewcontroller. Ma cosa significa? Dove verrà pubblicato? Si prega di aiutare !! Grazie –

+0

@Rajan È possibile accedere a Facebook nell'app Impostazioni iOS. Se hai effettuato l'accesso e non hai l'app di Facebook, l'app di Facebook non può impedirti di allegare testo semplice a un post. In iOS 7 non sembra essere un problema. – 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

includerà FB in UIActivityViewController o esclude? Non ho nulla nelle attività escluse. Controllare il mio codice nella domanda –

+0

in sharedArray passare un altro argomento per condividere come NSURL o UIImage e provare a farlo funzionare. –

+0

@ArpitLokwani Voglio condividere solo testo non URL o immagini ma non funzionano .. –

1

Per visualizzare il pulsante di condivisione di Facebook è necessario aggiungere un'immagine alla matrice di elementi di attività ... questo potrebbe essere un bug sul lato mela, ma io non ho visto alcun radar aperto su questo problema.

Nota anche su iOS 8.3 il testo non può essere aggiunto a Facebook per qualche motivo. quando aggiungi un testo, ti viene presentato solo in un campo di testo vuoto.

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

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

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

Confermo ciò che djr ha segnalato: se il testo dell'app FB non è più condiviso. Ho cancellato l'app FB e ora condivido sia il testo che le immagini.

+0

Ma quando cancelliamo l'app fb, come possiamo condividere su fb? Poco confusionario? Potete per favore elaborare !! Grazie. –

+0

Pensare ad alta voce: Il problema potrebbe essere il "activityType" Facebook ti invia quando hai l'app ora è qualcosa come "com.facebook.extensions.post". Un tempo era 'UIActivityTypePostToFacebook' (ed è ancora il caso se FB non è installato). Lo stesso per Gmail, ecc. – Webdevotion