解決iOS首次啟動app時,定位提示彈出框閃一下消失的情況。
阿新 • • 發佈:2019-01-26
這幾天由於專案整個框架大修改,遇到一個問題: 在真機上反覆測試時,發現系統定位的授權提示框出現的時間有問題,並不是像我們期望的那樣,當進入程式內部才彈出來,它出現的情況分以下幾種:
- 進入app內部,彈出允許定位提示框(正常情況);
- 未進入app,彈出提示框(此時提示框不消失);
- 未進入app,彈出提示框,進入app後,彈出框消失。
後來除錯發現,定位的入口寫在appdelegate裡面,首次進入app後,會模態出來一個歡迎頁面,兩者之間的執行順序有影響。
解決辦法:
1. 對於appdelegate裡封裝的定位入口,設定成公開方法;
2. 在模態出來的歡迎頁面的viewDidLoad執行定位入口的方法;
[(AppDelegate *)[UIApplication sharedApplication].delegate configureAPIKey];
3.本以為這樣子就ok了,但偶爾還是會出現上述bug,於是就讓它延遲0.5s再執行:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[SharedAppDelegate configureAPIKey];
});