2021年9月30日下午:我正愉快的期盼著即將到來的國慶假期,時不時重新整理下appstoreconnect的網址,28號就提上去的包,今天還在稽核中。。。。由於這個版本剛升級的xcode系統和新出的iOS 15系統,就怕出現什麼么蛾子導致專案被拒,在國慶節假期中被拒的話,那真的是一件聞者傷心聽者落淚的事兒。。。。
所以盼望著能在我下班之前出稽核結果,結果到了下午4點還沒出結果,想著求人不如求己,拿著iOS 15系統的測試機重新安裝了提審包,安裝完起先沒太注意是否允許追蹤廣告的彈框沒彈出來,主要也是我們專案啟動後彈出的東西太多了,玩了幾把遊戲後,發現了一個無關痛癢的小bug,就想追溯下是什麼原因導致的,結果發現加了白名單日誌的裝置打不開日誌了。。。以為是測試機被誰重新置換了idfa,結果發現隱私-追蹤開啟的情況下,列表中沒有我們的專案,這才發現剛才下載後啟動好像沒有彈出是否允許追蹤的彈框。立馬解除安裝重新安裝驗證,發現果然沒有,拿了iOS 14系統的測試機安裝,發現正常出來;以為是當時開發只對iOS 14系統做了判斷,沒有對14以上系統做相容;立馬開啟專案檢視程式碼(由於之前做過iOS開發,所以公司專案都是我自己打包上傳,也有原始碼),發現程式碼沒問題呀,確實是對14及14系統以上做的相容。
if (@available(iOS 14, *)) {
// iOS14及以上版本需要先請求許可權
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// 獲取到許可權後,依然使用老方法獲取idfa
switch (status) {
case ATTrackingManagerAuthorizationStatusNotDetermined:
NSLog(@"申請tracking許可權,使用者為做選擇或未彈窗");
break;
case ATTrackingManagerAuthorizationStatusRestricted:
NSLog(@"申請tracking許可權,使用者為做選擇或未彈窗");
break;
case ATTrackingManagerAuthorizationStatusDenied:
NSLog(@"申請tracking許可權,使用者拒絕");
break;
case ATTrackingManagerAuthorizationStatusAuthorized:
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"使用者允許廣告追蹤, idfa:%@",idfa);
break;
}
}];
}
else
{
// iOS14以下版本依然使用老方法
// 判斷在設定-隱私裡使用者是否打開了廣告跟蹤
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
NSString *idfa = [[ASIdentifierManager sharedManager].advertisingIdentifier UUIDString];
NSLog(@"使用者允許廣告追蹤 idfa:%@",idfa);
} else {
NSLog(@"使用者限制了廣告追蹤");
}
}
這就奇怪了,難道是iOS 15系統的問題?腦中瞬間冒出此種想法,開始去論壇扒拉資訊,結果果然發現不止我們遇到了這個問題,好多同行有同樣的問題,解決方法也很容易,只要將請求許可權的方法的呼叫從didFinishLaunchingWithOptions中移動到applicationDidBecomeActive裡就可以了。重新編譯後發現iOS 15系統能正常調起許可權彈框了。
為了度過一個完美的假期,立馬先打包,打包過程中同步策劃和開發同學這個問題,協商後想著我們的提審已經等待兩天了,替換包後會不會重新排隊稽核,先做個備用方案,先傳AppStore上面;如果因為這個原因被拒後,可以立即提審改過後的版本。
終於在下班前搞定上傳到App Store了,開開心心的揹著電腦下班回家。
晚上8點半左右收到了稽核被拒的郵件。。。。
Guideline 2.1 - Information Needed
We're looking forward to completing our review, but we need more information to continue. Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.0.
果然因為這個原因被拒了,重新提交準備好的新版本,完美!!!