Supporto di SFSafariViewController sull'SDK iOS 3.2+ sfsafariviewcontroller-support-on-ios-sdk-3.2
A causa dei requisiti di sicurezza, alcune pagine di accesso di MVPD DEVONO essere presentate in un SFSafariViewController, anziché in visualizzazioni Web.
Alcuni MVPD richiedono che le loro pagine di accesso siano presentate in un controllo browser sicuro come SFSafariViewController. Stanno bloccando attivamente le visualizzazioni web, quindi per potersi autenticare con loro dobbiamo usare SVC.
Compatibilità compatiblity
A partire dalla versione 3.1 dell'SDK per iOS, l'SDK di AccessEnabler visualizza automaticamente la pagina di accesso per MVPD specifici in un SFSafariViewController, in base alla configurazione del server.
La versione 3.1 dell'SDK presenta automaticamente SFSafariViewController dal controller della visualizzazione radice dell'applicazione. Questo semplifica la gestione delle pagine di accesso per gli implementatori, ma in alcuni casi non è possibile presentare SFSafariViewController dal controller della vista radice a causa dell’implementazione specifica dell’app (come se fosse già visibile un controller modale).
In questi casi, la versione 3.2 introduce la possibilità per il programmatore di gestire manualmente l'SVC.
Gestione manuale della SVC manual-svc-management
Per gestire manualmente SVC, l'implementatore deve effettuare le seguenti operazioni:
-
chiamare setOptions(["handleSVC":true]) dopo l'inizializzazione di AccessEnabler (assicurarsi che la chiamata venga eseguita prima dell'inizio dell'autenticazione). Questo attiverà la gestione "manuale" di SVC, l'SDK non presenterà automaticamente SVC, ma, quando necessario chiama navigate(toUrl:{url} useSVC:true).
-
implementare il callback facoltativo
navigateToUrl:useSVC:
all'interno dell'implementazione è necessario creare un'istanza svc utilizzando l'istanza SFSafariViewController utilizzando l'URL specificato e presentarla sullo schermo:code language-obj-c func navigate(toUrl url: String!, useSVC: Bool) { svc = SFSafariViewController(url: URL(string: url)!) svc.delegate = self myController.present(svc, animated: true) }
Note:
- È possibile personalizzare SFSafariViewController in qualsiasi modo. In iOS 11+, ad esempio, è possibile modificare l'etichetta "Fine" in "Annulla".
- per poter ignorare l'svc, è necessario un riferimento ad esso. Non crearlo nell'ambito di navigateToUrl:useSVC
- usa il tuo controller di visualizzazione per "myController"
-
Nell'implementazione delegata dell'applicazione di application(_app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool, aggiungi il codice per chiudere svc. Dovresti avere già del codice che chiama accessEnabler.handleExternalURL(). Appena sotto aggiungi:
code language-obj-c if(svc != nil) { svc.dismiss(animated: true) }
Anche in questo caso, svc è un riferimento a SFSafariViewController creato al passaggio 2.
-
Implementare safariViewControllerDidFinish(_ controller: SFSafariViewController) da SFSafariViewControllerDelegate per rilevare quando l'utente ha annullato il svc utilizzando il pulsante "Fine". Con questa funzione, per informare l’SDK che l’autenticazione è stata annullata devi chiamare:
code language-obj-c accessEnabler.setSelectedProvider(nil)