2015-09-22 16 views
6

Facebook wycofał metodę [FBSDKMessengerSharer messengerPlatformCapabilities], która służy do sprawdzania, czy użytkownik ma zainstalowaną aplikację Messenger. W komunikacie ostrzegawczym, to mówi:Sprawdź, czy użytkownik ma zainstalowany program Facebook Messenger. IOS 9

messengerPlatformCapabilities jest przestarzała: To jest przestarzała jak iOS 9. Jeśli to wykorzystać, należy skonfigurować plist jak opisano w https://developers.facebook.com/docs/ios/ios9

chciałbym usunąć tę metodę, ale nie znalazłem żadnej innej możliwości, aby zastąpić ten kod (który sprawia, że ​​przycisk wyłączone, jeśli użytkownik nie ma zainstalowanej aplikacji Messenger):

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

jest jakiś inny sposób? Lub, jako nowe wymagania iOS, powinienem unikać używania tego if? Z góry dziękuję.

Odpowiedz

12

Będziesz chciał użyć canOpenURL, aby sprawdzić, czy można otworzyć niestandardowy schemat URL fb-messenger://. canOpenURL zwraca wartość BOOL wskazującą, czy schemat adresu URL może być obsługiwany przez jakąś aplikację zainstalowaną na urządzeniu. Jeśli canOpenURL zwraca YES, wówczas aplikacja jest obecna na urządzeniu.

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

Ponadto, począwszy od iOS 9 należy dołączyć LSApplicationQueriesSchemes w swoim info.plist.

enter image description here

2

Od wydaniu v4.6.0 Facebook SDK używają fb-messenger-api ich schematu URL.

Swift 2,3

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

Źródło: https://developers.facebook.com/docs/ios/ios9

0

Dla osób korzystających Swift 3, użyj tego:

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

w moim przypadku musiałem wiedzieć, czy pokazać przycisk użytkownicy mogą naciskać, aby udostępniać treści na komunikatorze. To zadziałało w moim przypadku, a także sprawdza, czy zainstalowana jest aplikacja komunikatora.

-(BOOL) canShareViaMessenger { 
    [[[FBSDKMessageDialog alloc] init] canShow] 
} 
Powiązane problemy