iOS の権限と検出

iOS 14 以降では、オペレーティング システムに新しい制限と権限が適用され、キャストのユーザー エクスペリエンスに影響します。また、アプリに Cast SDK を組み込む方法にも影響します。アプリが最新バージョンの iOS でキャスト機能を維持するには、これらの権限の変更に対応するよう更新する必要があります。

iOS 14

デベロッパーは、iOS Cast 送信側アプリを Google Cast SDK v4.6.0 以降に更新する必要があります。これらのバージョンは、iOS 14 とその要件をサポートしています。

iOS 14 以降では、ローカル ネットワーク上のデバイスをスキャンするアプリで、ローカル ネットワーク デバイスを検出して接続するための 1 回限りの権限ダイアログがユーザーに表示されるようになります。Cast プラットフォームはローカル ネットワークを使用して Cast デバイスを検出して制御するため、ユーザーが権限を拒否するとキャストできなくなります。

ユーザー エクスペリエンスを向上させるため、標準のデバイス選択ツールを使用しているアプリの SDK に UX の変更を加えています。これらの UX の変更により、ローカル ネットワークへのアクセス権が必要な理由と、ローカル ネットワーク デバイスへのアクセスが無効になっている場合にキャストを有効にする方法が、ユーザーにわかりやすくなります。

v4.4.8 以前の Cast SDK を使用してビルドされたアプリは、Xcode 11.7 以前でビルドされている限り引き続き動作します。Xcode 12 以降で iOS 14 用にビルドする場合は、Cast SDK v4.6.0 以降に更新して、Cast アプリが引き続き正常に動作するようにすることをおすすめします。

Cast iOS SDK v4.6.0 以降は、CocoaPods の設定に従って CocoaPods でダウンロードするか、手動設定に従って手動でダウンロードできます。このリリースには、Xcode 12 でビルドされたアプリがネットワーク上の Cast デバイスを検出できるように、基盤となる検出メカニズムの変更が含まれています。キャスト アイコンは常に表示されるようになります。ユーザーがキャスト アイコンをタップしたときにデバイスが利用できない場合は、デバイスが利用できない理由に関するガイダンスがダイアログに表示されます。これには、ローカル ネットワークへのアクセス権を再度有効にする方法も含まれます。

Cast SDK の変更点

初回キャスト

ユーザーが初めてキャストしようとすると、ローカル ネットワークへのアクセス(LNA)が必要な理由を説明するインタースティシャル ダイアログが表示され、続いて Apple 提供の iOS ローカル ネットワークへのアクセス権のプロンプトが表示されます。以下のモックは、そのフローを示しています。

ローカル ネットワーク アクセス権限のフロー

キャストを利用できない

iOS 送信側 SDK 4.6.0 以降では、ユーザーが Wi-Fi に接続している場合、キャスト アイコンが常に表示されます。Cast デバイスが利用できない場合、キャスト アイコンをタップすると、以下のモックに示すように、キャストが利用できない理由のヒントがダイアログに表示されます。

Flow with Cast を利用できない

iOS 14 でアプリを更新する

  1. プロジェクトに Cast iOS SDK 4.8.4 を追加する

    CocoaPods を使用している場合は、pod update を使用して 4.8.4 SDK をプロジェクトに追加します。

    それ以外の場合は、 SDK を手動でプルします

  2. Info.plistNSBonjourServices を追加する

    Info.plistNSBonjourServices を指定して、iOS 14 でローカル ネットワーク検出が成功するようにします。

    デバイス検出が正しく機能するには、_googlecast._tcp_<your-app-id>._googlecast._tcp の両方をサービスとして追加する必要があります。

    appID は receiverID であり、 GCKDiscoveryCriteria で定義されている ID と同じです。

    次の例の NSBonjourServices 定義を更新し、「ABCD1234」を appID に置き換えます。

    <key>NSBonjourServices</key>
    <array>
      <string>_googlecast._tcp</string>
      <string>_ABCD1234._googlecast._tcp</string>
    </array>
  3. NSLocalNetworkUsageDescription を追加する Info.plist

    アプリの Info.plist ファイルに NSLocalNetworkUsageDescription のアプリ固有の権限文字列を追加して、ローカル ネットワークのプロンプトに表示されるメッセージをカスタマイズすることを強くおすすめします。たとえば、Cast 検出や DIAL などの他の検出サービスについて説明します。

    <key>NSLocalNetworkUsageDescription</key>
    <string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
    network.</string>

    このメッセージは、モックに示すように、iOS ローカル ネットワークへのアクセス ダイアログの一部として表示されます。

    キャストのローカル ネットワーク アクセス権限のダイアログの画像
  4. アプリを Apple App Store に再リリースする

    できるだけ早く 4.8.4 を使用してアプリを再リリースすることをおすすめします。

カスタマイズ

キャスト デバイス検出の開始

デフォルトでは、ユーザーがキャスト アイコン(GCKUICastButton)を初めてタップしたときに、Cast デバイスの検出が開始されます。iOS 14 にアップグレードした後、ユーザーがローカル ネットワークで Cast アプリを初めて使用しようとすると、新しい LNA インタースティシャルが表示され、続いて iOS ローカル ネットワークへのアクセス権ダイアログが表示されます。

デバイス検出の開始タイミングと UX の特定の要素の動作を制御できる新しいフラグが用意されています。

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

デフォルト値は true です。このフラグは、フラグ GCKCastOptions::disableDiscoveryAutostartfalseに設定されている場合にのみ適用されます。

true に設定すると、ユーザーが GCKUICastButton を初めてタップしたときに、キャスト デバイスの検出が開始されます。ローカル ネットワークの権限が必要な理由を知らせる情報メッセージがユーザーに表示されます。そのメッセージの後に、iOS 14 LNA メッセージが表示されます。 メッセージが確認されると、Cast デバイスの検出が開始されます。

アプリを起動するたびに、GCKUICastButton が表示されます。

`false` に設定すると、デバイス検出は フラグ GCKCastOptions::disableDiscoveryAutostartの値に基づいて開始されます。

よくある質問

Cast SDK v4.4.8 と Xcode 12 を使用して Cast 送信側アプリを再リリースするとどうなりますか?

Apple からネットワーク マルチキャストのエンタイトルメントを取得していない限り、アプリがローカル ネットワーク上の Cast デバイスを検出できない可能性があります。 Apple は、Cast のサポートのみを 目的としてマルチキャストのエンタイトルメントを付与することはありません。 Xcode 12 でビルドする場合は、Cast 4.6.0 でアプリをリリースする必要があります。

新しい Cast SDK でアプリを再リリースした場合、どのような影響が iOS 13 以前で実行しているユーザーにありますか?

アプリを再リリースする前と同じユーザー エクスペリエンスが引き続き表示されます。ユーザーに表示される変更は、iOS 14 で実行しているユーザーに限定されます。

新しいバージョンの Cast SDK がリリースされたら、アプリを更新するにはどうすればよいですか?

  • アプリの Info.plist を更新して、ローカル ネットワーク の使用状況の説明を含めます。
  • アプリの Info.plistNSBonjourServicesを追加し、Cast とアプリ ID の Bonjour サービス名を指定します。
  • 送信側アプリをアップグレードして Cast SDK 4.6.0 を使用します。
  • アプリを Apple App Store に再リリースします。

4.6.0 にアップグレードした後、カスタム デバイス 選択ツールにデバイスが表示されなくなったのはなぜですか?

これは既知の問題で、標準のデバイス選択ツールではなくカスタム デバイス 選択ツールを使用している場合に発生する可能性があります。Cast SDK のバージョン 4.4.8 以前では、デバイスのスキャンは自動で行われていました。バージョン 4.6.0 以降では、 startDiscovery メソッドを GCKDiscoveryManager クラスで明示的に呼び出して、デバイス検出を開始する必要があります。

この変更の理由は、ローカル ネットワークへのアクセス(LNA) 権限のプロンプトが、アプリが初めてスキャンした後に表示されるためです。これにより、アプリ内のランダムな場所に権限ダイアログが表示される可能性があります アプリで。

アプリのカスタム デバイス選択ツールをビルドするデベロッパーは、iOS 14 で初めてデバイス スキャンを開始する前に、1 回限りのインタースティシャルを提供する必要があります。

iOS 13

iOS 13 では、Google Cast SDK を使用するアプリに影響する新しい権限要件が導入されました。

Google Cast SDK v4.4.3 以降では、Bluetooth® 権限を必要としない追加の SDK を利用できます。これは、デベロッパー サイトと新しい google-cast-sdk-no-bluetooth Cocoapods の両方で利用できます。

アプリの内訳

現在使用している iOS SDK のバージョンに応じて、内訳は次のようになります。

iOS 12 SDK 以前でビルドされたアプリ

  • 推奨される対応 。iOS 13 で実行するとデバイス検出のパフォーマンスが低下する可能性がありますが、引き続き機能します。デベロッパーは、Cast SDK v4.4.4 が利用可能になったらアップグレードすることを強くおすすめします。
  • iOS 13 では、アプリに Bluetooth® 権限を付与するようユーザーに求められます。

iOS 13 SDK でビルドされたアプリ

  • 対応が必要: Cast SDK 4.4.4 に更新しないと、ユーザーが位置情報の利用許可を付与しない場合、キャスト アイコンが 表示されないことがあります。iOS 13 で信頼性の高いキャスト エクスペリエンスを実現するには、Cast SDK 4.4.4 にアップグレードする必要があります。