ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
tvOSアプリにおけるサインインのシンプル化
iOSデバイスやiPadOSデバイスでユーザがFace IDまたはTouch IDを使用して購入を承認したり、tvOS Appにサインインしたりする方法を紹介します。Appを使う人のサインインを簡素化して、楽しみたいコンテンツに素早くアクセスできるようにする方法を紹介します。簡素化されたサインインプロセスを設定する方法と、Apple TV向けの優れたサインイン体験を作成するためのベストプラクティスを紹介します。 このセッションを最大限活かしていただくためには、関連する分野とAuthentication Servicesフレームワークの基礎を理解していることが推奨されます。
リソース
関連ビデオ
WWDC22
WWDC21
-
ダウンロード
♪ ♪ こんにちは ケイレブです tvOSチームの ソフトウェアエンジニアです 本日は tvOS 15での サインインの 改善点について お話ししたいと思います 私たちは Apple TVをお使いの すべての方が 出来るだけスムーズに コンテンツにアクセス できるよう考えています つまり Appへの サインインのプロセスは スムーズかつ面倒が無い 必要があります 最も一般的な サインインの方法は パスワードを 使用することです ユーザーは強力で使い回しの 無いパスワードを 推奨されますが 入力は面倒です tvOS 15では パスワードによる サインインをこれまでになく 簡単に行う優れた 新機能があります 新しいシステムサインイン 画面から始めます この画面には 重要な機能があります まず tvOS全体で 一貫した サインイン体験を提供します 次に iPhoneまたは iPadを使用して サインインが可能なことを ユーザーに通知します また Appがサポートする 他のサインインタイプの オプションを ユーザーに提供します これは後で詳しく説明します まず iPhoneやiPadでの サインインから説明します Appでサインインを 開始した後に iPhoneを起動すると Apple TVからこのような 通知が表示されます 通知をタップすると iPhoneはサインインの プロセスをガイドします iCloudキーチェーンからの 認証が提案され Face IDを使用して サインインできます すると 認証情報は Apple TVに返されます Appのサインインは完了し ユーザーはコンテンツに アクセスできます ここでお伝えしたいのは テキスト入力が 不要だということです Apple TVと iPhoneやiPadが 協力して ユーザーの サインインが完了する 最高の体験を提供できます このサインイン方法は 簡単に実装可能です すべてのApple プラットフォームには Appでのサインイン用の ハイレベルなAPIが用意されています tvOS 15では特に強力です 少しのコードで 先ほど紹介した素晴らしい サインイン体験を 最大限に活用できます ではご紹介します Appの関連ドメインの 構成から始めましょう 関連ドメインはAppと ドメインの間に セキュアなリンクを確立します これにより Apple TVと iPhoneやiPadが連携して サインインに使用する資格 情報を安全に提案できます まず 自分のドメインで ホストされている apple-app-site-association ファイルの webcredentialsキーに tvOS Appの識別子を記載します
次に Associated Domain機能を Xcodeで tvOS Appに対し追加します 最後にwebcredentials プレフィックスを使用して Associated Domainsに ドメインを追加します Appでのウェブ認証ドメインの 設定については WWDC 2017のビデオから “Introducing Password AutoFill for Apps" をご覧ください 次に Authentication Servicesを使用して 認証を要求する方法を 紹介します コードを見てみましょう こちらが認証を要求する際に 必要な基本的な要素です すでにiOSやmacOSで AuthenticationServices APIを ご利用なら 見覚えがあるでしょう まず パスワード リクエストを使用して ASAuthorizationController インスタンスを作成します このAPIの強力な点は 複数の異なる 種類のリクエストを 指定できることです Appが Appleでサインイン もサポートしていれば Apple IDリクエストを 承認リクエストの配列に 含めることができます 複数のリクエストを 指定すると iPhoneやiPadでは サインインする際に どのタイプの認証 資格を使用するかを ユーザーが決定できます 次に 自身を 承認コントローラーの デリゲートに設定し performRequestsを 呼び出して サインインを開始します
ここで ASAuthorization- ControllerDelegateから いくつかのメソッドを 実装する必要があります
ユーザーがiPhoneや iPadで使用する 認証資格を選択すると システムは didCompleteWith Authorizationを呼び出します
これで認証資格を 持つユーザーと パスワードを使って サインインを完了できます 失敗した場合 didComplete WithErrorが呼び出されます
ユーザーがサインインを キャンセルすると Appがメインの サインインUIに 戻るよう このメソッドに戻ります それ以外の場合 問題が発生したことと 再試行する必要があることを ユーザーに通知します 次にシステムの サインイン画面を カスタマイズする 方法を紹介します カスタム認証メソッドAPIは Appがサポートする 他のログインタイプの ボタンを表示できます
“.other”は 非常に柔軟性があります このオプションを使用すると ユーザー名と パスワードを求めるような 手動のサインインフローに 直接移動できます または ユーザーが 別のタイプのサインインを 選択して実行できる 独自のUIにナビゲート することもできます ユーザーが テレビプロバイダの アカウントを使用して サインインするAppの場合 .videoSubscriberAccount を使用します .restorePurchaseは ユーザーが App内課金をリストアして サインインできます ユーザーがこれらの カスタム認証方法のどれかを 選択すると Appは 要求されたサインイン フローを開始できます その仕組みを見てみましょう まず 先ほどお見せした ASAuthorizationController コードに戻ります カスタムサインイン オプションを表示するために 認証コントローラーに customAuthorizationMethods プロパティを設定します この例では .otherと .restorePurchaseを 使用して サインイン画面に “Sign in Manually”と “Restore Purchase”を 表示します Appに合わせて 適切な値を選択してください
ユーザーがカスタム 認証方法を選択すると authorizationController を使用して didCompleteWithCustom Methodを呼び出します この方法では 渡された値をチェックして ユーザーが要求する種類の サインインを実行できます
最後にいくつかの ベストプラクティスを ご紹介します tvOSでの 最高のサインイン体験は 1つの“Sign In” ボタンから始まります ユーザーがサインインする際 明確な選択肢を提供して ユーザーをガイドします 既存のサインイン体験を 新しいシステムの サインイン画面にすることで ユーザーは 常にiPhoneやiPadで サインインが可能になります カスタム認証メソッドAPIは ユーザーに追加のサインイン オプションを提供する 優れた方法です tvOS 15では 優れたサインイン体験を これまで以上に 簡単に構築できます システムサインイン 画面を使用すると ユーザーはiPhoneやiPadで サインインできます AuthenticationServicesの 新しい強力な APIを使えば 簡単に始めることができます
このプレゼンで紹介した 例を詳しく見るには 開発者用Appの このセッションの サンプルコード プロジェクトをどうぞ AuthenticationServices フレームワークを使い すべてのApple プラットフォームで 優れたサインイン体験を 構築するための 方法については WWDC 2019の “認証の新機能” ビデオをご覧ください ありがとうございました [軽快な音楽]
-
-
3:28 - Request a credential
let controller = ASAuthorizationController(authorizationRequests: [ ASAuthorizationPasswordProvider().createRequest() ]) controller.delegate = self controller.performRequests()
-
4:19 - Finish signing in
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { if let credential = authorization.credential as? ASPasswordCredential { // Use the credential to sign in } }
-
4:43 - Handle errors
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { if case ASAuthorizationError.canceled = error { return } // Let the user know something went wrong }
-
6:00 - Specify custom authorization methods
controller.customAuthorizationMethods = [ // Sign in Manually .other, // Restore Purchase .restorePurchase ]
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。