蘋果隱私清單PrivacyInfo.xcprivacy 調研及解決方式

Apple PrivacyInfo.xcprivacy 蘋果隱私清單調研

1.在蘋果強制執(zhí)行的SDK名單中的,以framework形式存在的SDK必須包含自己的隱私清單和簽名

2.在蘋果強制執(zhí)行的SDK名單中的,以源碼文件存在的,無需處理(若作者有更新,也可以適當更新)

3.應用程序自己的清單文件PrivacyInfo.xcprivacy 使用默認名,不可重命名,否則無法導出隱私報告

4.隱私清單的包含項,蘋果列舉出五項隱私API(用到那個聲明那個)至于Privacy Nutrition Label Types的配置,一般SDK是不填寫這些的,除了音視頻,地圖這些大的SDK,但是應用程序自身的隱私清單,這里必須設置,因為一般app,郵箱,用戶id,大概地理位置,照片和視頻,崩潰數(shù)據(jù)采集這些總該用到吧,參照:https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests 設置此項即可,Linked to User和Used for Tracking 基本設置為NO,但是郵箱和電話這兩個場景是否鏈接用戶看你實際場景下的作用?;静幌蛴脩舭l(fā)廣告就設置NO即可

5.Extension擴展庫如push或者widget之類的,也需要添加PrivacyInfo.xcprivacy文件
示例:推送擴展庫NotificationService,這些本質上屬于一個新的target,除了所內部引入的三方庫有自己的清單外(個推,友盟,極光)擴展庫自己也要有清單文件,哪怕你什么隱私api和追蹤透明度都沒用到,也要有這樣的文件,大不了Privacy Tracking Enabled設置為NO,其他項不設置,切記,切記。參考下面郵件所述

WechatIMG3188.jpg

6.蘋果鼓勵所有SDK都遵循此項新規(guī),如果不屬于蘋果列舉的強制執(zhí)行名單的SDK,官方或作者已有更新,則根據(jù)自己情況看是否想去更新。

7.純OC項目無需在pod中引入 user_frameworks! 否則需解決報錯。

8.項目自己的隱私清單創(chuàng)建后使用默認名,決不允許更改名字,否則將無法導出隱私報告

總結:在蘋果規(guī)定的強制執(zhí)行名單中的,且以framework形式存在的SDK必須有自己的簽名和隱私清單,哪怕這個SDK什么隱私API都沒使用,也要有一份清單僅設置Privacy Tracking Enabled為NO,其他項不設置即可。

至于其他在名單中,但是鏈接形式是源碼文件的,無需處理,如果作者已更新,你也可以去更新,至于踩坑點,本文已全部記錄。

如果你是swift混編,所有源碼文件最終是framework靜態(tài)庫鏈接的,如果作者實在沒更新,就手動把源碼拖入項目即可。

怎么檢查你的清單加好了呢???直接archive,查看你的隱私報告,然后對archive后的包選擇查看包內容,最終進入app的包里,蘋果要求的sdk的boundle內有隱私清單即可

注意點
1.SDCycleScrollView和WMZBanner 內部會默認引入SDWebImage,如后續(xù)SD需手動導入項目維護時,這兩個類庫也一并改為手動
2.微信2.4.0framework版本包含清單文件,但.a庫版pod后不包含
3.MBProgressHUD / Reachability / SVProgressHUD 不要拉取最新版本分支,直接拉取master,作者把清單文件添加在了master
4.BAPickView,BAKit.h中第65行的NSLog會和項目宏定義的NSLog沖突,可能出現(xiàn)控制臺無法打印,更新后可手動注釋

這三個庫不要拉取指定的最新版本,否則不包含隱私清單,直接拉取master的最新代碼,作者這貨直接加在了master,目前對應的git上的issue很多開發(fā)者還在問作者如何解決,本人踩坑一天才發(fā)現(xiàn)這貨加在了master
如果你指定更新最新版本的分支會出現(xiàn):
SVProgressHUD的清單文件和你自己創(chuàng)建的路徑?jīng)_突報錯,MBProgressHUD和Reachability更新后沒有清單文件

正確pod方式:
pod 'MBProgressHUD',:git => 'https://github.com/jdg/MBProgressHUD.git'
pod 'SVProgressHUD', :git => 'https://github.com/SVProgressHUD/SVProgressHUD.git'
pod 'Reachability', :git => 'https://github.com/tonymillion/Reachability.git'

最后附上我的pod文件和隱私清單文件
(注意這些類型按照上面的高亮鏈接結合自己app去比對,要寫全,使用目的基本寫app功能即可,除非你真的有個性化推薦等其他用途。社區(qū)類app,社交類app需要關注有沒有個性化推薦,其他用戶生成內容等等。至于是否跟蹤用戶我設置的NO,即便你真的跟蹤了,也建議設置為NO,關于手機號注冊登錄,相冊拍照,分享等這些場景,鏈接用戶設為YES即可)

截屏2024-04-08 13.29.02.png
截屏2024-04-08 13.29.23.png

隱私報告

WechatIMG11.jpg

我更新了的源碼庫清單文件(源碼庫可選更,不做強制)

WechatIMG10.jpg

我的pod文件

截屏2024-04-07 19.03.02.png
截屏2024-04-07 19.03.09.png

最后附上 某大廠的內部調研


截屏2024-04-07 19.07.20.png
截屏2024-04-07 19.07.26.png
截屏2024-04-07 19.07.32.png
截屏2024-04-07 19.07.40.png

注意:target下只要存在隱私清單且所使用的隱私api描述完整,提審時就不會再次收到郵件。

但如果你沒填寫Privacy Nutrition Label Types,即:根據(jù)蘋果文檔要求的場景,列舉追蹤了那些數(shù)據(jù),未來審核是否被拒并不確定,建議認真梳理填寫此項。
target,只要是宿主工程,子工程,擴展庫,weight小組件這些本質都屬于target。

對于你的三方庫是framework靜態(tài)庫或.a靜態(tài)庫且在蘋果要求名單中,但是作者并未更新的,建議不作處理。根據(jù)上述(target下只要存在隱私清單且所使用的隱私api描述完整,提審時就不會再次收到郵件)應該不會有問題。不建議大改

如果需要修改,如果你的庫是.a靜態(tài)庫,一律轉為framework靜態(tài)庫,因為二者區(qū)別是framework對比.a允許捆綁靜態(tài)資源。這時候可以自己為其簽名并增加隱私清單。即便沒使用隱私api也要有隱私清單,Privacy Tracking Enabled設為NO即可。最后手動拖入你的項目,如果你仍然想pod管理,則再打包為私有庫。如何簽名和轉framework,隨便去git的開源庫下,作者基本都有說明。如SVProgress等

參考資料:
https://cloud.tencent.com/developer/article/2397182

https://cloud.tencent.com/document/product/269/104138

https://help.aliyun.com/zh/apsara-video-sdk/support/mediabox-audio-and-video-sdk-apple-privacy-policy-privacyinfo-xcprivacy-protocol-and-authentication

https://blog.csdn.net/ZuoYueLiang/article/details/137009615

最后煩請點贊,評論~ 晚8點請打開《和平精英》我在S城第二個房間等你喔!?。?!

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容