Supporto di SFSafariViewController sull'SDK iOS 3.2+ sfsafariviewcontroller-support-on-ios-sdk-3.2

NOTE
Il contenuto di questa pagina viene fornito solo a scopo informativo. L’utilizzo di questa API richiede una licenza corrente di Adobe. Non è consentito alcun uso non autorizzato.

A causa dei requisiti di sicurezza, alcune pagine di accesso di MVPD DEVONO essere presentate in un SFSafariViewController, invece che 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:

  1. 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, chiamerà navigate(toUrl:{url} useSVC:true).

  2. implementare il callback facoltativo navigateToUrl:useSVC: all’interno dell’implementazione è necessario creare un’istanza svc utilizzando l’istanza SFSafariViewController con l’URL fornito 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:

    • SFSafariViewController può essere personalizzato in qualsiasi modo. Ad esempio, in iOS 11+ puoi modificare l’etichetta "Fine" in "Annulla".
    • per poter ignorare l'svc, è necessario un riferimento ad esso. non crearlo nell'ambito di navigateToUrl:useSVC
    • utilizzare il proprio controller di visualizzazione per "myController"
  3. Nell’implementazione delegata dell’applicazione di application(_app: UIApplication, url aperto: URL, opzioni: [UIApplicationOpenURLOptionsKey: Any]) -> Bool, aggiungi il codice per chiudere il svc. Dovresti avere già un 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.

  4. Implementare safariViewControllerDidFinish(_ controller: SFSafariViewController) da SFSafariViewControllerDelegate per rilevare quando l’utente ha annullato il svc utilizzando il pulsante "Done" (Fine). Con questa funzione, per informare l’SDK che l’autenticazione è stata annullata devi chiamare:

    code language-obj-c
    accessEnabler.setSelectedProvider(nil)
    
recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b