2015-07-17 13 views
5

Sto utilizzando canOpenURL di Apple: e openURL: i metodi per rilevare & aprono un'altra applicazione. Ma poiché questi metodi sono deprecati in iOS9, restituiscono NO.Esiste un'alternativa a (deprecato) canOpenURL in iOS 9?

C'è qualche alternativa per gestirlo?

Grazie

+0

La mia documentazione Xcode 7 beta 3 non contrassegna questi metodi come obsoleti in iOS 9?!? – trojanfoe

+0

Sono anche interessato a sapere dove si dice che sia stato deprecato. Per favore puoi condividere ovunque tu legga questo. – Popeye

+3

__Che ha detto che è deprecato in iOS9? __ entrambi funzionano bene in _beta-3_, nessun segno di alcuna deprecazione di nessuno '-canOpenURL:' né '-openURL:' ... – holex

risposta

7

È necessario fornire "lista bianca" al tuo plist

<key>LSApplicationQueriesSchemes</key> 
<array> 
<string>urlscheme</string> 
<string>urlscheme2</string> 
<string>urlscheme3</string> 
<string>urlscheme4</string> 
</array> 

Vedere per maggiori dettagli

iOS 9 has made a small change to the handling of URL scheme.

More details

+0

Grazie amico ha funzionato. – shivam

+0

Per motivi di chiarezza, NON includere ": //" nella stringa di un'app specifica da autorizzare nella matrice LSApplicationQueriesSchemes, ad esempio "comgooglemaps: //". Se includi ": //" canOpenUrl: restituirà NO e fornirà l'errore "Questo app non è autorizzato a eseguire query per lo schema xxx". Tuttavia, quando si effettua la chiamata effettiva di canOpenUrl: è comunque necessario includere i due punti, canOpenUrl: @ "comgooglemaps:". – EmphaticArmPump

2

Here si possono trovare alcune informazioni.

come l'articolo detto:

Fino IOS 9, applicazioni sono stati in grado di chiamare questi metodi su tutti gli URL arbitrari. A partire da iOS 9, le app dovranno dichiarare quali schemi di URL vorrebbero poter controllare e aprire nei file di configurazione dell'app come viene inviata ad Apple. Questa è essenzialmente una whitelist che può essere modificata o aggiunta solo inviando un aggiornamento ad Apple. Sembra che alcuni URL comuni gestiti da app di sistema, come "http", "https", non debbano essere esplicitamente inseriti nella whitelist.

In breve: Apple vuole evitare che le applicazioni di essere in grado di eseguire la scansione dispositivo di un utente e di sapere quali applicazioni sono installate

Quindi, per rispondere alla tua domanda: in realtà non esiste una soluzione, perché Apple vuole esattamente per evitare questo tipo di comportamento

1

In alcuni contesti, se è necessario aprire deeplink arbitrarie, il Universal App Links può essere una soluzione: si punta al sito web della app (che ha bisogno di implementare questo comportamento) e iOS 9 eseguirà automaticamente il deeplink all'app ad hoc.