Privacy Manifest — bu nima, PrivacyInfo.xcprivacy fayli va talablar

Muallif: IT Sectr Nashr etilgan: 2026-05-20 O'qish vaqti: 9 daq

Privacy Manifest (PrivacyInfo.xcprivacy) — 2024 yil bahoridan boshlab barcha ilovalar va uchinchi tomon SDK-lari iOS qurilishiga kiritishi shart bo'lgan fayldir. Apple himoyalangan API (Required Reason API) dan foydalanish sabablarini va to'plangan ma'lumotlar turlarini deklaratsiya qilishni talab qiladi. Apple Developer Documentation ga ko'ra, ilova tarkibidagi har bir binar — asosiy target, freymvorklar, Swift Package Manager bog'liqliklari — o'zining Privacy Manifestiga ega bo'lishi kerak.

Asosiy fikrlar

  • Privacy Manifest — API dan foydalanish sabablarini deklaratsiya qiluvchi XML PrivacyInfo.xcprivacy fayli
  • Required Reason API — majburiy sabab ko'rsatishni talab qiluvchi API kategoriyalari
  • SDK Privacy Manifest — har bir uchinchi tomon SDK o'z manifestini taqdim etishi shart
  • Sabablar (Reasons) — Apple tomonidan tasdiqlangan ro'yxatdan API dan foydalanishning aniq maqsadi
  • Muddat — 2024 yil 1 maydan boshlab barcha yangi qurilishlar Privacy Manifestni o'z ichiga olishi kerak

Privacy Manifest nima?

Privacy Manifest — property list (XML) formatidagi PrivacyInfo.xcprivacy fayli bo'lib, u ilova qanday turdagi ma'lumotlarni to'plashi va nima uchun ma'lum API lardan foydalanishini deklaratsiya qiladi. Apple manifestlarni maxfiylik shaffofligini oshirish tashabbusi doirasida joriy qildi, Privacy Nutrition Label ga o'xshash, ammo kod va binar darajasida.

Manifestning asosiy maqsadi Required Reason API deb ataladigan API lardan foydalanishni hujjatlashtirishdir. Bular qurilmaning raqamli izini olish uchun ishlatilishi mumkin bo'lgan API kategoriyalari (fingerprinting), shuning uchun har bir foydalanish Apple tomonidan tasdiqlangan ro'yxatdan aniq sababni deklaratsiya qilish bilan birga bo'lishi kerak.

2024 yil 1 maydan boshlab Apple Privacy Manifestga ega bo'lmagan qurilishlarni rad etadi. Bu ilovaning asosiy targetlariga ham, barcha ichki SDK va bog'liqliklarga ham tegishli. WWDC 2023 ga ko'ra, manifest App Store orqali tarqatiladigan barcha ilovalar uchun majburiydir.

Manifest har bir binarda bo'lishi kerak — nafaqat asosiy ilovada, balki har bir freymvork va statik kutubxonada. Agar uchinchi tomon SDK manifestni taqdim etmagan bo'lsa, ishlab chiquvchi uni qo'lda qo'shishi yoki SDK yetkazib beruvchiga yangilanish uchun murojaat qilishi kerak.

Apple nima uchun Privacy Manifestni joriy qildi

Manifestlar paydo bo'lishidan oldin ishlab chiquvchilar keng tizim API laridan (fayl tizimiga kirish, sana/vaqt, tizim jurnallari) shaffof tushuntirishsiz foydalanishlari mumkin edi. Bu uchinchi tomon SDK lari orqali ma'lumotlar sizib chiqish xavfini yaratdi, ular ishlab chiquvchining xabarisiz ma'lumot to'plashi mumkin edi.

Mysk Inc. (2023) ma'lumotlariga ko'ra, ko'plab mashhur SDK lar ochiq ehtiyojsiz qurilma izini olish uchun API lardan foydalangan — masalan, vaqt mintaqasini aniqlash uchun uptime vaqtini o'qigan yoki metama'lumotlarni to'plash uchun kataloglarni skaner qilgan. Privacy Manifest har bir bunday harakatni deklaratsiya qilishni majbur qiladi.

Required Reason API dan tashqari, manifest NSPrivacyTracking bo'limini — ilova trekkingdan foydalanadimi yoki yo'qligini ko'rsatuvchi bayroq (ATT talab qiladi) va NSPrivacyCollectedDataTypes — Privacy Nutrition Label formatida to'plangan ma'lumotlar turlari ro'yxatini o'z ichiga oladi.

Privacy Manifest va Privacy Nutrition Label o'rtasidagi farq

Privacy Nutrition Label — App Store da ilova sahifasida foydalanuvchiga ko'rsatiladigan, ilova qanday ma'lumotlarni to'plashi haqidagi tavsif. Privacy Manifest — binar ichidagi Apple tomonidan avtomatik tekshiriladigan texnik fayl. Agar manifestdagi ma'lumotlar App Store Connect dagi yorliqlarga mos kelmasa, Apple qurilishni rad etadi.

Shunday qilib, manifest Apple tekshirish tizimi uchun haqiqat manbaidir. Uning asosida maxfiylik yorliqlari avtomatik yaratiladi, ammo ishlab chiquvchi ikkala ko'rinishni ham yangilab turishi kerak. Nashrdan keyin manifestni o'zgartirish yangi qurilishni ko'rib chiqishga yuborishni talab qiladi.

PrivacyInfo.xcprivacy tuzilishi

PrivacyInfo.xcprivacy fayli Dictionary ildiz turi bilan property list formatidan foydalanadi. Yuqori darajadagi asosiy kalitlar: NSPrivacyTracking (Boolean), NSPrivacyTrackingDomains (Array), NSPrivacyCollectedDataTypes (Array), NSPrivacyAccessedAPITypes (Array).

Yuqori darajadagi kalitlar

NSPrivacyTracking kaliti — ilova trekkingdan foydalanadimi yoki yo'qligini ko'rsatuvchi mantiqiy qiymat (ATT talab qiladi). Agar true bo'lsa, Info.plist da NSUserTrackingUsageDescription ham ko'rsatilishi kerak. NSPrivacyTrackingDomains kaliti — trekking qo'llaniladigan domenlar massivi.

NSPrivacyCollectedDataTypes kaliti — har biri to'plangan ma'lumotlar turini tavsiflovchi lug'atlar massivi: kategoriya (NSPrivacyCollectedDataType), majburiylik (NSPrivacyCollectedDataTypeLinked), maqsad (NSPrivacyCollectedDataTypePurposes). Maqsadlarga quyidagilar kiradi: uchinchi tomonlarni belgilash, analitika, mahsulotni rivojlantirish va kontentni shaxsiylashtirish.

NSPrivacyAccessedAPITypes kaliti — Required Reason API ning har bir kategoriyasi uchun lug'atlar massivi: kategoriya (NSPrivacyAccessedAPITypeReasons) — Apple tomonidan tasdiqlangan ro'yxatdan aniq sabab va NSPrivacyAccessedAPIType — API kategoriyasining identifikatori.

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 dagi ma'lumotlar kategoriyalari

Ma'lumotlar turlari bir necha kategoriyaga bo'linadi: aloqa ma'lumotlari (ism, email, telefon), moliya (to'lov ma'lumotlari), identifikatorlar (IDFA, User ID), foydalanish ma'lumotlari (jurnallar, kliklar), diagnostika (crash logs) va foydalanuvchi kontenti (fotosuratlar, videolar, fayllar). Har bir kategoriya qo'shimcha ravishda „foydalanuvchi bilan bog'liq" (linked) yoki „bog'liq emas" (not linked) deb belgilanadi.

Linked ma'lumotlar foydalanuvchi hisobi bilan bog'liqligini anglatadi; not linked — ma'lumotlar agregatlangan yoki anonimlashtirilgan. Bu belgiga qarab Apple maxfiylik yorlig'ini ko'rsatadi: linked ma'lumotlar sariq, not linked esa yashil rang bilan belgilanadi.

Qaysi API lar sabab ko'rsatishni talab qiladi

Apple bir nechta API kategoriyalarini ajratdi, ularning har bir foydalanishi tasdiqlangan ro'yxatdan aniq sabab bilan birga bo'lishi kerak. Sabab — noyob kod, masalan C617.1 yoki 35F9.1, Apple tomonidan ruxsat etilgan aniq maqsadga mos keladi.

Required Reason API ning asosiy kategoriyalari

NSPrivacyAccessedAPICategoryFileTimestamp kategoriyasi fayllarning vaqt tamg'alariga kirish API larini o'z ichiga oladi (creationDate, modificationDate). Sabablar: C617.1 (fayl sinxronizatsiyasi), 3B52.1 (backup), 0A2A.1 (antifraud).

NSPrivacyAccessedAPICategoryDiskSpace kategoriyasi diskdagi bo'sh joyni tekshirish API larini o'z ichiga oladi (NSFileManager. Tekshirishlar (NSFileManager). Sabablar: E174.1 (kesh boshqaruvi), 85F4.1 (kontent yuklash), B728.1 (diagnostika).

NSPrivacyAccessedAPICategorySystemBootTime kategoriyasi tizimning ishga tushirilish vaqtiga kirish API larini o'z ichiga oladi (uptime). Faqat bitta sabab bor: 35F9.1 (analitika uchun sessiya vaqtini o'lchash). Boshqa har qanday foydalanish fingerprinting deb hisoblanadi.

API kategoriyalarining to'liq ro'yxati

  • FileTimestamp — fayllarning vaqt tamg'alariga kirish, sinxronizatsiya va backup uchun ruxsat etilgan
  • DiskSpace — bo'sh joyni tekshirish, kesh boshqaruvi va yuklab olish uchun ruxsat etilgan
  • SystemBootTime — uptime vaqti, faqat sessiya analitikasi uchun ruxsat etilgan
  • UserDefaults — boshqa ilovalarning UserDefaults iga kirish, butunlay taqiqlangan
  • ActiveKeyboards — faol klaviaturalar ro'yxati, IME ishlab chiquvchilari uchun ruxsat etilgan
  • SystemAperture — ekrandagi kesik o'lchami, foto va AR ilovalari uchun ruxsat etilgan

Har bir kategoriyada 1 dan 5 gacha tasdiqlangan sabab bor. Ishlab chiquvchi API dan haqiqiy foydalanishga eng mos keladigan sababni tanlashi shart. Yolg'on sabab taqdim etish qurilishning rad etilishiga yoki hisobning bloklanishiga olib kelishi mumkin.

Uchinchi tomon SDK lariga talablar

2024 yil 1 maydan boshlab barcha uchinchi tomon SDK lar — ham binar, ham ochiq manbali — o'z paketiga Privacy Manifestni kiritishi shart. Apple barcha bog'liqliklarning manifestlarini tekshiradi va agar kamida bitta SDK da manifest bo'lmasa, qurilish rad etiladi.

Yirik SDK lar (Firebase, Adjust, AppsFlyer, Facebook SDK) allaqachon o'z paketlarini yangilagan. Agar loyihangiz kam tanilgan SDK dan foydalansa, uning versiyasini tekshiring va kerak bo'lsa yangilang yoki ishlab chiquvchiga murojaat qiling. Vaqtinchalik yechim — SDK uchun manifestni loyihaga qo'lda qo'shish, ammo yangilanishlarda nomuvofiqliklar tufayli tavsiya etilmaydi.

Xcode da Privacy Manifestni yaratish

Privacy Info.xcprivacy ni Xcode 15+ ichki shabloni orqali yoki qo'lda yaratish mumkin. Ikkala variantni ko'rib chiqamiz.

Xcode 15 orqali yaratish

Xcode 15 ga Privacy Manifest shabloni qo'shilgan: File → New → File → Resource → Privacy Manifest. Xcode asosiy tuzilma bilan fayl yaratadi va NSPrivacyTracking hamda API va ma'lumotlar uchun bo'sh massivlarni to'ldiradi. Yaratilgandan so'ng har bir ishlatilgan Required Reason API uchun sabablarni qo'lda ko'rsatish kerak.

Shablon avtomatik ravishda faylni asosiy targetga qo'shadi. Agar loyihada bir nechta target bo'lsa (Extensions, Watch app), manifestni har biriga qo'shish kerak. Xcode kompilyatsiya bosqichida bog'liqliklarda manifest mavjudligini tekshirmaydi — faqat arxivlash bosqichida.

swift
// AppDelegate: manifestni ishlab chiqish bosqichida tekshirish
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 orqali qo'lda yaratish

PrivacyInfo.xcprivacy ni oddiy XML property list fayli sifatida qo'lda yaratish mumkin. Buning uchun PrivacyInfo.xcprivacy nomli fayl yarating, standart plist sarlavhasini yozing va kerakli kalitlar bilan ildiz lug'at qo'shing. Faylning targetga qo'shilganligiga ishonch hosil qiling (Target Membership).

Qo'lda usul Xcode interfeysidan foydalanmasdan statik kutubxona yoki Package Manager bog'liqligiga manifest qo'shish kerak bo'lganda foydalidir. Kompilyatsiyadan so'ng nm buyrug'i yoki arxivlash orqali faylning binarga kiritilganligini tekshiring.

Nashrdan oldin manifestni tekshirish

Qurilishni App Store ga yuborishdan oldin Privacy Manifestning to'g'ri va to'liqligini tekshirish kerak. Apple bir nechta tekshirish vositalarini taqdim etadi.

Xcode ning ichki validatoru

Loyihani arxivlashda (Product → Archive) Xcode manifestlarni tekshiradi. Agar xato aniqlansa — manifest yo'qligi, noto'g'ri sabab, bo'sh kategoriya — arxivlash xato bilan tugaydi. Xato jurnali Issue navigator da muammoli SDK va API kategoriyasi ko'rsatilgan holda chiqariladi.

Qo'shimcha tekshirish App Store Connect tomonidan qurilishni yuklashda amalga oshiriladi. Validatsiya o'tmasa, qurilish muammoli API identifikatori va tavsiya etilgan tuzatishni o'z ichiga olgan avtomatik xat bilan rad etiladi.

Buyruqlar qatori orqali tekshirish

Tekshirishni avtomatlashtirish uchun Required Reason API dan foydalanishni binar ustida tahlil qiluvchi skriptlardan foydalaning. Apple libtool vositasini va belgilarni tekshirish skriptlarini taqdim etadi, ammo jamoa qulayroq yordamchi dasturlarni ishlab chiqqan.

bash
# Binarda FileTimestamp API dan foydalanishni qidirish
nm MyApp.app/MyApp | grep "NSFileCreationDate"

# Ilovada PrivacyInfo.xcprivacy mavjudligini tekshirish
find MyApp.app -name "*.xcprivacy"

Tez-tez uchraydigan validatsiya xatolari

Eng keng tarqalgan xato — SDK lardan birida manifestning yo'qligi. Asosiy target manifestni o'z ichiga olgan bo'lsa ham, Apple barcha binarlarni alohida tekshiradi. Ikkinchi eng keng tarqalgan — noto'g'ri sabab kodi: bir API kategoriyasi uchun sababni boshqa kategoriyadagi API bilan ishlatish.

Uchinchi xato — aslida ishlatilmaydigan API larning haddan tashqari deklaratsiyasi. Ishlab chiquvchilar „har ehtimolga qarshi" barcha mumkin bo'lgan sabablarni qo'shadilar, bu Apple ko'rib chiquvchilarini xavotirga soladi. Faqat haqiqatda ishlatiladigan kategoriyalarni qo'shing. Tekshirish uchun Xcode ning statik analizatoridan foydalaning.

Tez-tez beriladigan savollar

Privacy Manifest bo'lmaganda nima bo'ladi?

2024 yil 1 maydan boshlab Apple manifestsiz har qanday qurilishni rad etadi. Xato App Store Connect ga yuklash bosqichida yuz beradi. Eski ilovalar bloklanmaydi, ammo yangilanishlar manifestni majburiy kiritishni talab qiladi.

iPadOS ilovalari uchun Privacy Manifest talab qilinadimi?

Ha, manifest Apple ning barcha platformalari uchun majburiydir: iOS, iPadOS, macOS, tvOS, watchOS va visionOS. Required Reason API talablari barcha platformalar uchun yagona, garchi API to'plamlari biroz farq qilishi mumkin.

Uchinchi tomon SDK uchun manifestni qanday qo'shish mumkin?

Agar SDK manifestni taqdim etmagan bo'lsa, alohida PrivacyInfo.xcprivacy faylini yarating va uni loyihadagi SDK guruhiga qo'shing. SDK ning hujjatlariga asoslanib, ushbu SDK foydalanadigan API uchun sabablarni ko'rsating.

Apple noto'g'ri sabab tufayli qurilishni rad etishi mumkinmi?

Ha. Avtomatik tekshirishda Apple deklaratsiya qilingan sabablarni API ning haqiqiy chaqiruvlari bilan solishtiradi. Mos kelmaslik rad etilishga olib keladi. Qo'lda tekshirishda ko'rib chiquvchi tushuntirish talab qilishi mumkin.

Swift Package Manager uchun Privacy Manifest tekshiriladimi?

Ha, Apple SPM ni o'z ichiga olgan barcha bog'liqliklar uchun manifestlarni tekshiradi. Paket yetkazib beruvchilari PrivacyInfo.xcprivacy ni o'z omborlariga kiritishlari shart. Xcode arxivlashda yetishmayotgan manifestlar haqida ogohlantiradi.

Xulosa

  • Privacy Manifest — 2024 yildan boshlab barcha ilovalar va SDK lar uchun majburiy PrivacyInfo.xcprivacy fayli
  • Required Reason API — foydalanishning aniq sababini deklaratsiya qilishni talab qiluvchi 6 API kategoriyasi
  • Sabablar — noyob kodlar (C617.1, 35F9.1), har bir kategoriyada 1-5 ruxsat etilgan sabab bor
  • SDK — har bir uchinchi tomon SDK binarda o'z manifestini o'z ichiga olishi kerak
  • Validatsiya — Xcode manifestni arxivlashda, App Store Connect yuklashda tekshiradi
  • Muddatlar — 2024 yil 1 maydan boshlab barcha yangi qurilishlar manifestni o'z ichiga olishi kerak
  • PrivacyInfo.xcprivacy ni Xcode shabloni orqali yarating va faqat haqiqatda ishlatiladigan API larni deklaratsiya qiling

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing