2015-09-18 14 views
8

Con Xcode7, aggiorno Facebook SDK al pod FBSDKShareKit (4.6.0). E ho aggiunto lo schema di Facebook a WhiteList come sotto. di riferimento: https://developers.facebook.com/docs/ios/ios9FBSDKShareDialog di Facebook SDK non funziona su iOS9?

<key>LSApplicationQueriesSchemes</key> 
<array> 
     <string>fbapi</string> 
     <string>fb-messenger-api</string> 
     <string>fbauth2</string> 
     <string>fbshareextension</string> 
</array> 

Tuttavia, il codice seguente mostrano solo iOS di default dialogo sociale in iOS9. Lo stesso codice con lo stesso binario su iOS8 può aprire l'app di Facebook e mostrare correttamente la finestra di dialogo di condivisione.

Immagino che l'app di Facebook non venga trovata su iOS9 e quindi mostri la finestra di dialogo sociale predefinita. Anche nessun messaggio di errore mostrato.

Mi manca qualcosa? O è un bug iOS9?

+0

Ho avuto lo stesso problema. Penso di aver seguito tutto sul documento. Se l'app di Facebook non viene trovata, dovrebbe comunque utilizzare il modulo web di condivisione. E funziona bene nel simulatore. – mrhangz

risposta

27

Immagino che Facebook abbia modificato il comportamento perché iOS 9 ora apre una finestra di dialogo che chiede se si desidera "Apri Facebook?" quando si fa il cambio di app. Anche per FBSDKLoginManager, il metodo di commutazione dell'app (nativo) sembra essere meno preferito di un UIWebView modale.

Tuttavia, è ancora possibile forzare la finestra di condivisione per passare alla applicazione Facebook (ammesso che abbiate la configurazione dell'applicazione plist come descritto nella https://developers.facebook.com/docs/ios/ios9) utilizzando questo metodo:

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init]; 

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fbauth2://"]]){ 
    dialog.mode = FBSDKShareDialogModeNative; 
} 
else { 
    dialog.mode = FBSDKShareDialogModeBrowser; //or FBSDKShareDialogModeAutomatic 
} 
dialog.shareContent = content; 
dialog.delegate = self; 
dialog.fromViewController = self; 
[dialog show]; 
+1

Grazie mille. Questo funziona e questo è quello che voglio. ^^ – derjohng

+2

Inoltre, questo non funzionerà se l'app fb non è installata, quindi è meglio controllarla e, se non è installata, utilizzare invece FBSDKShareDialogModeFeedBrowser. – mrhangz

+0

@mrhangz Ho modificato la soluzione per includere un controllo se l'app di Facebook è installata. Supponevo che sarebbe stato automaticamente ripiegato su altre modalità, ma non è così. Grazie! Inoltre, preferisco FBSDKShareDialogModeBrowser su FBSDKShareDialogModeFeedBrowser. – wilsontgh

0

In iOS 9 sotto è il unica soluzione che ha funzionato per me per rilevare se l'app di Facebook è installata nel dispositivo o no:

NSString *urlString = @"fbapi://"; 
    NSURL *url1 = [NSURL URLWithString:urlString]; 

    if ([[UIApplication sharedApplication] canOpenURL:url1]) { 
     [[UIApplication sharedApplication] openURL:url1]; 
    } 
    else { 
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itunes link for download app"]]; 
    } 
Problemi correlati