Privacy Manifest — bu nədir, PrivacyInfo.xcprivacy faylı və tələblər

Müəllif: IT Sectr Dərc olunub: 2026-05-20 Oxuma vaxtı: 9 dəq

Privacy Manifest (PrivacyInfo.xcprivacy) — 2024-cü ilin yazından etibarən bütün tətbiqlər və üçüncü tərəf SDK-ların iOS quruluşuna daxil etməli olduğu fayldır. Apple qorunan API-lərdən (Required Reason API) istifadə səbəblərini və toplanan məlumat növlərini bəyan etməyi tələb edir. Apple Developer Documentation-yə əsasən, tətbiqin tərkibindəki hər bir binar — əsas target, freymvorklar, Swift Package Manager asılılıqları — öz Privacy Manifestini ehtiva etməlidir.

Əsas məqamlar

  • Privacy Manifest — API istifadə səbəblərinin bəyannaməsi ilə XML PrivacyInfo.xcprivacy faylı
  • Required Reason API — məcburi səbəb göstərilməsini tələb edən API kateqoriyaları
  • SDK Privacy Manifest — hər bir üçüncü tərəf SDK öz manifestini təmin etməlidir
  • Səbəblər (Reasons) — Apple-in təsdiq edilmiş siyahısından API istifadəsinin konkret məqsədi
  • Son tarix — 1 may 2024-cü ildən etibarən bütün yeni quruluşlar Privacy Manifesti ehtiva etməlidir

Privacy Manifest nədir?

Privacy Manifest — property list (XML) formatında PrivacyInfo.xcprivacy faylıdır, hansı ki tətbiqin hansı növ məlumatları topladığını və niyə müəyyən API-lərdən istifadə etdiyini bəyan edir. Apple manifestləri məxfilik şəffaflığını artırmaq təşəbbüsü çərçivəsində tətbiq etdi, Privacy Nutrition Label-ə bənzər, lakin kod və binar səviyyəsində.

Manifestin əsas məqsədi Required Reason API adlanan API-lərin istifadəsini sənədləşdirməkdir. Bunlar cihazın rəqəmsal izini götürmək üçün istifadə oluna bilən API kateqoriyalarıdır (fingerprinting), buna görə də hər bir istifadə Apple tərəfindən təsdiq edilmiş siyahıdan konkret səbəbin bəyannaməsi ilə müşayiət olunmalıdır.

1 may 2024-cü ildən etibarən Apple Privacy Manifesti olmayan quruluşları rədd edir. Bu həm tətbiqin əsas targetlərinə, həm də bütün daxili SDK və asılılıqlara aiddir. WWDC 2023-ə əsasən, manifest App Store vasitəsilə yayılan bütün tətbiqlər üçün məcburidir.

Manifest hər bir binarda olmalıdır — təkcə əsas tətbiqdə deyil, həm də hər bir freymvork və statik kitabxanada. Əgər üçüncü tərəf SDK manifest təmin etməyibsə, tərtibatçı onu əl ilə əlavə etməli və ya yeniləmə üçün SDK təchizatçısına müraciət etməlidir.

Apple nə üçün Privacy Manifesti tətbiq etdi

Manifestlər meydana çıxmazdan əvvəl tərtibatçılar geniş sistem API-lərindən (fayl sisteminə giriş, tarix/vaxt, sistem jurnalları) şəffaf izahat olmadan istifadə edə bilirdilər. Bu, tərtibatçının xəbəri olmadan məlumat toplaya bilən üçüncü tərəf SDK-lar vasitəsilə məlumat sızması riski yaradırdı.

Mysk Inc. (2023) məlumatlarına görə, bir çox məşhur SDK açıq ehtiyac olmadan cihaz izini götürmək üçün API-lərdən istifadə edirdi — məsələn, saat qurşağını təyin etmək üçün uptime vaxtını oxuyur və ya metadata toplamaq üçün qovluqları skan edirdi. Privacy Manifest hər belə hərəkəti bəyan etməyi məcbur edir.

Required Reason API-dən əlavə, manifest NSPrivacyTracking bölməsini — tətbiqin tracking istifadə edib-etmədiyini göstərən bayraq (ATT tələb edir) və NSPrivacyCollectedDataTypes — Privacy Nutrition Label formatında toplanan məlumat növlərinin siyahısını ehtiva edir.

Privacy Manifest və Privacy Nutrition Label arasındakı fərq

Privacy Nutrition Label — App Store-da tətbiq səhifəsində istifadəçiyə göstərilən, tətbiqin hansı məlumatları topladığını bildirən təsvirdir. Privacy Manifest — binar daxilində Apple tərəfindən avtomatik yoxlanılan texniki fayldır. Əgər manifestdəki məlumatlar App Store Connect-dəki etiketlərlə uyğun gəlmirsə, Apple quruluşu rədd edir.

Beləliklə, manifest Apple yoxlama sistemi üçün həqiqət mənbəyidir. Onun əsasında məxfilik etiketləri avtomatik yaradılır, lakin tərtibatçı hər iki təsviri aktual vəziyyətdə saxlamalıdır. Nəşrdən sonra manifestin dəyişdirilməsi yeni quruluşun baxışa göndərilməsini tələb edir.

PrivacyInfo.xcprivacy strukturu

PrivacyInfo.xcprivacy faylı Dictionary kök növü ilə property list formatından istifadə edir. Üst səviyyənin əsas açarları: NSPrivacyTracking (Boolean), NSPrivacyTrackingDomains (Array), NSPrivacyCollectedDataTypes (Array), NSPrivacyAccessedAPITypes (Array).

Üst səviyyə açarları

NSPrivacyTracking açarı — tətbiqin tracking istifadə edib-etmədiyini göstərən boolean dəyər (ATT tələb edir). True olarsa, Info.plist-də NSUserTrackingUsageDescription da göstərilməlidir. NSPrivacyTrackingDomains açarı — tracking tətbiq olunan domenlər massivi.

NSPrivacyCollectedDataTypes açarı — hər biri toplanan məlumat növünü təsvir edən lüğətlər massivi: kateqoriya (NSPrivacyCollectedDataType), məcburilik (NSPrivacyCollectedDataTypeLinked), məqsəd (NSPrivacyCollectedDataTypePurposes). Məqsədlərə daxildir: üçüncü tərəflərin işarələnməsi, analitika, məhsulun inkişafı və məzmunun fərdiləşdirilməsi.

NSPrivacyAccessedAPITypes açarı — Required Reason API-nin hər bir kateqoriyası üçün lüğətlər massivi: kateqoriya (NSPrivacyAccessedAPITypeReasons) — Apple-in təsdiq edilmiş siyahısından konkret səbəb və NSPrivacyAccessedAPIType — API kateqoriyasının identifikatoru.

xml
<!-- PrivacyInfo.xcprivacy -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSPrivacyTracking</key>
    <false/>
    <key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

NSPrivacyCollectedDataTypes-də məlumat kateqoriyaları

Məlumat növləri bir neçə kateqoriyaya bölünür: əlaqə məlumatları (ad, email, telefon), maliyyə (ödəniş məlumatları), identifikatorlar (IDFA, User ID), istifadə məlumatları (jurnallar, kliklər), diaqnostika (crash logs) və istifadəçi məzmunu (şəkillər, videolar, fayllar). Hər bir kateqoriya əlavə olaraq „istifadəçi ilə əlaqəli" (linked) və ya „əlaqəli deyil" (not linked) kimi qeyd olunur.

Linked o deməkdir ki, məlumatlar istifadəçinin hesabı ilə əlaqəlidir; not linked — məlumatlar aqreqasiya edilmiş və ya anonimləşdirilmişdir. Bu işarədən asılı olaraq Apple məxfilik etiketini göstərir: linked məlumatlar sarı, not linked isə yaşıl rənglə qeyd olunur.

Hansı API-lər səbəb göstərilməsini tələb edir

Apple bir neçə API kateqoriyası ayırdı, hər bir istifadəsi təsdiq edilmiş siyahıdan konkret səbəblə müşayiət olunmalıdır. Səbəb — unikal koddur, məsələn C617.1 və ya 35F9.1, Apple tərəfindən icazə verilən konkret məqsədə uyğun gəlir.

Required Reason API-nin əsas kateqoriyaları

NSPrivacyAccessedAPICategoryFileTimestamp kateqoriyası faylların vaxt damğalarına giriş API-lərini əhatə edir (creationDate, modificationDate). Səbəblər: C617.1 (fayl sinxronizasiyası), 3B52.1 (backup), 0A2A.1 (antifraud).

NSPrivacyAccessedAPICategoryDiskSpace kateqoriyası diskdə boş yerin yoxlanılması API-lərini əhatə edir (NSFileManager. Yoxlamalar (NSFileManager). Səbəblər: E174.1 (keş idarəetməsi), 85F4.1 (məzmun yükləmə), B728.1 (diaqnostika).

NSPrivacyAccessedAPICategorySystemBootTime kateqoriyası sistemin işə salınma vaxtına giriş API-lərini əhatə edir (uptime). Yalnız bir səbəb var: 35F9.1 (analitika üçün sessiya vaxtının ölçülməsi). İstənilən digər istifadə fingerprinting kimi qiymətləndirilir.

API kateqoriyalarının tam siyahısı

  • FileTimestamp — faylların vaxt damğalarına giriş, sinxronizasiya və backup üçün icazə verilir
  • DiskSpace — boş yerin yoxlanılması, keş idarəetməsi və yükləmələr üçün icazə verilir
  • SystemBootTime — uptime vaxtı, yalnız sessiya analitikası üçün icazə verilir
  • UserDefaults — digər tətbiqlərin UserDefaults-na giriş, tamamilə qadağandır
  • ActiveKeyboards — aktiv klaviaturaların siyahısı, IME tərtibatçıları üçün icazə verilir
  • SystemAperture — ekrandakı kəsik ölçüsü, foto və AR tətbiqləri üçün icazə verilir

Hər bir kateqoriyanın 1-dən 5-ə qədər təsdiq edilmiş səbəbi var. Tərtibatçı API-nin real istifadəsinə ən uyğun gələn səbəbi seçməlidir. Etibarsız səbəb təqdim etmək quruluşun rədd edilməsinə və ya hesabın bloklanmasına səbəb ola bilər.

Üçüncü tərəf SDK-lar üçün tələblər

1 may 2024-cü ildən etibarən bütün üçüncü tərəf SDK-lar — həm binar, həm də açıq mənbə — öz paketinə Privacy Manifesti daxil etməlidir. Apple bütün asılılıqların manifestlərini yoxlayır və ən azı bir SDK-da manifest yoxdursa, quruluş rədd ediləcək.

Böyük SDK-lar (Firebase, Adjust, AppsFlyer, Facebook SDK) artıq paketlərini yeniləyiblər. Layihəniz az tanınan SDK-dan istifadə edirsə, onun versiyasını yoxlayın və lazım olduqda yeniləyin və ya tərtibatçı ilə əlaqə saxlayın. Müvəqqəti həll — SDK üçün manifesti layihəyə əl ilə əlavə etmək, lakin yeniləmələr zamanı uyğunsuzluqlar səbəbindən tövsiyə edilmir.

Xcode-da Privacy Manifesti necə yaratmaq

Privacy Info.xcprivacy-ni Xcode 15+ daxili şablonu vasitəsilə və ya əl ilə yaratmaq olar. Hər iki variantı nəzərdən keçirək.

Xcode 15 vasitəsilə yaratma

Xcode 15-də Privacy Manifest şablonu əlavə edilib: File → New → File → Resource → Privacy Manifest. Xcode əsas strukturu olan fayl yaradır və NSPrivacyTracking və API və məlumatlar üçün boş massivləri doldurur. Yaradıldıqdan sonra hər istifadə olunan Required Reason API üçün səbəbləri əl ilə göstərmək lazımdır.

Şablon avtomatik olaraq faylı əsas targetə əlavə edir. Layihədə bir neçə target varsa (Extensions, Watch app), manifesti hər birinə əlavə etmək lazımdır. Xcode kompilasiya mərhələsində asılılıqlarda manifestin mövcudluğunu yoxlamır — yalnız arxivləşdirmə mərhələsində.

swift
// AppDelegate: manifestin inkişaf mərhələsində yoxlanılması
import Foundation

func validatePrivacyManifest() {
    guard let path = Bundle.main.path(
        forResource: "PrivacyInfo", ofType: "xcprivacy"
    ) else {
        print("PrivacyInfo.xcprivacy not found")
        return
    }
    guard let dict = NSDictionary(contentsOfFile: path)
    else { return }
    print("Privacy manifest loaded: \(dict.count) keys")
}

XML vasitəsilə əl ilə yaratma

PrivacyInfo.xcprivacy-ni adi XML property list faylı kimi əl ilə yaratmaq olar. Bunun üçün PrivacyInfo.xcprivacy adlı fayl yaradın, standart plist başlığını yazın və lazımi açarlarla kök lüğət əlavə edin. Faylın targetə əlavə edildiyinə əmin olun (Target Membership).

Əl ilə üsul Xcode interfeysindən istifadə etmədən statik kitabxanaya və ya Package Manager asılılığına manifest əlavə etmək lazım olduqda faydalıdır. Kompilasiyadan sonra nm əmri və ya arxivləşdirmə vasitəsilə faylın binara daxil olduğunu yoxlayın.

Nəşrdən əvvəl manifestin yoxlanılması

Quruluşu App Store-a göndərməzdən əvvəl Privacy Manifestin düzgün və tam olduğunu yoxlamaq lazımdır. Apple bir neçə yoxlama aləti təqdim edir.

Xcode-un daxili validatoru

Layihənin arxivləşdirilməsi zamanı (Product → Archive) Xcode manifestləri yoxlayır. Səhv aşkar edilərsə — manifestin olmaması, yanlış səbəb, boş kateqoriya — arxivləşdirmə səhvlə başa çatır. Səhv jurnalı Issue navigator-da problemli SDK və API kateqoriyası göstərilməklə çıxarılır.

Əlavə yoxlama App Store Connect tərəfindən quruluşun yüklənməsi zamanı həyata keçirilir. Validasiya keçməzsə, quruluş problemli API-nin identifikatoru və tövsiyə olunan düzəlişi ehtiva edən avtomatik məktubla rədd edilir.

Komanda sətri vasitəsilə yoxlama

Yoxlamanı avtomatlaşdırmaq üçün Required Reason API istifadəsini binar üzərində təhlil edən skriptlərdən istifadə edin. Apple libtool aləti və simvol yoxlama skriptləri təqdim edir, lakin icma daha rahat yardımçı proqramlar hazırlayıb.

bash
# Binarda FileTimestamp API istifadəsinin axtarışı
nm MyApp.app/MyApp | grep "NSFileCreationDate"

# Tətbiqdə PrivacyInfo.xcprivacy-nin mövcudluğunun yoxlanılması
find MyApp.app -name "*.xcprivacy"

Tez-tez rast gəlinən validasiya səhvləri

Ən çox yayılmış səhv — SDK-lardan birində manifestin olmamasıdır. Əsas target manifesti ehtiva etsə belə, Apple bütün binarları ayrıca yoxlayır. İkinci ən çox rast gəlinən — yanlış səbəb kodu: bir API kateqoriyası üçün səbəbin digər kateqoriyadan API ilə istifadəsi.

Üçüncü səhv — əslində istifadə olunmayan API-lərin həddindən artıq bəyan edilməsidir. Tərtibatçılar „hər ehtimala qarşı" bütün mümkün səbəbləri əlavə edirlər, bu da Apple rəyçilərini narahat edir. Yalnız həqiqətən istifadə olunan kateqoriyaları əlavə edin. Yoxlama üçün Xcode-un statik analizatorundan istifadə edin.

Tez-tez verilən suallar

Privacy Manifest olmadıqda nə baş verir?

1 may 2024-cü ildən etibarən Apple manifestsiz hər hansı quruluşu rədd edir. Səhv App Store Connect-ə yükləmə mərhələsində baş verir. Köhnə tətbiqlər bloklanmır, lakin yeniləmələr manifestin məcburi daxil edilməsini tələb edir.

iPadOS tətbiqləri üçün Privacy Manifest tələb olunur?

Bəli, manifest Apple-ın bütün platformaları üçün məcburidir: iOS, iPadOS, macOS, tvOS, watchOS və visionOS. Required Reason API tələbləri bütün platformalar üçün vahiddir, baxmayaraq ki API dəstləri cüzi fərqlənə bilər.

Üçüncü tərəf SDK üçün manifesti necə əlavə etmək olar?

Əgər SDK manifest təmin etməyibsə, ayrıca PrivacyInfo.xcprivacy faylı yaradın və layihədə SDK qrupuna əlavə edin. SDK-nın sənədlərinə əsasən bu SDK-nın istifadə etdiyi API üçün səbəbləri göstərin.

Apple yanlış səbəbə görə quruluşu rədd edə bilər?

Bəli. Avtomatik yoxlama zamanı Apple bəyan edilmiş səbəbləri API-nin faktiki çağırışları ilə müqayisə edir. Uyğunsuzluq rədd edilməyə səbəb olur. Əl ilə yoxlama zamanı rəyçi izahat tələb edə bilər.

Swift Package Manager üçün Privacy Manifest yoxlanılır?

Bəli, Apple SPM daxil olmaqla bütün asılılıqlar üçün manifestləri yoxlayır. Paket təchizatçıları PrivacyInfo.xcprivacy-ni öz depolarlarına daxil etməlidirlər. Xcode arxivləşdirmə zamanı çatışmayan manifestlər barədə xəbərdarlıq edir.

Nəticə

  • Privacy Manifest — 2024-cü ildən bütün tətbiqlər və SDK-lar üçün məcburi PrivacyInfo.xcprivacy faylı
  • Required Reason API — istifadənin konkret səbəbinin bəyan edilməsini tələb edən 6 API kateqoriyası
  • Səbəblər — unikal kodlar (C617.1, 35F9.1), hər kateqoriyanın 1-5 icazə verilən səbəbi var
  • SDK — hər bir üçüncü tərəf SDK binarda öz manifestini ehtiva etməlidir
  • Validasiya — Xcode manifesti arxivləşdirmə zamanı, App Store Connect yükləmə zamanı yoxlayır
  • Müddətlər — 1 may 2024-cü ildən etibarən bütün yeni quruluşlar manifesti ehtiva etməlidir
  • PrivacyInfo.xcprivacy-ni Xcode şablonu vasitəsilə yaradın və yalnız həqiqətən istifadə olunan API-ləri bəyan edin

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun