iOS啟動圖-沒有那么簡單

1.背景

大家都清楚在iOS上實現(xiàn)APP的啟動圖可以使用兩種方式,一種是LaunchImage,一種是LaunchScreen,后者是蘋果于iOS8推出并且大力推薦的,但殊不知這里邊的坑深似海。

網(wǎng)上有很多對于LaunchScreen設(shè)置啟動圖不更新的帖子,總結(jié)來說就是蘋果的Springboard對于APP的啟動圖進行了緩存,目的是APP可以高效的切換,我們咨詢了蘋果的工程師,得到的答案是緩存策略maybe forever。。。

2.測試結(jié)論

因為啟動圖對于APP來說完全是黑盒,外加蘋果的閉源,所以我們經(jīng)過大量的測試得出如下結(jié)論:

【1】LaunchScreen的優(yōu)先級高于LaunchImage,同一款A(yù)PP只要安裝了有LaunchScreen的版本,即使你重新安裝回LaunchImage的版本,不好意思啟動圖將不生效,展現(xiàn)的依然是LaunchScreen版本的啟動圖。

【2】沒有安裝launchScreen版本的APP,LaunchImage可以自由更換啟動圖,并且即時更新。

看上去是蘋果對于緩存策略的一個bug,但我們真的沒有辦法嗎?

3.workround蘋果之路

我們展開了workround蘋果之路,探究之路就不說了,結(jié)論如下:

【1】如果你想在LaunchScreen的情況下更新啟動圖,你需要修改storyboard的名字以及引用的圖片的名字,并且把圖片從xcassets里邊拿到普通的目錄下,直接引用2X和3X圖(有一個小細節(jié)就是圖片必須是全屏圖片,我們使用iPhoneX分辨率的2X和3X圖)。

上面的方法確實能解決啟動圖更新的問題,但是會在一些場景下黑屏。

【2】通過大量的測試,我們發(fā)現(xiàn)相同名字的覆蓋會高概率的出現(xiàn)黑屏問題,于是我們對工程進行了編譯改造,在每次編譯打包都會生成一個時間戳的stroyboard和圖片的名字,這樣確實從概率上降低了相同名字覆蓋所出現(xiàn)的黑屏問題,當(dāng)然一般的用戶不會對于一個APP頻繁的覆蓋更新

以上的手段是一個不完美但可以解決使用LaunchScreen冷啟動下啟動圖不更新的問題,但是通過openURL方式拉起熱啟動APP依舊無計可施

對于以openURL拉起的熱啟動的APP,我們進行了大量的測試,結(jié)論如下

【1】使用LaunchImage的方式實現(xiàn)啟動圖,通過openURL熱啟后,沒有啟動圖展示

【2】使用LaunchScreen的方式實現(xiàn)啟動圖,通過openURL熱啟后,會展示啟動圖,但是有一個糟糕的case,如果你先安裝了一個啟動圖的版本,通過openURL熱啟過,那么再安裝一個新啟動圖的版本,通過openURL熱啟依舊展示上一次的啟動圖,尷尬的不能再尷尬

4.原理探究

經(jīng)過這樣大量的測試,我們確實很想知道蘋果到底是怎么做的,為什么會有這樣的結(jié)果?

于是我用越獄機探究了一下蘋果的策略,蘋果會在var/mobile/Containers/Data/Application/這個目錄下存放手機上安裝APP的各種緩存數(shù)據(jù),包括啟動圖,你每一次的安裝都會生成一個新的目錄用來存放,但這僅僅是企業(yè)證書的包,且我們發(fā)現(xiàn)在越獄機器上不存在不更換啟動圖的情況,證明越獄機器和正式機器是有區(qū)別的,最后AppStore的包啟動圖沒有在這個目錄下,翻遍了越獄機器的存儲目錄沒有找到。

5.結(jié)論

用LaunchScreen的方式更換啟動圖,存在很多問題,且蘋果能讓我們操作的空間不大,沒有代碼干涉,只能進行配置,看上去不起眼的啟動圖,也存在這么多問題,蘋果的工程師確實需要檢討了,我準備去bugreport給他們報一個非常嚴重的bug。

最后百度App技術(shù)的同學(xué)發(fā)表了iOS啟動圖異常修復(fù)的文章,解決了這個問題,為百度App技術(shù)的同學(xué)點贊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    極客學(xué)院Wiki閱讀 7,826評論 0 3
  • 不知不覺易趣客已經(jīng)在路上走了快一年了,感覺也該讓更多朋友認識知道易趣客,所以就謝了這篇簡介,已做創(chuàng)業(yè)記事。 易趣客...
    Physher閱讀 3,820評論 1 2
  • 雙胎妊娠有家族遺傳傾向,隨母系遺傳。有研究表明,如果孕婦本人是雙胎之一,她生雙胎的機率為1/58;若孕婦的父親或母...
    鄴水芙蓉hibiscus閱讀 3,910評論 0 2
  • 晴天,擁抱陽光,擁抱你。雨天,想念雨滴,想念你。 我可以喜歡你嗎可以啊 我還可以喜歡你嗎可以,可是你要知道我們不可...
    露薇霜凝閱讀 1,359評論 1 2

友情鏈接更多精彩內(nèi)容