iOS 權限和探索

自 iOS 14 起,作業系統會強制執行新的限制和權限,影響 Cast 使用者體驗。這也會影響您在應用程式中建立 Cast SDK 的方式。如要讓應用程式在最新版 iOS 中繼續使用 Cast 功能,您必須進行更新來處理這些權限變更。

iOS 14

開發人員應將 iOS Cast 傳送端應用程式更新至 Google Cast SDK 4.6.0 以上版本。這些版本支援 iOS 14 及其需求。

從 iOS 14 開始,在區域網路掃描裝置的應用程式將透過一次性權限對話方塊,提示使用者尋找並連線至本機網路裝置。Cast 平台會使用區域網路探索及控制投放裝置,因此如果使用者拒絕授予權限,就無法投放裝置。

為改善使用者體驗,我們將針對使用標準裝置挑選器的應用程式,對 SDK 進行一些 UX 修改。這些使用者體驗修改可讓使用者更清楚瞭解需要本機網路存取權限的原因,以及如何在停用區域網路裝置存取權的情況下啟用投放功能。

針對使用 4.4.8 或以下版本的 Cast SDK 建構的應用程式,只要以 Xcode 11.7 以下版本建構的應用程式,就能繼續運作。如果您使用 Xcode 12 或以上版本建構 iOS 14,建議您更新至 Cast SDK 4.6.0 以上版本,確保 Cast 應用程式能繼續正常運作。

如需使用 CocoaPods 下載 Cast iOS SDK 4.6.0 以上版本,請按照 CocoaPods 設定中的指示操作,或按照手動設定的方式手動下載。這個版本包括基礎探索機制的變動,以便讓使用 Xcode 12 建構的應用程式尋找網路上的投放裝置。「投放」按鈕現在應會一直顯示在畫面上。當使用者輕觸「投放」按鈕時,如果沒有可用的裝置,系統會顯示對話方塊,說明無法使用裝置的原因,包括如何重新啟用區域網路存取權限的資訊。

Cast SDK 相關異動

首次投放

使用者首次嘗試投放內容時,系統會顯示區域網路存取權 (LNA) 插頁式對話方塊,說明需要本機網路存取權的原因,接著顯示 Apple 提供的 iOS 本機網路存取權限提示訊息。以下模擬說明這個流程:

區域網路存取權限流程

無法投放

從 iOS 傳送端 SDK 4.6.0 開始,當使用者連上 Wi-Fi 時,一律顯示「投放」按鈕。當投放裝置無法使用時,輕觸「投放」按鈕會顯示對話方塊,為使用者提供投放無法使用的可能原因提示,如以下模擬圖所示:

無法使用投放功能的流程

在 iOS 14 上更新應用程式

  1. 將 Cast iOS SDK 4.8.1 新增至專案

    如果使用 CocoaPods,請使用 pod update 將 4.8.1 SDK 新增至專案。

    否則,請 手動提取 SDK

  2. Info.plist 中新增 NSBonjourServices

    Info.plist 中指定 NSBonjourServices,即可允許在 iOS 14 上成功探索區域網路。

    您必須同時將 _googlecast._tcp_<your-app-id>._googlecast._tcp 新增為服務,裝置探索功能才能正常運作。

    appID 是您的接收器 ID,也就是 GCKDiscoveryCriteria 中定義的 ID。

    更新以下 NSBonjourServices 範例定義,並將「ABCD1234」替換成您的應用程式 ID。

    <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} 會使用區域網路尋找你 Wi-Fi 網路上支援 Cast 的裝置。</string>

    這則訊息會顯示在「iOS 區域網路存取權」對話方塊中,如模擬圖所示。

    投放區域網路存取權限對話方塊圖片
  4. 將應用程式重新發布到 Apple App Store

    建議您盡快使用 4.8.1 重新發布應用程式。

自訂項目

啟動投放裝置探索功能

根據預設,系統會在使用者首次輕觸「投放」按鈕 (GCKUICastButton) 時啟動探索投放裝置。如果這是使用者第一次在升級至 iOS 14 後嘗試在區域網路使用投放應用程式,系統會顯示新的 LNA 插頁式廣告,接著顯示 iOS 區域網路存取權限對話方塊。

您可以使用新標記控制裝置探索的時間,以及某些使用者體驗元素的行為:

startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)

預設值為 true。 這個標記僅適用於標記 GCKCastOptions::disableDiscoveryAutostart 設為 false 的情況。

如果設為 true,當使用者首次輕觸 GCKUICastButton 時,系統就會開始探索投放裝置。系統會向使用者顯示資訊訊息,讓使用者瞭解需要區域網路權限的原因。附加了 iOS 14 LNA 訊息。 系統會在訊息確認後開始探索投放裝置。

在後續的應用程式啟動時,GCKUICastButton 一律會顯示。

如果設為 false,系統將根據標記 GCKCastOptions::disableDiscoveryAutostart 的值開始探索裝置。

常見問題

如果使用 Cast SDK 4.4.8 和 Xcode 12 重新發布 Cast 發送端應用程式,會發生什麼事?

除非您已從 Apple 取得網路多點傳播授權,否則您的應用程式可能無法探索區域網路上的投放裝置。 請注意,Apple 只會針對支援 Cast 的用途授予多點傳播授權。 如果打算使用 Xcode 12 建構應用程式,請使用 Cast 4.6.0 發布應用程式。

如果我使用新的 Cast SDK 重新發布應用程式,我的使用者在 iOS 13 以下版本中會執行哪些作業?

他們會繼續看到重新發布應用程式前享有的使用者體驗。只有 iOS 14 裝置的使用者才能看見這類變更。

新版 Cast SDK 發布後,我該如何更新應用程式?

  • 更新應用程式的 Info.plist,加入區域網路用量說明。
  • NSBonjourServices 新增至應用程式的 Info.plist,並提供 Cast 適用的 Bonjour 服務名稱和應用程式 ID。
  • 升級傳送端應用程式即可使用 Cast SDK 4.6.0。
  • 將應用程式重新發布至 Apple App Store。

為什麼升級至 4.6.0 後,自訂裝置挑選器中不再顯示裝置?

如果使用的是自訂裝置挑選器,而非標準裝置挑選器,就會發生這項已知問題。在 Cast SDK 4.4.8 以下版本中,裝置掃描功能會自動進行。自 4.6.0 版起,您必須在 GCKDiscoveryManager 類別上明確呼叫 startDiscovery 方法,才能啟動裝置探索程序。

之所以出現這項異動,是因為應用程式首次掃描後,會顯示區域網路存取權 (LNA) 權限提示。這可能會導致權限對話方塊在應用程式中隨機顯示。

在 iOS 14 中,如果開發人員為應用程式建立自訂裝置挑選器,就會提供一次性的插頁式廣告,然後再於 iOS 14 中對裝置執行掃描作業。

iOS 13

在 iOS 13 中,導入了新的權限規定,會影響使用 Google Cast SDK 的應用程式。

自 Google Cast SDK 4.4.3 版起,您可以使用不需要 Bluetooth® 權限的其他 SDK。您可以在開發人員網站和新的 google-cast-sdk-no-bluetooth Cocoapods 上取得這項資訊。

應用程式詳細資料

以下根據您目前使用的 iOS SDK 版本,提供不同的細目:

使用 iOS 12 SDK 或以下版本建構的應用程式

  • 建議做法。在 iOS 13 上執行時,裝置探索效能可能會降低,但仍可正常運作。強烈建議開發人員升級至 Cast SDK 4.4.4 版 (如適用)。
  • iOS 13 會提示使用者授予應用程式藍牙®權限。

使用 iOS 13 SDK 建立的應用程式

  • 敬請採取行動:如果使用者未授予位置存取權,更新至 Cast SDK 4.4.4 版本或投放按鈕可能不會顯示。請務必升級至 Cast SDK 4.4.4,以確保在 iOS 13 上享有可靠的投放體驗。