1. 程式人生 > >新機首次安裝 app,請求網路許可權“是否允許使用資料”,點允許後,首頁資料為空

新機首次安裝 app,請求網路許可權“是否允許使用資料”,點允許後,首頁資料為空

      現在發現一個問題,在iOS10以上中,當app在手機第一次安裝的時候,蘋果會預設彈出一個是否允許app使用資料的彈框,允許後首頁一片空白,之前做那個app沒在關注過這一次,因為首頁有下拉重新整理這個功能,並且這個問題是這個裝置第一次安裝才出現,也沒太關注過這個問題,現在開發新的app,首頁沒有下拉重新整理,第一次安裝就直接空白。

      查看了一些資料說是由於咱大陸相關部門出臺的新規定指出,應用在未經使用者允許的前提下,系統不能授予其使用聯網、獲取定位功能,iphone在iOS10作業系統中加入了關於應用使用資料的授權彈框提示,使用者在iOS10以上系統中第一次開啟應用時,會被要求對於是否授予應用聯網許可權進行選擇。

      這種現象在解除安裝後,再重新裝,也不會出現這種現象,問題只會出現在這臺裝置第一次安裝、第一次啟動的情況下,如果把手機抹掉、重置,問題還能重現。

     解決思路是

1.先判斷這個裝置是否是第一次安裝這個app,可以通過keychain方式來儲存資料來判斷,因為這種方式儲存的資訊不會因為因app被刪除而丟失。

2.可以通過MyReachability第三方庫來監聽網路的變化,如果監測到有網並且該裝置是第一次安裝就重新獲取首頁資料。

程式碼

- (void)writeUUID

{

if ([KeyChainHelperload:@"private"] == nil) {

//

設定資料

        [KeyChainHelpersave:@"private"data:[[NSUUIDUUID] UUIDString]];

    }

}

- (void)checkNetworkStatus:(NSNotification *)notifi

{

MyReachability *NetReachable = notifi.object;

NetworkStatus NetStatus = [NetReachable currentReachabilityStatus];

//由於首次安裝 app,會彈出請求網路許可權是否允許使用資料允許之前沒網

允許之後才有網有網後通知去下載首頁的資料

if (NetStatus != NotReachable && [KeyChainHelperload:@"private"] == nil) {

        [[NSNotificationCenterdefaultCenter] postNotificationName:DOWNLOADHOMEDATAobject:nil];

        [selfgetSdWhiteList];

        [selfwriteUUID];

    }

    [[NSUserDefaultsstandardUserDefaults] synchronize];

}