檢查iOS項目中是否使用了IDFA

因為idFa被appStore拒絕,查了一下,工程里使用idfa的情況(廣告標識符),在本項目中沒有使用iad廣告,只是使用了廣告標識符; 看來還是得在使用了IDFA的,還得讓審核人員看到廣告。可以加入本地廣告圖片,或者自定義一張廣告等廣告

啥是IDFA

關于IDFA,在提交應用到App Store時,iTunes Connect有如下說明:
這里寫圖片描述

分析如下:

最近這類的被拒,特別多,因為Apple修改了審核標準,IDFA只能用于廣告服務。
PLA 3.3.12
"You and Your Applications (and any third party with whom you have contracted to serve advertising) may us the Advertising Identifier, and any information obtained through the use of the Advertising Identifier, only for the purpose of serving advertising. If a user resets the Advertising Identifier, then You agree not to combine, correlate, link or otherwise associate, either directly or indirectly, the prior Advertising Identifier and any derived information with the reset Advertising Identifier."

出現這種情況的原因如下:

1 使用了第三方的庫,第三方的庫根據IDFA進行跟蹤用戶,同時APP沒有加載廣告。
2 使用了第三方的庫,第三方的庫根據IDFA進行跟蹤用戶,同時加載了iAD廣告。
3 同時使用了iAD+ADMOB等廣告。
被拒的情況大概就是上面三種,其他的不會有問題。

對應的解決方法:

--第一種情況解決方法:

需要把和IDFA相關的代碼和接口去除,因為IDFA只可以用于廣告服務。

--第二種情況解決方法:

iAD不使用IDFA,具體怎么實現的,iOS內部搞的,所以要解決這個問題需要把iAD換成類似Admob一類的廣告服務,或者按照第一種情況來解決,就是去除第三方中IDFA相關的代碼和接口。

--第三種情況解決方法:

大概比較費解,明明加了Admob等廣告,為啥還是給我拒絕了呢,這種情況要看廣告的加載機制,一般開發者會優先加載iAD,如果沒有廣告源,則加載Admob(Admob是使用了IDFA),問題就出現了在這里,審核人員一般在美國,那里是有iAD的,或者現在app的狀態還沒有上線,iad屬于測試狀態,所以iAD的廣告是可以獲取,這樣就給審核人員一個印象:app使用了IDFA(admob中),但是只是展示了iAD的廣告,沒有看到其他的廣告服務,他們會懷疑你使用IDFA做了其他的事情,所以拒了!!

檢查IDFA的方法:
打開終端cd到要檢查的文件的根目錄(記住是項目根目錄, 不是ipa目錄, 原作者不說清除)
執行下列語句:

grep -r advertisingIdentifier 

例子1:


這里寫圖片描述

雖然ShareSDK本身沒使用IDFA,但是ShareSDK里面的新浪微博SDK使用了。這點ShareSDK官方也說明了,如果需要徹底沒有使用IDFA,可以移除新浪微博SDK,分享、第三方登錄等依然可以繼續使用,不受影響。
例子2:


這里寫圖片描述

可以檢查出ShareSDK自帶的MOBFoundation.framework和新浪微博SDK都使用了IDFA

其他命令查找

find . | grep -v .svn  | grep "\.a" | grep -v "\.app" | xargs grep advertisingIdentifier

使用這個終端命令查找,查到幾個使用的庫里帶有idfa
libWeChatSDK.a
libWeiboSDK.a
libTalkingData.a
libTalkingDataAppCpa.a

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容