IOS13 適配遇到的部分坑

IOS13更新對於開發者來說,並不算太友好。原因有如下幾點。

一、禁用私有屬性通過KVC賦值。

對這一點,是分開兩部分的。對於XCODE10以前的開發工具打包的安裝包,這些改變私有屬性的KVC方法在IOS13系統的手機上,並不會執行,就是說沒有效果。而對於XCODE11以後的開發工具打包的安裝包,則會自動檢測,一旦發現該方法調用了KVC修改了私有屬性,則會給出報錯斷言(如果連接了電腦真機調試),並直接閃退。

所以奉勸各位沒來得及適配13的小夥伴們,儘量能保留10版本或以下的XCODE,預防直接更新後,太多崩潰導致影響到開發進程。

附上IOS13查找statusBar的方法

//IOS13新增了UIStatusBarManager屬性
UIStatusBarManager *statusBarManager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
id _statusBar = nil;
if ([statusBarManager respondsToSelector:@selector(createLocalStatusBar)]) {
   UIView *_localStatusBar = [statusBarManager performSelector:@selector(createLocalStatusBar)];
    if ([_localStatusBar respondsToSelector:@selector(statusBar)]) {
       _statusBar = [_localStatusBar performSelector:@selector(statusBar)];
    }
}

這樣就可以做執行view的方法,但並不能改變statusBar的背景顏色。

 

二、新增暗黑模式,完全適配需要進行較大UI更換。

包括圖片,背景顏色,字體顏色等全方面的修改。以至於通常新版本里面並不能做到完全適配。這時候,我們有個投機的方法,直接添加代碼到info.plist裏面

<key>UIUserInterfaceStyle</key>
<string>Light</string>

這樣可以在APP內禁用掉暗黑模式。但長遠來說,蘋果還是希望我們的APP會支持暗黑模式,不久的將來,會強制APP開發者去適配。

三、部分常用三方框架會導致閃退

常見有MJExtension,fishhock等三方大牛庫,這個需要查找相關的臨時解決方法,待三方框架更新適配。

四、藍牙權限問題

在IOS12及以下的版本,使用藍牙模塊並不需要請求權限,所以很多線上的APP都沒有加入相關請求權限信息。但因爲蘋果對隱私權限的進一步限制,在IOS13,就會直接閃退。這是必須等相關APP更新,也是很多果粉反饋所說,更新了IOS13以後,好多軟件都直接閃退的原因。

 

除去上述的幾大原因,還有一些零碎的方面,在這裏就不陳述了。總結來說,在有條件的情況下,還是需要提前安裝下一個大版本的測試版,對自家的APP做個提前的體檢,以防會有重大的線上BUG出現。

PS:這次的XCODE新測試版更新的比較慢,並不能提前發現私有屬性的崩潰問題。所幸只用來投機取巧改了些無關緊要的UI細節,並不會導致重大問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章