昨天提交打包提交App,將包上傳到iTunes Connect之后,以為就能發(fā)布了,便點擊構(gòu)建版本,發(fā)現(xiàn)沒有剛剛上傳的包,于是就點擊"預(yù)發(fā)行"看一下,會看到"已上傳",過不久再刷新一次再看,就變成了二進制無效,無比的郁悶,上傳了五六次都是二進制文件無效。
在檢查了app是否支持64位以后,我以為是傳錯了版本,把debug版本傳上去了,排查了后發(fā)現(xiàn)不是。
查了很多的資料都說是使用了私有API或者是iDFA設(shè)置不對的問題,但是茫茫多的代碼和引用的第三方庫,鬼知道那里用到了私有API或者iDFA,一行行的查工作量也太大了。幸好找到了stackoverflow上一個問答,可以方便的檢測私有api,地址。為了防止失效截個圖:

但是可惜,沒查出來。。。
檢查IDFA的方法:
步驟:
1、打開終端cd到要檢查的文件的根目錄。
2、執(zhí)行下列語句:grep -r advertisingIdentifier . (別少了最后那個點號)。
依然沒有。。。
這個時候想到去郵箱里看一下蘋果發(fā)的郵件(其實應(yīng)該首先去看的),看到了這個
不允許監(jiān)聽鎖屏通知???
立刻去全局查詢關(guān)鍵字:CFNotificationCenterGetDarwinNotifyCenter;screenLockStateChanged;NotificationLock;screenLockStateChanged;
一無所獲。。。
但是我覺得會監(jiān)聽鎖屏通知的應(yīng)該是那些需要在后臺做操作的功能,于是我先去排查了一下應(yīng)用里的音頻功能,然后在一個沒有被引用的監(jiān)聽方法里發(fā)現(xiàn)了這個:com.apple.springboard.lockstate
因為之前的碼哥廢棄了這個監(jiān)聽,改用
applicationProtectedDataWillBecomeUnavailable:
但是原來的代碼沒有刪除也沒有注釋
現(xiàn)在蘋果不管你用沒用只要你代碼里有"com.apple.springboard.lockstate"關(guān)鍵字就判斷二進制文件無效,我真的是躺槍(:зゝ∠)!