2015-09-22 21 views
6

Facebook ha deprecato il metodo [FBSDKMessengerSharer messengerPlatformCapabilities] utilizzato per verificare se l'utente ha installato l'app Messenger. Nel messaggio di avviso, che dice:Verifica se l'utente ha installato Facebook Messenger iOS 9

messengerPlatformCapabilities è obsoleta: Questa è deprecato come di iOS 9. Se si utilizza questo, è necessario configurare il plist come descritto nella https://developers.facebook.com/docs/ios/ios9

vorrei rimuovere questo metodo, ma non hanno trovato alcuna altra opzione per sostituire il codice (che fa un pulsante disattivato se l'utente non ha Messenger applicazione installata):

if (![FBSDKMessengerSharer messengerPlatformCapabilities]) { 
    [self.inviteFriendsButton setEnabled:NO]; 
    [self.inviteFriendsButton setAlpha:0.5f]; 
} 

c'è qualche altro metodo? Oppure, come nuovi requisiti iOS dovrei evitare di usare questo if? Grazie in anticipo.

risposta

12

Si desidera utilizzare canOpenURL per verificare se è possibile aprire lo schema URL personalizzato fb-messenger://. canOpenURL restituisce un valore BOOL che indica se lo schema dell'URL può essere gestito o meno da alcune app installate sul dispositivo. Se canOpenURL restituisce YES, l'applicazione è presente sul dispositivo.

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fb-messenger://"]]) { 
    // Installed 
    [self.inviteFriendsButton setEnabled:YES]; 
    [self.inviteFriendsButton setAlpha:1.0]; 
} 
else { 
    // NOT Installed 
    [self.inviteFriendsButton setEnabled:NO]; 
    [self.inviteFriendsButton setAlpha:0.5]; 
} 

Inoltre, a partire da iOS 9 è necessario includere nella vostra LSApplicationQueriesSchemesinfo.plist.

enter image description here

2

Dal rilascio della v4.6.0 Facebook SDK che usano fb-messenger-api come il loro schema URL.

Swift 2,3

if UIApplication.sharedApplication().canOpenURL(NSURL(string: "fb-messenger-api://")!) { 
    // Installed 
} else { 
    // Not installed 
} 

Fonte: https://developers.facebook.com/docs/ios/ios9

0

Per coloro che utilizzano Swift 3, utilizzare questo:

UIApplication.shared.canOpenURL(URL(string: "fb-messenger-api://")!) 
0

Nel mio caso ho bisogno di sapere se mostrare un pulsante gli utenti potrebbero premere per condividere contenuti su Messenger. Questo ha funzionato per il mio caso e controlla anche se l'app di messenger è installata.

-(BOOL) canShareViaMessenger { 
    [[[FBSDKMessageDialog alloc] init] canShow] 
} 
Problemi correlati