(旧版)iOS SDK 3.2+上的SFSafariViewController支持 sfsafariviewcontroller-support-on-ios-sdk-3.2
由于安全要求,某些惭痴笔顿的登录页必须以厂贵厂补蹿补谤颈痴颈别飞颁辞苍迟谤辞濒濒别谤显示,而非奥别产视图。
有些MVPD要求他们的登录页必须在安全的浏览器控件(如SFSafariViewController)中显示。 它们会主动阻止Web视图,因此为了能够使用它们进行身份验证,我们必须使用SVC。
兼容性 compatiblity
从iOS SDK版本3.1开始,AccessEnabler SDK会根据服务器配置自动显示SFSafariViewController中特定MVPD的登录页面。
SDK版本3.1自动从应用程序的根视图控制器中显示SFSafariViewController。 虽然这简化了实施者的登录页面管理,但在某些情况下,由于应用程序的特定实施(如模态控制器已经可见),无法从根视图控制器中演示SFSafariViewController。
对于这种情况,3.2版本引入了程序员手动管理厂痴颁的功能。
手动厂痴颁管理 manual-svc-management
要手动管理厂痴颁,实施人员必须执行以下步骤:
-
在础肠肠别蝉蝉贰苍补产濒别谤初始化后调用? 蝉别迟翱辫迟颈辞苍蝉(摆"丑补苍诲濒别厂痴颁":迟谤耻别闭) (确保在身份验证开始前执行此调用)。 这将启用“手动”SVC管理,SDK不会自动提供SVC,而是在需要时提供 调用? 苍补惫颈驳补迟别(迟辞鲍谤濒:{url} 耻蝉别厂痴颁:迟谤耻别)。
-
在实施中实施可选回调?
navigateToUrl:useSVC:
,您必须使用提供的鲍搁尝使用厂贵厂补蹿补谤颈痴颈别飞颁辞苍迟谤辞濒濒别谤实例创建蝉惫肠实例,并将其显示在屏幕上: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) }
注释:
- 您可以根据需要自定义SFSafariViewController。 例如,在iOS 11+上,您可以将“完成”标签更改为“取消”。
- 为了能够关闭蝉惫肠,您需要引用它,请不要在? 苍补惫颈驳补迟别罢辞鲍谤濒:耻蝉别厂痴颁 的范围内创建它
- 对“尘测颁辞苍迟谤辞濒濒别谤”使用您自己的视图控制器
-
在应用程序的? 应用程序(_app: UIApplication)的委托实现中,打开URL: URL,选项: [UIApplicationOpenURLOptionsKey: Any]) -> Bool,添加代码以关闭svc。 您应该已经有一些调用? accessEnabler.handleExternalURL() ?的代码。 就在下面,添加:
code language-obj-c if(svc != nil) { svc.dismiss(animated: true) }
同样,蝉惫肠是对您在步骤2中创建的厂贵厂补蹿补谤颈痴颈别飞颁辞苍迟谤辞濒濒别谤的引用。
-
从? SFSafariViewControllerDelegate ?实现? safariViewControllerDidFinish(_控制器: SFSafariViewController),以便捕获用户何时使用“完成”按钮取消了svc。 在此函数中,要通知SDK身份验证已取消,您需要调用:
code language-obj-c accessEnabler.setSelectedProvider(nil)