iOS 系統(tǒng)版本升級至 14.0 版本后,用戶首次使用集成了聲網(wǎng) iOS 語音或視頻 SDK 的 app 時會看到查找本地網(wǎng)絡(luò)設(shè)備的彈窗提示。默認彈窗界面如下圖所示:
問題原因
iOS 14.0 版本新增了關(guān)于本地網(wǎng)絡(luò)設(shè)備的隱私權(quán)限,app 需要向用戶獲取 Privacy - Local Network Usage Description 權(quán)限,才能訪問用戶的本地網(wǎng)絡(luò)設(shè)備。
3.1.2 之前版本的 iOS 語音或視頻 SDK 會檢測客戶端與用戶本地網(wǎng)關(guān)連通質(zhì)量,并通過 reportRtcStats 的 gatewayRtt 參數(shù)報告客戶端到本地路由器的往返延時。iOS 系統(tǒng)將該連通性檢測判斷為查找本地網(wǎng)絡(luò)設(shè)備。因此,雖然 app 不會連接用戶本地網(wǎng)絡(luò)上的任何設(shè)備,但用戶首次使用 app 時會看到查找本地網(wǎng)絡(luò)設(shè)備的彈窗提示。
解決方案
方案 1. 使用 3.1.2 及以上版本 SDK
聲網(wǎng)在 3.1.2 版 iOS SDK 中關(guān)閉了本地網(wǎng)絡(luò)連通質(zhì)量報告功能,如果你的業(yè)務(wù)不依賴該功能,聲網(wǎng)建議你選擇此方案。
在你的 app 中集成 3.1.2 及以上版本 SDK,用戶使用 app 時就不會看到查找本地網(wǎng)絡(luò)設(shè)備的彈窗提示。自 3.1.2 版本起,reportRtcStats 的 gatewayRtt 參數(shù)會失效(值恒為 -1),請不要使用該參數(shù)獲取客戶端到本地路由器的往返延時。
方案 2. 修改項目權(quán)限描述[](javascript:;)
如果你的業(yè)務(wù)需要獲取客戶端到本地路由器的往返延時,聲網(wǎng)建議你選擇此方案。
在你的 app 中集成 3.1.2 以下版本 SDK,用戶在 iOS 14.0 設(shè)備上首次使用 app 時看到的彈窗提示默認為:此 App 將可發(fā)現(xiàn)和連接到您所用網(wǎng)絡(luò)上的設(shè)備。聲網(wǎng)建議你結(jié)合你的業(yè)務(wù)需求修改彈窗提示內(nèi)容,修改步驟如下:
- 打開 Xcode 項目,在
info.plist文件中,點擊 + 圖標(biāo)添加 Privacy - Local Network Usage Description。 - 結(jié)合你的業(yè)務(wù)需求,在 Privacy - Local Network Usage Description 的 Value 欄中填寫獲取本地網(wǎng)絡(luò)設(shè)備權(quán)限的目的。例如:此 app 不會連接到您所用網(wǎng)絡(luò)上的設(shè)備,只會檢測與您本地網(wǎng)關(guān)的連通性。 image
修改后,用戶首次使用 app 時收到的彈窗界面如下圖所示:
- 如果用戶點擊好,app 可以通過
reportRtcStats的gatewayRtt參數(shù)獲取客戶端到本地路由器的往返延時。 - 如果用戶點擊不允許,
reportRtcStats的gatewayRtt參數(shù)會失效(值恒為-1),app 無法通過該參數(shù)獲取客戶端到本地路由器的往返延時。
用戶也可以在 iOS 設(shè)備的設(shè)置->隱私->本地網(wǎng)絡(luò)界面修改 app 的權(quán)限設(shè)置。