iOS SDK 3.2+上的SFSafariViewController支持 sfsafariviewcontroller-support-on-ios-sdk-3.2

NOTE
此页面上的内容仅供参考。 使用此API需要来自Adobe的当前许可证。 不允许未经授权使用。

由于安全要求,某些MVPD的登录页必须在SFSafariViewController中显示,而不是Web视图中。

有些MVPD要求它们的登录页必须在安全的浏览器控件(如SFSafariViewController)中显示。 它们会主动阻止Web视图,因此为了能够使用它们进行身份验证,我们必须使用SVC。

兼容性 compatiblity

从iOS SDK版本3.1开始,AccessEnabler SDK根据服务器配置自动显示SFSafariViewController中特定MVPD的登录页面。

SDK版本3.1自动从应用程序的根视图控制器中显示SFSafariViewController。 虽然这简化了实施者的登录页面管理,但在某些情况下,由于应用程序的特定实施(如模态控制器已经可见),无法从根视图控制器中演示SFSafariViewController。

对于这种情况,3.2版本引入了程序员手动管理SVC的功能。

手动SVC管理 manual-svc-management

要手动管理SVC,实施人员必须执行以下步骤:

  1. 在AccessEnabler初始化后调用​ setOptions(["handleSVC":true]) (确保在身份验证开始前执行此调用)。 这将启用“手动”SVC管理,SDK不会自动呈现SVC,而是在需要时显示 调用​ navigate(toUrl:{url} useSVC:true)

  2. 在实施中实施可选回调​ navigateToUrl:useSVC:,您必须使用提供的URL使用SFSafariViewController实例创建svc实例,并将其显示在屏幕上:

    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+上,您可以将“完成”标签更改为“取消”。
    • 为了能够关闭svc,您需要引用它,请不要在​ navigateToUrl:useSVC 的范围内创建它
    • 对“myController”使用您自己的视图控制器
  3. 在应用程序的​ 应用程序(_app: UIApplication)的委托实现中,打开URL: URL,选项: [UIApplicationOpenURLOptionsKey: Any]) -> Bool,添加代码以关闭svc。 您应该已经有一些调用​ accessEnabler.handleExternalURL() ​的代码。 就在下面,添加:

    code language-obj-c
    if(svc != nil) {
        svc.dismiss(animated: true)
    }
    

    同样,svc是对您在步骤2中创建的SFSafariViewController的引用。

  4. 从​ SFSafariViewControllerDelegate ​实现​ safariViewControllerDidFinish(_控制器: SFSafariViewController),以便捕获用户何时使用“完成”按钮取消了svc。 在此函数中,要通知SDK身份验证已取消,您需要调用:

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