2016-05-20 43 views
12

Nelle app iOS 9 non è possibile utilizzare canOpenURL per verificare se l'applicazione è installata o meno.Come funziona il collegamento delle app di Facebook senza dichiarare LSApplicationQueriesSchemes?

Se il vostro (iOS 9.0 o versione successiva) app chiama questo metodo che utilizza uno schema che si non hanno dichiarato, il metodo restituisce false, anche se non un app adeguato per il regime è installato sul dispositivo.

ma mi chiedo come applicazione Facebook riesce a indirizzare l'utente all'AppStore se l'applicazione non è installata, o per aprire applicazione di destinazione se è installato!

Facebook non può elencare tutte le app in LSApplicationQueriesSchemes!

Grazie

+0

potrebbe essere un'eccezione di mela, perché Apple ha l'opzione per le impostazioni di Facebook, specialmente nell'app delle impostazioni. Ma dove ti serve per la tua applicazione. Voglio dire, cosa vuoi veramente ottenere? –

risposta

1

Da canOpenURL:documentation:

A differenza di questo metodo, l'openURL: metodo non è vincolata dal UIDefaultLaunchStoryboard requisito : Se un'applicazione che gestisce un sistema di è installato sul dispositivo, il metodo openURL: funziona, se o non hai dichiarato lo schema.

Così, effettuare le seguenti operazioni:

1) tenta di chiamare openURL: con URL fb-compatibile, ad esempio fb[app-id]://authorize... fino a quando non restituisce true (ho controllato, stanno chiamando un sacco di URL, ad esempio fb[app-id]lite, fb[app-id]mac, fb[app-id]paid, fb[app-id]green, ecc.). Se succede, l'app di destinazione si apre.

2) Se non v'è successo con chiamando openURL:, provano a chiamare canOpenURL: con http://itunes.apple.com/app/... url e quindi chiamare openURL: con lo stesso URL. L'utente viene reindirizzato ad App Store.