適用於 iOS 應用程式的隱私權清單
如果您的應用程式旨在用於 Apple App Store 並使用必備原因 API, App Store Connect 可能會發出警告,指出該應用程式沒有正確的隱私權清單:
它可能會影響任何 Apple 生態系統應用程式,無論是原生或多平台。您的應用程式可能透過第三方函式庫或 SDK 使用必備原因 API,這可能不明顯。Kotlin Multiplatform 可能是您未曾察覺使用 API 的框架之一。
在此頁面上,您將找到問題的詳細說明以及處理該問題的建議。
本頁面反映了 Kotlin 團隊對該問題目前的理解。 隨著我們獲得更多關於公認方法和解決方案的資料和知識,我們將更新本頁面以反映這些資訊。
問題為何
Apple 對 App Store 提交的要求已於 2024 年春季發生變化。 App Store Connect 不再接受未在其隱私權清單中指定使用必備原因 API 理由的應用程式。
這是一個自動檢查,而非手動審核:您的應用程式程式碼會被分析,然後您會收到一封電子郵件,其中列出所有問題。該電子郵件將提及「ITMS-91053:遺失 API 宣告」問題,並列出應用程式中屬於必備原因類別的所有 API。
理想情況下,您的應用程式使用的所有 SDK 都會提供自己的隱私權清單,您無需擔心。 但是,如果您的某些依賴項沒有這樣做,您的 App Store 提交可能會被標記。
如何解決
在您嘗試提交應用程式並收到 App Store 提供的詳細問題清單後,您可以依照 Apple 文件建置您的清單:
結果檔案是一組字典。對於每個被存取的 API 類型,從提供的清單中選擇一個或多個使用它的原因。Xcode 透過提供視覺化佈局和下拉式清單,其中包含每個欄位的有效值,幫助編輯.xcprivacy
檔案。
您可以使用專用工具來尋找您的 Kotlin 框架依賴項中必備原因 API 的使用情況,以及單獨的外掛程式來將 .xcprivacy
檔案與您的 Kotlin 產物捆綁在一起。
如果新的隱私權清單未能滿足 App Store 的要求,或者您無法弄清楚如何執行這些步驟,請聯絡我們並在此 YouTrack 問題中分享您的案例。
尋找必備原因 API 的使用情況
您的應用程式或其中一個依賴項中的 Kotlin 程式碼可能會從 platform.posix
等函式庫存取必備原因 API,例如 fstat
:
import platform.posix.fstat
fun useRequiredReasonAPI() {
fstat(...)
}
在某些情況下,可能很難確定哪些依賴項使用了必備原因 API。 為了幫助您找到它們,我們建立了一個簡單的工具。
若要使用它,請在您的專案中宣告 Kotlin 框架的目錄中執行以下命令:
/usr/bin/python3 -c "$(curl -fsSL https://github.com/JetBrains/kotlin/raw/rrf_v0.0.1/libraries/tools/required-reason-finder/required_reason_finder.py)"
您也可以單獨下載此腳本,檢查它,然後使用 python3
執行它。
將 .xcprivacy 檔案放入您的 Kotlin 產物中
如果您需要將 PrivacyInfo.xcprivacy
檔案與您的 Kotlin 產物捆綁在一起,請使用 apple-privacy-manifests
外掛程式:
plugins {
kotlin("multiplatform")
kotlin("apple-privacy-manifests") version "1.0.0"
}
kotlin {
privacyManifest {
embed(
privacyManifest = layout.projectDirectory.file("PrivacyInfo.xcprivacy").asFile,
)
}
}
此外掛程式會將隱私權清單檔案複製到對應的輸出位置。
已知使用情況
Compose Multiplatform
使用 Compose Multiplatform 可能會導致您的二進位檔中出現 fstat
、stat
和 mach_absolute_time
的使用情況。 儘管這些函數並不用於追蹤或指紋識別,也不會從裝置發送,Apple 仍可能將它們標記為缺少必備原因的 API。
如果您必須為 stat
和 fstat
的使用指定原因,請使用 0A2A.1
。對於 mach_absolute_time
,請使用 35F9.1
。
有關 Compose Multiplatform 中使用的必備原因 API 的進一步更新,請關注此問題。
1.9.10 或更早版本中的 Kotlin/Native 執行時
mach_absolute_time
API 在 Kotlin/Native 執行時中的 mimalloc
配置器中使用。這是 Kotlin 1.9.10 及更早版本中的預設配置器。
我們建議升級到 Kotlin 1.9.20 或更高版本。如果無法升級,請更改記憶體配置器。 為此,請在您的 Gradle 建置腳本中為當前 Kotlin 配置器設定 -Xallocator=custom
編譯選項,或為系統配置器設定 -Xallocator=std
。
有關更多資訊,請參閱 Kotlin/Native 記憶體管理。