在iOS10上安裝新App, 第一次打開時會詢問使用者"是否允許應用使用資料"(僅針對國行且需要連接配接移動網絡的裝置), 如下圖所示, 在使用者點選允許之前, App是無法聯網的, 這意味着所有網絡請求都是失敗的.
詢問使用者”是否允許應用使用資料”
問題
這個問題導緻的直接結果就是使用者進入首頁時是一片空白, 對使用者來說很不友好. 目前不少App都沒有針對這個問題進行處理, 需要使用者手動重新整理, 當然也有做得比較好的,比如加一個”檢視解決方案”之類的按鈕, 告訴使用者為什麼會出現這種問題以及解決辦法.
但是作為開發者, 感覺不能忍, 雖然主要原因可能是這個功能出的太倉促以至于蘋果沒來得及提供對應的API, 但是我們還是應該嘗試去解決一下.
解決辦法
其實方法很簡單, 使用AFNetworking就可以搞定.
大家都知道, AFN可以監測網絡狀況, 當第一次監測到網絡是WiFi或移動網絡時就說明使用者授權成功了, 這時候發個通知讓首頁重新加載就可以了.(似不似, 就這麼簡單嘛)
至于這個是不是第一次, 可以用鑰匙串存儲記錄一下(什麼? 你覺得太麻煩? 當然你不記錄也行, 隻是每次啟動都會請求兩次也沒什麼大不了)
經測試, 使用者未點選允許之前, AFN監測到網絡的狀态是AFNetworkReachabilityStatusNotReachable, 點選允許後(如果手機網絡是通暢的), 要麼是WiFi要麼是移動網絡, 是以這個方案是可行的. Demo在這, 戳我下載下傳
有人說使用CoreTelephony架構的CTCellularData也是可以的, 大家可以自行測試.
備注
這個方案僅針對第一次安裝App時. 如果使用者是更新App, 那麼第一次啟動時由于鑰匙串沒有擷取到相應資訊會誤以為是第一次安裝, 是以會導緻首頁資料請求兩次, 個人覺得影響不大, 因為隻是這一次會請求兩次嘛. 最後, 如果大家有更好的方案可以拿出來分享一下(*^__^*)
作者:向着黑暗出發
連結:https://www.jianshu.com/p/4ad55f6878a0
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。