Ondersteuning voor SFSafariViewController op iOS SDK 3.2+ sfsafariviewcontroller-support-on-ios-sdk-3.2
Vanwege beveiligingsvereisten MOETEN sommige aanmeldingspagina's van het MVPD worden weergegeven in een SFSafariViewController in plaats van in webweergaven.
Sommige MVPD's vereisen dat hun aanmeldingspagina's worden weergegeven in een beveiligde browsercontrole, zoals SFSafariViewController. Ze blokkeren actief webweergaven, dus om ermee te kunnen verifiëren moeten we SVC gebruiken.
Compatibiliteit compatiblity
Vanaf iOS SDK versie 3.1 geeft de AccessEnabler SDK automatisch de aanmeldingspagina voor specifieke MVPD's weer in een SFSafariViewController, gebaseerd op de serverconfiguratie.
Versie 3.1 van SDK stelt automatisch SFSafariViewController van het controlemechanisme van de wortelmening van de toepassing voor. Hoewel dit het beheer van aanmeldingspagina's voor implementoren vereenvoudigt, zijn er gevallen waarin het presenteren van de SFSafariViewController vanuit de hoofdweergavecontroller niet mogelijk is vanwege de specifieke implementatie van de app (zoals een modaal controller die al zichtbaar is).
In dergelijke gevallen introduceert de 3.2-versie de mogelijkheid voor de programmeur om de SVC handmatig te beheren.
Handmatig SVC-beheer manual-svc-management
Om SVC manueel te beheren moet de implementor de volgende stappen uitvoeren:
-
call setOptions() ["handleSVC":true]) na initialisatie AccessEnabler (zorg ervoor deze vraag wordt uitgevoerd alvorens de authentificatie begint). Hierdoor wordt "handmatig" SVC-beheer ingeschakeld, zal de SDK de SVC niet automatisch presenteren, maar in plaats daarvan, indien nodig, aanroepen navigate(toUrl:{url} useSVC:true).
-
de optionele callback implementeren
navigateToUrl:useSVC:
binnen de implementatie moet u een svc-instantie maken met behulp van de SFSafariViewController-instantie met behulp van de opgegeven URL en deze op het scherm weergeven: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) }
Opmerkingen:
- U kunt SFSafariViewController aanpassen om het even welke manier u wilt. Op iOS 11+ kunt u bijvoorbeeld het label Gereed wijzigen in Annuleren.
- om het svc te kunnen ontslaan , hebt u een verwijzing naar het nodig ; creeer het niet in het toepassingsgebied van navigateToUrl:useSVC
- gebruik uw eigen weergavecontroller voor "myController"
-
In de gedelegeerde implementatie van uw toepassing van application(_app: UIApplication, open url: URL, opties: [UIAapplicationOpenURLOptionsKey: Willekeurig]) -> Bool, voegt u code toe om de svc te sluiten. U zou reeds één of andere code daar moeten hebben die roept accessEnabler.handleExternalURL(). Net onder toevoegen:
code language-obj-c if(svc != nil) { svc.dismiss(animated: true) }
Opnieuw, is svc een verwijzing naar SFSafariViewController u bij stap 2 creeerde.
-
Implementeren safariViewControllerdidFinish(_ controller: SFSafariViewController) van SFSafariViewControllerDelegate om af te vangen wanneer de gebruiker de SVC heeft geannuleerd met de knop Gereed. In deze functie, om SDK mee te delen dat de authentificatie is geannuleerd moet u roepen:
code language-obj-c accessEnabler.setSelectedProvider(nil)