我們可能面臨這樣的需求——同一系列的iOSApp產(chǎn)品驳庭,需要分開發(fā)布不同的版本活尊。例如一款幼兒教育類App撼玄,需要針對幼兒家長、教師開發(fā)不同功能需求的產(chǎn)品蜈漓;或者一款產(chǎn)品測試的時候一套AppIcon穆桂,上線的時候另一套AppIcon。諸如此類融虽,在不同情形使用不同的AppIcon享完。通常由于這樣的系列App功能大同小異,所以會選擇在同一個工程中開發(fā)衣形。
不同的版本會對應(yīng)不同的BundleIdentifier驼侠,Appicon無可厚非。設(shè)置BundleIdentifier還好說谆吴,但是設(shè)置AppIcon卻有很繁復(fù)倒源。我不知道您是否遇到過這樣的需求,小伙伴們是怎么處理的句狼?
在此之前用到的方法就是在工程中文件路徑下建兩個文件夾笋熬,例如iconPRO、iconDEV腻菇,每個文件夾放各自的AppIcon胳螟。(請注意,這兩個文件夾不要添加到工程中)筹吐。每次打包的時候把對應(yīng)文件夾中的圖片copy出來糖耸,添加到工程中。
這樣的方式丘薛,是有些繁復(fù)的嘉竟。有木有通用的解決方式呢?最近對于這些方面的問題作了一些探索。首先要明白一點舍扰,在工程中有一個info.plist的文件倦蚪,在這個文件中Icon files存放了appicon的文件名。通過$(PRODUCT_BUNDLE_IDENTIFIER)可以拿到當前一個應(yīng)用程序的bundleid边苹。如果文件名能跟bundleid關(guān)聯(lián)起來陵且,這個文件名隨bundle而改變,這樣似乎可以解決問題个束。
我們事先把不同版本所需要的appicon放在工程中慕购,例如放在文件夾iconApp,并把它添加到工程中茬底。假如兩個版本對應(yīng)的bundleid為com.owner.weekly和com.owner.daily脓钾。
命名規(guī)則如下:
添加到工程中(而不是Assets.xcassets中):
然后設(shè)置info.plist文件中Icon files.如下:
這樣基本的配置就做好了。假如我們現(xiàn)在的bundleid=com.owner.weekly桩警,則在模擬器上的運行效果如下:
如果bundleid=com.owner.daily,則運行如下:
這樣一來昌妹,我們就可以在設(shè)置不同bundleid的時候捶枢,自動切換顯示相應(yīng)的AppIcon,不需要再人為去設(shè)置AppIcon飞崖。如果你也遇到了相同的需求烂叔,不妨試一試。