(レガシー) iOS SDK 3.2以降でのSFSafariViewController サポート sfsafariviewcontroller-support-on-ios-sdk-3.2
セキュリティ要件により、一部のMVPDのログインページは、Web ビューではなくSFSafariViewControllerで表示する必要があります。
一部の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を手動で管理するには、実装者は次の手順を実行する必要があります。
-
accessEnablerの初期化の後、setOptions ([“handleSVC”:true])を呼び出します(認証を開始する前にこの呼び出しを実行してください)。 これにより、「手動」 SVC管理が有効になり、SDKはSVCを自動的に表示しませんが、必要に応じて navigate (toUrl:{url} useSVC:true) を呼び出します。
-
実装の内部にオプションのコールバック
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を却下するには、そのsvcを参照する必要があります。navigateToUrl:useSVCの範囲で作成しないでください
- 「myController」に独自のビューコントローラーを使用
-
アプリケーションの application (_app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any]) -> Bool のデリゲート実装で、svcを閉じるコードを追加します。 accessEnabler.handleExternalURL ()を呼び出すコードを既に用意しておく必要があります。 以下に追加します。
code language-obj-c if(svc != nil) { svc.dismiss(animated: true) }繰り返しますが、svcは、手順2で作成したSFSafariViewControllerへの参照です。
-
SFSafariViewControllerDelegateから safariViewControllerDidFinish (_ コントローラ:SFSafariViewController) を実装して、ユーザーが「完了」ボタンを使用してsvcをキャンセルしたタイミングを把握します。 この関数では、認証が取り消されたことをSDKに通知するには、次を呼び出す必要があります。
code language-obj-c accessEnabler.setSelectedProvider(nil)