iOS 自動關閉行動數據

Greaso Wang
Greaso91
Published in
4 min readMar 17, 2020

從客服收到回報的心路歷程, 國行版 iPhone

Photo by Valentin Lacoste on Unsplash

大綱

一、情境描述

二、資訊整理

三、問題釐清

實際上從接到問題到解決大致上分成這三個步驟,最後再整理一下過程中遇到的狀況和新得到的資訊

上菜

一、情境描述

陸續收到客服回報 用戶使用 APP 無法正確連線

客戶A 截圖 : 一打開 APP 就跳出連線失敗的錯誤訊息

回:請用戶至設定檢查 APP 行動數據是否正確開啟

客戶B.C 影片: 一打開 APP 就跳出連線失敗的錯誤訊息,設定也有正確開啟行動數據,但進入 APP 後會自動關閉。

確認正常開啟行動數據
進入 APP 後,自動關閉行動數據
OS:
holy shit,發生什麼事情了,沒聽說過有這災情啊 ...

二、資訊整理

好吧,竟然真的有這種狀況的話就得好好研究一下,指不定我發現了什麼 iOS 的 BUG (笑。

觀察了 B.C 兩位用戶的操作示範影片,我條列了幾點要注意的地方

1. — 這是一個系統層級的 BUG,正常來說開發者是沒有權限更改用戶設定的

我大蘋果是不會讓上架的 APP 可以替用戶做系統層的行為
( 雖然有 WebView 幫用戶關機的黑暗法 ...)

2 . — 同樣使用繁體字,測試機的設定不同

測試機的繁中
不同之處:
1. 用詞不同 無線數據 vs 行動數據
2. 開關樣式不同 cell select vs switch

3 . — 火眼金睛的我觀察到一個共通點

QQ,真的是 QQ 讓我發現了這一切的關鍵,兩位用戶同時安裝了這個 APP

果斷開始改用中文關鍵字及中國相關開發平台搜尋。

三、問題釐清

出現了幾個令我恍然大悟的標題

  • 国行独有BUG — — iOS10无线局域网权限问题解决方案
  • iOS 10不提示「是否允许应用访问数据」,导致应用无法使用的解决方案
  • 修复iOS 10首次安装app时,不会弹出”允许xxx使用数据?”授权框的bug

原因(大陸版本的裝置以下簡稱 國行版):

系統自行調用

因配合中國大陸法規, iOS 10 以後國行版使用行動數據需要向用戶申明 (如同推播、相簿存取),因 iOS 系統 BUG 在用戶首次申明拒絕或根本沒跳出的情況下可能造成此狀況。

目前看平台討論從 iOS 10 ~ iOS 13.2 都有傳出災情

問題釐清後我立刻決定要查詢兩件事情的可行性

  • 如何產生數據權限請求

數據權限請求的行為和一般使用推播、相簿及定位等功能相同,應該有類似的方式從 info.plist 引入

FTNetworkSupport 是在 PrivateFrameworks 詳情可以參考開發者解決方案的連結,只能用在企業 APP,一般上架給普羅大眾的話是沒辦法使用的。
  • 如何分辨裝置為國行版

如果可以引入是否可以針對國行版裝置實作即可,避免影響其他版本的裝置

方法一、

從 UIDevice 讀取 identifier 只能分辨部分裝置為港版、國行版,新的裝置如 iPhone 11 等 id 是相同的。

方法二、

紅圈處 TA 表示 TAIWAN

TA為台灣、ZP是港版、CH是國行、LL是美版

其他國家代號請參考我

在專案中取得用戶裝置的機型型號

這也是私有 API,連結找不到 QQQ 有找到再補上

相關連結

一直以來都沒有意識到國行版這件事情,這次踩到這個洞想必對 Debug 很有幫助,希望能幫助到跟我一樣沒頭緒的開發者,不知道有沒有專精國行達人能幫我補充,有任何問題歡迎指正。

--

--