從 iOS 14 開始,作業系統會強制執行會影響 Cast 使用者體驗的新限制和權限。這也會影響您建構 Cast SDK 的方式。如要讓應用程式使用最新版 iOS 維持投放功能,您必須更新以便處理這些權限變更。
iOS 14
開發人員應將 iOS Cast 發送端應用程式更新為 Google Cast SDK 4.6.0 以上版本。這些版本支援 iOS 14 和其需求。
從 iOS 14 開始,針對區域網路掃描裝置的應用程式,現在將提示使用者一次性權限對話方塊,以找出並連線至區域網路裝置。投放平台會使用區域網路探索及控制投放裝置,因此如果使用者拒絕授權,就無法投放內容。
為改善使用者體驗,針對使用標準裝置挑選器的應用程式,我們對 SDK 進行了一些使用者體驗修改。這類使用者體驗修改可讓使用者更清楚瞭解為何需要本機網路存取權限,以及如何在區域網路裝置存取權停用時啟用投放功能。
使用 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 設定下載,或是按照手動設定手動操作。此版本包含基礎探索機制的變更,允許透過 Xcode 12 建構的應用程式在網路上尋找投放裝置。「投放」按鈕現在應一律顯示。當使用者輕觸「投放」按鈕時,沒有可用的裝置,系統會顯示對話方塊,說明無法使用裝置的原因,包括如何重新啟用區域網路存取權限。
Cast SDK 變更
首次投放
使用者初次嘗試投放時,系統會顯示區域網路存取權 (LNA) 插頁式廣告對話方塊,藉此說明需要使用本機網路存取權的原因,接著再顯示 Apple 提供的 iOS 本機網路存取權限提示。以下模擬圖說明流程:
無法投放
從 iOS 寄件者 SDK 4.6.0 開始,當使用者連線至 Wi-Fi 時,系統會顯示「投放」按鈕。當投放裝置無法使用時,輕觸「投放」按鈕會顯示對話方塊,向使用者說明無法投放的原因,如以下模擬結果所示:
在 iOS 14 上更新應用程式
-
將 Cast iOS SDK 4.8.0 新增至專案
如果使用 CocoaPods,請使用
pod update
將 4.8.0 SDK 新增至專案。否則,請 手動提取 SDK。
-
將
NSBonjourServices
新增到Info.plist
在
Info.plist
中指定NSBonjourServices
,讓本機網路探索可以在 iOS 14 上成功執行。您必須同時新增
_googlecast._tcp
和_<your-app-id>._googlecast._tcp
做為服務,裝置探索才能正常運作。appID 是接收器 ID,也就是您在
GCKDiscoveryCriteria
中定義的 ID。更新下列
NSBonjourServices
定義,並將「ABCD1234」改成您的應用程式 ID。 -
將
NSLocalNetworkUsageDescription
新增到Info.plist
我們強烈建議您在應用程式的
Info.plist
檔案中加入NSLocalNetworkUsageDescription
的應用程式專屬權限字串,例如說明 Cast 探索和其他探索服務 (例如 DIAL),藉此自訂該訊息。這則訊息會顯示在 iOS 區域網路存取權對話方塊中,如模擬圖所示。
-
將應用程式重新發布至 Apple App Store
建議您盡快使用 4.8.0 重新發布應用程式。
自訂項目
投放裝置探索啟動畫面
根據預設,當使用者首次輕觸「投放」按鈕 (GCKUICastButton
) 時,系統會啟動投放裝置探索。如果這是使用者第一次升級至 iOS 14 後,嘗試透過區域網路使用「投放」應用程式,則新的 LNA 插頁式廣告將接著顯示「iOS 區域網路存取權」對話方塊。
您可以使用新的旗標控制裝置探索的開始和特定元素行為:
startDiscoveryAfterFirstTapOnCastButton: BOOL(true/false)
預設值為 true
。這個標記 GCKCastOptions::disableDiscoveryAutostart
設為 false
時,才能使用這個標記。
如果設為 true
,當使用者首次輕觸 GCKUICastButton
時,投放裝置探索就會開始。系統會向使用者顯示說明訊息,讓使用者瞭解為什麼需要本機網路權限。訊息後面會顯示 iOS 14 LNA 訊息。訊息會在訊息確認完畢後開始執行。
後續啟動的應用程式一律會顯示 GCKUICastButton
。
如果設為 false
,系統將根據旗標 GCKCastOptions::disableDiscoveryAutostart
的值開始探索裝置。
常見問題
如果使用 Cast SDK v4.4.8 和 Xcode 12 重新發布 Cast 寄件者應用程式,會發生什麼事?
除非您已向 Apple 取得網路多點授權,否則應用程式可能無法在區域網路上探索投放裝置。請注意,Apple 不會只為了支援 Cast ,提供多點授權。 如果您打算使用 Xcode 12 進行建構,應使用 Cast 4.6.0 發布應用程式。
如果我使用新版 Cast SDK 重新發布應用程式,我的使用者在 iOS 13 以下版本上執行的體驗會是什麼?
使用者重新發布應用程式前,仍會看到相同的使用者體驗。系統只會向使用者顯示搭載 iOS 14 版本的使用者。
新版 Cast SDK 發布後,我需要更新應用程式嗎?
- 更新應用程式的
Info.plist
,加入區域網路使用說明。 - 在應用程式的
Info.plist
中新增NSBonjourServices
,並提供 Cast 和您的應用程式 ID 的 Bonjour 服務名稱。 - 升級寄件者應用程式,即可使用 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 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 會提示使用者授予 Bluetooth® 權限給應用程式。
使用 iOS 13 SDK 建構的應用程式
- 敬請採取行動:針對 Cast SDK 4.4.4 版的更新,若使用者未授予位置存取權,系統可能不會顯示投放按鈕。您必須升級至 Cast SDK 4.4.4,才能確保在 iOS 13 上享有穩定的投放體驗。