蘋果上傳ipa包收到一個郵件
one or more issues with a recent submission for App Store review for the following app:
Although submission for App Store review was successful, you may want to correct the following issues in your next submission for App Store review. Once you've corrected the issues, upload a new binary to App Store Connect.
ITMS-91053: Missing API declaration - Your app’s code in the “xxxxx” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryDiskSpace. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “xxxxx” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryFileTimestamp. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “xxxxx” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategorySystemBootTime. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “xxxxx” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryUserDefaults. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
Apple Developer Relations
解決方案:
創(chuàng)建一個文件App Privacy,生成PrivacyInfo.xcprivacy文件,就是個plist配置文件
點擊+號,key為Privacy Accessed API Types梨睁,value格式為Array
點擊Privacy Accessed API Types處+號咒钟,展開item只冻,點擊+號,key為Privacy Accessed API Type吻谋,value根據(jù)蘋果的反饋選擇對應(yīng)的選項
點擊Privacy Accessed API Type處+號辽幌,key為Privacy Accessed API Reasons增淹,value為Array,展開Privacy Accessed API Reasons
點擊+號舶衬,item0右側(cè)選擇對應(yīng)的原因
大體創(chuàng)建好的格式如下
注意這個位置一定要勾選上埠通,否則相當(dāng)于沒編譯進ipa包中
官方文檔參考如下
NSPrivacyAccessedAPICategoryDiskSpace類型,代碼中包含以下函數(shù)或者方法:
NSURLVolumeAvailableCapacityKey
NSURLVolumeAvailableCapacityForImportantUsageKey
NSURLVolumeAvailableCapacityForOpportunisticUsageKey
statfs(_:_:)
statvfs(_:_:)
fstatfs(_:_:)
fstatvfs(_:_:)
getattrlist(_:_:_:_:_:)
fgetattrlist(_:_:_:_:_:)
getattrlistat(_:_:_:_:_:_:)
NSPrivacyAccessedAPITypeReasons設(shè)置為以下:85F4.1逛犹、E174.1、7D9E.1、B728.1
85F4.1
聲明此原因以向使用該設(shè)備的人員顯示磁盤空間信息虽画。磁盤空間可以以信息單位(例如字節(jié))或與媒體類型結(jié)合的時間單位(例如高清視頻的分鐘)顯示舞蔽。
出于此原因訪問的信息或任何派生信息可能不會發(fā)送到設(shè)備外。有一個例外码撰,允許應(yīng)用程序通過本地網(wǎng)絡(luò)將磁盤空間信息發(fā)送到同一個人操作的另一臺設(shè)備渗柿,僅用于顯示該設(shè)備上的磁盤空間信息;此例外僅適用于用戶明確允許發(fā)送磁盤空間信息的情況脖岛,并且該信息不得通過 Internet 發(fā)送朵栖。
E174.1
聲明此原因是為了檢查是否有足夠的磁盤空間來寫入文件,或者檢查磁盤空間是否不足柴梆,以便應(yīng)用程序可以在磁盤空間不足時刪除文件陨溅。應(yīng)用程序必須根據(jù)磁盤空間以用戶可觀察到的方式表現(xiàn)不同。
出于此原因訪問的信息或任何派生信息可能不會發(fā)送到設(shè)備外绍在。有一個例外门扇,允許應(yīng)用程序在磁盤空間不足時避免從服務(wù)器下載文件。
7D9E.1
聲明此原因以在使用設(shè)備的人員選擇提交的可選錯誤報告中包含磁盤空間信息偿渡。磁盤空間信息必須作為報告的一部分突出地顯示給相關(guān)人員臼寄。
僅在用戶明確選擇提交包括磁盤空間信息的特定錯誤報告之后,并且僅出于調(diào)查或響應(yīng)錯誤報告的目的溜宽,因此訪問的信息或任何派生信息才可以發(fā)送到設(shè)備外吉拳。
B728.1
如果您的應(yīng)用程序是健康研究應(yīng)用程序,并且您訪問此 API 類別來檢測并通知研究參與者磁盤空間不足影響研究數(shù)據(jù)收集适揉,請聲明此原因合武。
您的應(yīng)用程序必須符合應(yīng)用程序商店審核指南§5.1.3。除了提供有關(guān)健康研究的信息并允許人們參與健康研究之外涡扼,您的應(yīng)用程序不得提供任何其他功能稼跳。
NSPrivacyAccessedAPICategoryFileTimestamp類型,代碼中包含以下函數(shù)或者方法:
getattrlist(_:_:_:_:_:)
getattrlistbulk(_:_:_:_:_:)
fgetattrlist(_:_:_:_:_:)
fstat(_:_:)
fstatat(_:_:_:_:)
lstat(_:_:)
getattrlistat(_:_:_:_:_:_:)
NSPrivacyAccessedAPITypeReasons設(shè)置為以下:DDA9.1吃沪、C617.1汤善、3B52.1、0A2A.1
DDA9.1
聲明此原因以向使用該設(shè)備的人員顯示文件時間戳票彪。
出于此原因訪問的信息或任何派生信息可能不會發(fā)送到設(shè)備外红淡。
C617.1
聲明此原因以訪問應(yīng)用程序容器、應(yīng)用程序組容器或應(yīng)用程序的 CloudKit 容器內(nèi)的文件的時間戳降铸、大小或其他元數(shù)據(jù)在旱。
3B52.1
聲明此原因以訪問用戶明確授予訪問權(quán)限的文件或目錄的時間戳、大小或其他元數(shù)據(jù)推掸,例如使用文檔選擇器視圖控制器桶蝎。
0A2A.1
如果您的第三方 SDK 提供文件時間戳 API 的包裝函數(shù)供應(yīng)用程序使用驻仅,并且您僅在應(yīng)用程序調(diào)用您的包裝函數(shù)時訪問文件時間戳 API,請聲明此原因登渣。此原因只能由第三方 SDK 聲明噪服。如果您的第三方 SDK 主要是為了包裝所需的原因 API 而創(chuàng)建的,則可能不會聲明此原因胜茧。
出于此原因訪問的信息或任何派生信息不得用于第三方 SDK 自身的目的粘优,也不得由第三方 SDK 發(fā)送至設(shè)備外。
NSPrivacyAccessedAPICategorySystemBootTime類型呻顽,代碼中包含以下函數(shù)或者方法:
mach_absolute_time()
NSPrivacyAccessedAPITypeReasons設(shè)置為以下:35F9.1雹顺、8FFB.1、3D61.1
35F9.1
聲明此原因以訪問系統(tǒng)啟動時間廊遍,以便測量應(yīng)用程序內(nèi)發(fā)生的事件之間經(jīng)過的時間量或執(zhí)行計算以啟用計時器嬉愧。
出于此原因訪問的信息或任何派生信息可能不會發(fā)送到設(shè)備外。有關(guān)應(yīng)用程序內(nèi)發(fā)生的事件之間經(jīng)過的時間量的信息有一個例外昧碉,該信息可能會發(fā)送到設(shè)備外英染。
8FFB.1
聲明此原因以訪問系統(tǒng)啟動時間,以計算應(yīng)用程序內(nèi)發(fā)生的事件的絕對時間戳被饿,例如與UIKit或AVFAudio框架相關(guān)的事件四康。
您的應(yīng)用內(nèi)發(fā)生的事件的絕對時間戳可能會發(fā)送到設(shè)備外。出于此原因訪問的系統(tǒng)啟動時間或從系統(tǒng)啟動時間導(dǎo)出的任何其他信息可能不會發(fā)送到設(shè)備外狭握。
3D61.1
聲明此原因以在使用設(shè)備的人選擇提交的可選錯誤報告中包含系統(tǒng)啟動時間信息闪金。系統(tǒng)啟動時間信息必須作為報告的一部分顯著地向人員顯示。
僅在用戶肯定選擇提交包括系統(tǒng)啟動時間信息的特定錯誤報告之后论颅,并且僅出于調(diào)查或響應(yīng)錯誤報告的目的哎垦,才可以將出于此原因訪問的信息或任何派生信息發(fā)送到設(shè)備外。
NSPrivacyAccessedAPICategoryUserDefaults類型恃疯,代碼中包含以下函數(shù)或者方法:
NSPrivacyAccessedAPITypeReasons設(shè)置為以下:CA92.1漏设、1C8F.1、C56D.1今妄、AC6B.1
CA92.1
聲明此原因以訪問用戶默認讀取和寫入只能由應(yīng)用程序本身訪問的信息郑口。
此原因不允許讀取其他應(yīng)用程序或系統(tǒng)寫入的信息,或?qū)懭肟捎善渌麘?yīng)用程序訪問的信息盾鳞。
1C8F.1
聲明此原因以訪問用戶默認值以讀取和寫入僅可由與應(yīng)用程序本身屬于同一應(yīng)用程序組的成員的應(yīng)用程序犬性、應(yīng)用程序擴展和應(yīng)用程序剪輯訪問的信息。
此原因不允許讀取由同一應(yīng)用程序組外部的應(yīng)用程序腾仅、應(yīng)用程序擴展或應(yīng)用程序剪輯或系統(tǒng)寫入的信息乒裆。如果系統(tǒng)提供來自全局域的信息,則您的應(yīng)用程序不承擔(dān)責(zé)任推励,因為當(dāng)您的應(yīng)用程序嘗試讀取應(yīng)用程序的應(yīng)用程序組中的應(yīng)用程序鹤耍、應(yīng)用程序擴展或應(yīng)用程序剪輯寫入的信息時肉迫,您請求的域中不存在密鑰。
此原因也不允許寫入可由同一應(yīng)用程序組外部的應(yīng)用程序惰蜜、應(yīng)用程序擴展或應(yīng)用程序剪輯訪問的信息昂拂。
C56D.1
如果您的第三方 SDK 圍繞用戶默認 API 提供包裝函數(shù)供應(yīng)用程序使用受神,并且您僅在應(yīng)用程序調(diào)用您的包裝函數(shù)時才訪問用戶默認 API抛猖,請聲明此原因。此原因只能由第三方 SDK 聲明鼻听。如果您的第三方 SDK 主要是為了包裝所需的原因 API 而創(chuàng)建的财著,則可能不會聲明此原因。
出于此原因訪問的信息或任何派生信息不得用于第三方 SDK 自身的目的撑碴,也不得由第三方 SDK 發(fā)送至設(shè)備外撑教。
AC6B.1
聲明此原因以訪問用戶默認讀取密鑰以檢索 MDM 設(shè)置的托管應(yīng)用程序配置,或設(shè)置密鑰以存儲要通過 MDM 查詢的反饋信息醉拓,如 Apple 移動設(shè)備管理協(xié)議參考文檔中所述伟姐。com.apple.configuration.managedcom.apple.feedback.managed
NSPrivacyAccessedAPICategoryActiveKeyboards類型,代碼中包含以下函數(shù)或者方法:
NSPrivacyAccessedAPITypeReasons設(shè)置為以下:3EC4.1亿卤、54BD.1
3EC4.1
如果您的應(yīng)用程序是自定義鍵盤應(yīng)用程序愤兵,并且您訪問此 API 類別以確定設(shè)備上處于活動狀態(tài)的鍵盤,請聲明此原因排吴。
為用戶提供系統(tǒng)范圍的自定義鍵盤必須是應(yīng)用程序的主要功能秆乳。
出于此原因訪問的信息或任何派生信息可能不會發(fā)送到設(shè)備外。
54BD.1
聲明此原因以訪問活動鍵盤信息钻哩,以便向使用該設(shè)備的人員呈現(xiàn)正確的自定義用戶界面屹堰。應(yīng)用程序必須具有用于輸入或編輯文本的文本字段,并且必須以用戶可觀察到的方式根據(jù)活動鍵盤采取不同的行為街氢。
出于此原因訪問的信息或任何派生信息可能不會發(fā)送到設(shè)備外扯键。