دليل تحسين إطار شفافية تتبع التطبيقات (ATT) من Apple: كيف تحسن معدلات الموافقة

opoinstall
2026-08-20
5 min read

كيف تحسن معدلات الموافقة على شفافية تتبع التطبيقات (ATT)؟ يتضمن تحسين تجربة طلب الإذن تقديم سياق واضح يسبق طلب الإذن، وكتابة وصف دقيق في الحقل NSUserTrackingUsageDescription، واختيار نقطة مناسبة في رحلة المستخدم لعرض طلب التفويض من النظام. يجب قياس تأثير ذلك على معدل التفويض بطريقة تجريبية.

مُعرّف الإعلانات (IDFA) هو مُعرّف جهاز قابل لإعادة التعيين توفره شركة Apple ويُستخدم لنسب الإعلانات وقياسها على نظام iOS. بموجب إطار عمل شفافية تتبع التطبيقات (ATT)، لا يمكن للapplicazione الوصول إلى مُعرّف الإعلانات إلا بعد الحصول على إذن صريح من المستخدم عبر مطالبة التفويض ATTrackingManager.

المصطلح التعريف
IDFA مُعرّف الإعلانات على مستوى نظام Apple والخاضع لإطار شفافية تتبع التطبيقات.
App Tracking Transparency (ATT) إطار عمل من Apple يتطلب الحصول على إذن المستخدم قبل تتبعه عبر التطبيقات ومواقع الويب.
ATTrackingManager واجهة برمجة التطبيقات الأساسية AppTrackingTransparency المستخدمة لطلب إذن التتبع.
Pre-Permission Primer شاشة مخصصة داخل التطبيق تُعرض قبل مطالبة النظام لشرح سبب طلب الإذن.

اقتصاديات الوصول إلى مُعرّف الإعلانات (IDFA) وتحسين الموافقة على إطار ATT

دور الوصول المصرح به لمُعرّف الإعلانات (IDFA) في القياس الحديث لنظام iOS

يمكن أن يدعم الوصول المصرح به لمُعرّف الإعلانات (IDFA) سير عمل قياس ونسب الإعلانات على مستوى المستخدم عندما يكون استخدام التطبيق لبيانات التتبع متوافقاً مع إطار ATT ومتطلبات شركاء الإعلانات والقياس. عندما لا يتوفر إذن التتبع، يمكن الفرق التي لا تزال بحاجة إلى قياس الإعلانات استخدام النهج المدعومة من النظام والمسموح بها بشكل مستقل مثل AdAttributionKit أو عمليات تكامل SKAdNetwork الحالية.

عند المصادقة، يوفر مُعرّف الإعلانات (IDFA) مفتاح ربط حتمي لتكامل شبكات الإعلانات المدعومة، مما يتيح تسوية التحويلات على مستوى الحملة دون الحاجة إلى نمذجة إحصائية. وعند حجب الإذن، تنتقل التطبيقات بقياساتها إلى الأطر الأصلية لنظام التشغيل.

مشكلة تنبيهات التشغيل الفوري عند الفتح الأول

يُعد طلب إذن التتبع من المستخدمين فور فتح التطبيق لأول مرة أمراً مسموحاً به تقنياً من قِبل Apple، ولكنه قد يقدم سياقاً أقل لقرار إذن مستنير نظراً لأن المستخدم لم يختبر وظائف التطبيق بعد:

  • غياب الثقة في المنتج: لم يطور المستخدمون الجدد بعد الثقة في وظائف التطبيق أو قيمة علامته التجارية أو ممارسات أمان البيانات فيه.
  • عدم وضوح السياق: تظهر نافذة النظام الأساسية دون تفسير مسبق، مما يدفع المستخدمين الحذرين افتراضياً إلى اختيار "طلب عدم تتبع التطبيق".
  • إرهاق الأذونات: يؤدي تكديس العديد من تنبيهات أذونات النظام (مثل الإشعارات الفورية، وATT، والموقع الجغرافي) أثناء التشغيل الأول للتطبيق إلى خلق احتكاك وزيادة معدل التخلي عن إكمال عملية الإعداد. تشير وثائق واجهة برمجة التطبيقات من Apple إلى أنه في حال كان تنبيه إذن حالي معلقاً بالفعل، فلن تظهر طلبات الإذن اللاحقة.

رحلة أذونات الموافقة على تتبع التطبيقات وتدفق الشاشات التمهيدية

تقييم أداء معدلات الموافقة بطريقة تجريبية

يختلف معدل الموافقة القابل للتحقيق بناءً على فئة التطبيق، وثقة الجمهور، وتوقيت ظهور الطلب، ووضوح النصوص. يجب على الفرق تقييم متغيرات التحسين باستخدام اختبارات A/B المُحكمة بدلاً من افتراض معايير ثابتة للصناعة.

انظر أيضاً: مُعرّف الإعلانات (IDFA) ──> نموذج النسب المحمول

الميكانيكا التقنية لإطار عمل AppTrackingTransparency

حالات إذن الوصول الأربع

يخضع الوصول إلى مُعرّف الإعلانات (IDFA) بصرامة للتعداد البرمجي ATTrackingManager.AuthorizationStatus:

  • notDetermined (0): لم يُعرض على المستخدم مربع حوار الإذن بعد.
  • restricted (1): الجهاز مقيد بموجب أدوات الرقابة الأبوية، أو ملفات تعريف التكوين التعليمية، أو أنظمة إدارة الأجهزة المؤسسية (MDM)؛ ولا يمكن منح إذن التتبع ويكون زر الإعدادات معطلاً.
  • denied (2): لا يملك التطبيق الإذن للوصول إلى البيانات المتعلقة بالتطبيق لأغراض التتبع بعد أن يرفض المستخدم الطلب.
  • authorized (3): يوافق المستخدم على التتبع. على أجهزة iOS و iPadOS المدعومة، يسمح هذا عادةً بالوصول إلى مُعرّف إعلانات غير صفري.

حالة تفويض تتبع التطبيقات وسلوك مُعرّف الإعلانات

قاعدة مطالبة النظام لمرة واحدة

يفرض نظام تشغيل iOS قاعدة العرض لمرة واحدة لـ ATTrackingManager.requestTrackingAuthorization. بمجرد تفاعل المستخدم مع النافذة المنبثقة الأصلية عن طريق اختيار "سماح" أو "طلب عدم تتبع التطبيق"، يتذكر النظام الحالة المحددة ولا يعرض المطالبة مرة أخرى خلال تثبيت هذا التطبيق.

على الرغم من أن مطالبة النظام لن تظهر مرة أخرى، إلا أنه يمكن للمستخدمين ضبط إذن التتبع الخاص بهم يدويًا في أي وقت داخل إعدادات نظام iOS.

كيف يفرض نظام iOS تصفير المُعرّفات عند حجب إذن التتبع

على نظام iOS 14.5 والإصدارات الأحدث، يعيد مُعرّف الإعلانات أصفاراً كاملة (00000000-0000-0000-0000-000000000000) عندما لا يتم منح إذن التتبع. يجب على المطورين التحقق من كل من حالة إذن ATT وقيمة المُعرّف المُعَاد بناءً على الطلب بدلاً من افتراض أن السلسلة المخزنة مؤقتاً تظل صالحة عبر عمليات إطلاق التطبيق.

بنية تجربة المستخدم عالية التحويل: استراتيجية الشاشة التمهيدية قبل طلب الإذن

تشريح الشاشة التمهيدية الفعالة للسياق: قيود إرشادات واجهة المستخدم من Apple (HIG)

وفقاً لـ إرشادات واجهة المستخدم الخصوصية من Apple، يجوز للبرامج تقديم شاشة مخصصة قبل ظهور تنبيه النظام إذا كان هناك حاجة لسياق إضافي. ومع ذلك، تفرض Apple قواعد تصميم صارمة على هذه الشاشات التمهيدية:

  • زر إجراء واحد: يجب أن توفر شاشة ما قبل الإذن زرًا واحدًا فقط (مثل "متابعة" أو "التالي") يؤدي مباشرة إلى مطالبة النظام. ويُحظر تماماً توفير زر "إلغاء" أو "إغلاق" أو "ليس الآن" يتجاوز تنبيه النظام أو يؤخره.
  • عدم تقليد واجهة المستخدم: يجب ألا تحاكي شاشة التمهيد بصرياً صندوق تنبيه نظام iOS الأصلي أو تعرض أزراراً وهمية تحمل تسمية "سماح".
  • عدم وجود إكراه بصري: يجب ألا تستخدم الواجهة رسومات أو أسهمًا أو تصميمات عالية التباين مصممة للتلاعب بالمستخدمين أو توجيههم نحو اختيار "سماح" في مطالبة النظام اللاحقة.

الامتثال لإرشادات مراجعة متجر التطبيقات 5.1.2

بموجب القسم 5.1.2 من إرشادات مراجعة متجر التطبيقات من Apple، تفرض Apple حدوداً واضحة بشأن طلبات الأذونات:

  • حظر التتبع المحفز: يُحظر تماماً على التطبيقات تقديم حوافز مالية، أو عملات افتراضية، أو محتوى متميز، أو خصومات مقابل منح الموافقة على تتبع ATT. يؤدي القيام بذلك إلى انتهاك الإرشادات 5.1.2 وقد ينتج عنه رفض التطبيق.
  • عدم تقييد الوظائف الأساسية: لا يمكن للتطبيقات حظر الميزات الأساسية، أو منع إنشاء الحسابات، أو تدهور أداء التطبيق إذا رفض المستخدم إذن التتبع.
  • أولوية خيار المستخدم: يجب دائمًا اتخاذ خيار التتبع الفعلي للمستخدم على مطالبة نظام Apple الأصلي.

قواعد تصميم الشاشة التمهيدية قبل إذن تتبع التطبيقات



المرحلة 1: تأهيل المستخدم / إدراك القيمة الأساسية
                      │
                      ▼
المرحلة 2: شاشة تمهيدية سياقية تسبق الإذن
         (إجراء واحد "متابعة" ── يوضح الغرض)
                      │
                      ▼
المرحلة 3: نافذة نظام ATTrackingManager الأصلية في iOS
         (المستخدم يختار "سماح" أو "طلب عدم تتبع التطبيق")
                      │
         ┌────────────┴────────────┐
         ▼                         ▼
   [.authorized]             [.denied]
   تم منح إذن ATT              بديل سلس للاستخدام
   (مُعرّف IDFA متاح عادةً)    مع واجهات النظام الأساسية
                             (AdAttributionKit / SKAN)

تحسين سلسلة وصف استخدام تتبع المستخدم NSUserTrackingUsageDescription

تكوين ملف Info.plist لشفافية الغرض

يحدد مفتاح NSUserTrackingUsageDescription في ملف Info.plist النص التوضيحي المعروض مباشرة داخل تنبيه نظام ATT الأصلي من Apple. وفقاً لوثائق Apple، يجب أن يكون هذا النص موجزاً ومحدداً ويوضح بدقة كيفية استخدام بيانات التتبع.

اختبار متغيرات نصوص الغرض الواضح دون تغيير الإفصاح الأساسي

عند اختبار متغيرات النصوص، يجب أن يصف كل متغير مُختبَر بدقة وبشكل كامل ممارسات التتبع الفعلية للتطبيق:

  • التركيز على التخصيص: يوضح كيف تُستخدم البيانات لتخصيص توصيات المحتوى واقترحات المنتجات.
  • التركيز على ملاءمة الإعلانات: يوضح كيف تُستخدم البيانات لتقديم عروض ترويجية صالحة وتجنب الإعلانات المتكررة.
  • التركيز على قياس الحملات: يوضح كيف تُستخدم البيانات لقياس أداء الشراكات الإعلانية.

يوضح التكوين أدناه مثالاً لـ NSUserTrackingUsageDescription. استستخدمه فقط إذا كانت الصياغة تصف بدقة ممارسات التتبع الفعلية للتطبيق:


```xml
<?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>NSUserTrackingUsageDescription</key>
    <string>ستُستخدم بياناتك لتقديم توصيات منتجات مخصصة، وعروض ترويجية ذات صلة، وقياس أداء الحملات الإعلانية.</string>
</dict>
</plist>

هندسة محفز توقيت الطلب الأمثل في دورة حياة المستخدم

اعتبارات التوقيت عبر رحلة المستخدم

على الرغم من أن طلب إذن ATT عند الإطلاق الأول مسموح به تقنياً، إلا أن تقديم الطلب بعد أن يختبر المستخدم المنفعة الأولية للمنتج يمكن أن يوفر سياقاً أكثر ملاءمة لطلب التفويض:

  • محفز ما بعد التأهيل: تقديم الطلب بعد أن يكمل المستخدم إعداد الحساب ويقوم بتكوين تفضيلاته الأولية.
  • محفز الإنجاز السياقي: تقديم الطلب بعد إكمال إجراء أساسي للمستخدم (مثل إكمال البرنامج التعليمي التأهيلي في لعبة، أو حفظ عنصر مفضلة في تطبيق تسوق، أو وضع إشارة مرجعية على مقال في تطبيق محتوى).

التنفيذ الهندسي لمدير تتمام التتبع ATTrackingManager في لغة Swift

التعامل مع حالة نشاط التطبيق وسلامة خيوط المعالجة

وفقاً لوثائق واجهة برمجة التطبيقات من Apple، يعرض ATTrackingManager.requestTrackingAuthorization مربع الحوار المنبثق فقط عندما تكون حالة التطبيق .active. إذا كان هناك تنبيه إذن آخر نشطاً أو معلقاً، فلن يظهر تنبيه النظام، ولن يقوم نظام التشغيل بوضع الطلبات المتزامنة في قائمة الانتظار.

توقيت مطالبة إذن التتبع وشروطه

يفصل التنفيذ أدناه إدارة حالة التفويض عن عرض الشاشة التمهيدية المخصصة التوضيحية:

import UIKit
import AppTrackingTransparency
import AdSupport

final class ATTManager {

    static let shared = ATTManager()
    private init() {}

    /// تقييم حالة التفويض الحالية
    var currentStatus: ATTrackingManager.AuthorizationStatus {
        return ATTrackingManager.trackingAuthorizationStatus
    }

    /// يحدد ما إذا كان يمكن تقديم إذن التتبع
    var canRequestAuthorization: Bool {
        return currentStatus == .notDetermined
    }

    /// يطلب إذن التتبع مع التحقق من حالة نشاط التطبيق
    /// - Parameter completion: دالة رد الاتصال التي تُرجع حالة التفويض التي تم حلها
    func requestAuthorization(completion: @escaping (ATTrackingManager.AuthorizationStatus) -> Void) {
        guard canRequestAuthorization else {
            completion(currentStatus)
            return
        }

        // التحقق من أن التطبيق نشط قبل استدعاء requestTrackingAuthorization
        guard UIApplication.shared.applicationState == .active else {
            print("تم تخطي طلب ATT: التطبيق غير نشط. أعد الاتصال بمجرد أن يصبح نشطاً إذا ظلت الحالة غير محددة.")
            completion(currentStatus)
            return
        }

        DispatchQueue.main.async {
            ATTrackingManager.requestTrackingAuthorization { status in
                DispatchQueue.main.async {
                    switch status {
                    case .authorized:
                        // قراءة مُعرّف الإعلانات الحالي عند الطلب؛ لا تقم بحفظ مُعرّف IDFA مخزناً مؤقتاً.
                        let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
                        print("تم ترخيص ATT - مُعرّف IDFA متاح: \(idfa)")
                    case .denied:
                        print("تم رفض ATT - مُعرّف الإعلانات يُرجع أصفاراً")
                    case .restricted:
                        print("تم تقييد ATT بواسطة ملف تعريف النظام")
                    case .notDetermined:
                        print("حالة ATT غير محسومة")
                    @unknown default:
                        print("تم مواجهة حالة ATT غير معروفة")
                    }
                    completion(status)
                }
            }
        }
    }
}

/// وحدة تحكم واجهة مستخدم مخصصة توضيحية لشاشة تمهيدية ممتثلة لإرشادات واجهة المستخدم (HIG)
final class ATTPrimerViewController: UIViewController {

    private let continueButton = UIButton(type: .system)
    private let titleLabel = UILabel()
    private let descriptionLabel = UILabel()

    var onContinueTapped: (() -> Void)?

    override func viewDidLoad() {
        super.viewDidLoad()
        setupUI()
    }

    private func setupUI() {
        view.backgroundColor = .systemBackground
        
        // منع السحب التفاعلي للإغلاق عند العرض كنافذة منبثقة لضمان التنقل عبر مسار واحد
        isModalInPresentation = true

        titleLabel.text = "ساعدنا في تخصيص تجربتك"
        titleLabel.font = .boldSystemFont(ofSize: 20)
        titleLabel.textAlignment = .center
        titleLabel.numberOfLines = 0

        descriptionLabel.text = "نحن نستخدم البيانات لتخصيص توصيات المنتجات وتقديم عروض ترويجية ذات صلة. في الشاشة التالية، سترى مطالبة الإذن القياسية من Apple لتأكيد اختيارك."
        descriptionLabel.font = .systemFont(ofSize: 15)
        descriptionLabel.textAlignment = .center
        descriptionLabel.textColor = .secondaryLabel
        descriptionLabel.numberOfLines = 0

        // تدعو إرشادات Apple HIG إلى إجراء متابعة أو التالي واحد
        continueButton.setTitle("متابعة", for: .normal)
        continueButton.titleLabel?.font = .boldSystemFont(ofSize: 17)
        continueButton.addTarget(self, action: #selector(handleContinue), for: .touchUpInside)

        let stack = UIStackView(arrangedSubviews: [titleLabel, descriptionLabel, continueButton])
        stack.axis = .vertical
        stack.spacing = 20
        stack.translatesAutoresizingMaskIntoConstraints = false

        view.addSubview(stack)
        NSLayoutConstraint.activate([
            stack.centerXAnchor.constraint(equalTo: view.centerXAnchor),
            stack.centerYAnchor.constraint(equalTo: view.centerYAnchor),
            stack.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 32),
            stack.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -32)
        ])
    }

    @objc private func handleContinue() {
        // ميكانيكا العرض والإغلاق توضيحية ويجب تكييفها مع بنية التنقل الخاصة بالتطبيق.
        dismiss(animated: true) { [weak self] in
            self?.onContinueTapped?()
        }
    }
}

التعافي بعد الرفض: توجيه المستخدمين إلى إعدادات النظام دون انتهاك السياسة

متى يتم تقديم سير عمل الإعدادات الثانوية

عندما يختار المستخدم "طلب عدم تتبع التطبيق"، تتم حل حالة التفويض إلى .denied. تُرجع المكالمات اللاحقة لـ requestTrackingAuthorization القيمة .denied دون إظهار مربع حوار. ومع ذلك، إذا بدأ المستخدم لاحقاً ميزة تستفيد صراحةً من التتبع (مثل طلب إعدادات إعلانية مخصصة في ملف تعريف حسابه)، فيمكن للتطبيق توفير مسار غير إلزامي إلى إعدادات نظام iOS.

استخدام UIApplication.openSettingsURLString

لتوجيه المستخدم إلى لوحة إعدادات التطبيق، استخدم UIApplication.openSettingsURLString:

if let settingsURL = URL(string: UIApplication.openSettingsURLString),
   UIApplication.shared.canOpenURL(settingsURL) {
    UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil)
}

لاحظ أن واجهة برمجة التطبيقات هذه تفتح صفحة الإعدادات المخصصة للتطبيق؛ ولا توفر رابطًا عميقًا مباشرًا إلى الشاشة العامة الإعدادات > الخصوصية والأمان > التتبع.

حدود سياسة متجر التطبيقات

  • عدم الإزعاج المستمر: لا تعرض لافتات متكررة تحث المستخدمين على تمكين التتبع في الإعدادات.
  • عدم قفل الميزات: لا تقم مطلقاً بتعطيل الوظائف الأساسية لمجرد أن التتبع يظل معطلاً في الإعدادات.

مصفوفة القرار المقارنة: استراتيجيات ما قبل الإذن مقابل تنبيهات التشغيل الأول

البعد تنبيه التشغيل الأول الافتراضي نافذة الإذن المقيدة بشدة الشاشة التمهيدية المتوافقة مع HIG
سياق المستخدم قبل الطلب منخفض (لا يوجد تفاعل مع المنتج) متفاوت (يحظر الوصول) سياقي (يُعرض بعد تفاعل ذي صلة)
إرشادات واجهة المستخدم/الإذن من Apple مسموح به عندما يكون الطلب واستخدام البيانات متوافقين غير مسموح به عندما يعتمد الوصول أو التعويض على التتبع مسموح به عند اتباع قيود التنبيه المسبق وقواعد التتبع لـ HIG
قيود واجهة المستخدم للتنبيه المسبق من Apple غير مطبق غير مطبق إجراء متابعة/التالي واحد؛ لا توجد تنبيهات وهمية
توقيت مقاطعة الأذونات فور الإطلاق حظر معلم سياقي
معدل الموافقة المرصود يجب قياسه بطريقة تجريبية غير مسموح به يجب قياسه بطريقة تجريبية

الأسئلة الشائعة (FAQ)

هل يمكن للتطبيق تقديم عملة داخل التطبيق أو خصومات مقابل منح إذن تتبع ATT؟
لا. يحظر القسم 5.1.2 من إرشادات مراجعة متجر التطبيقات من Apple صراحةً تقديم حوافز - مثل العملة الافتراضية، أو الميزات الإضافية، أو النقود، أو الخصومات - مقابل موافقة المستخدم على التتبع. يُعد القيام بذلك انتهاكًا لإرشادات المنصة وقد يؤدي إلى رفض التطبيق.
هل يمكن للتطبيق عرض مطالبة ATT ثانية إذا اختار المستخدم في البداية "طلب عدم تتبع التطبيق"؟
لا. يسمح نظام iOS بعرض مطالبة نظام <code>ATTrackingManager.requestTrackingAuthorization</code> مرة واحدة فقط لكل عملية تثبيت للتطبيق. إذا رفض المستخدم الإذن، فإن المكالمات اللاحقة تعيد القيمة <code>.denied</code> دون إظهار مربع حوار. لضبط الإذن، يجب على المستخدم تحديث خيار التتبع الخاص به يدويًا في إعدادات iOS.
هل تنتهك الشاشة التمهيدية التي تسبق الإذن إرشادات متجر التطبيقات الخاص بـ Apple؟
تسمح Apple بتوضيح مخصص يسبق التنبيه عندما يكون السياق الإضافي ضروريًا، بشرط أن تتوافق الشاشة مع إرشادات واجهة المستخدم: يجب أن تستخدم إجراء متابعة أو التالي واحدًا يؤدي مباشرة إلى مطالبة النظام، ويجب ألا تتضمن إجراء إلغاء أو إغلاق على الشاشة التمهيدية، ويجب ألا تحاكي تنبيه النظام الأصلي، ويجب ألا تستخدم صياغة أو إشارات مرئية تضغط على المستخدمين نحو اختيار سماح.

الملخص وإطار القرار

يتطلب تحسين تجربة إذن ATT إفصاحًا واضحًا عن الغرض وتوقيتًا واعيًا بالسياق. عندما يكون التفسير الإضافي ضروريًا، يمكن للشاشة التمهيدية المتوافقة مع HIG توفير السياق قبل مطالبة النظام، مع مواءمة تجربة الأذونات مع تتبع Apple المنشور وإرشادات الواجهة.

إذا كان سياق النسب أو التأهيل لا يزال مطلوبًا بعد رفض إذن ATT، فيمكن للتبيقات استخدام آليات مسموح بها بشكل مستقل مثل AdAttributionKit، أو عمليات تكامل SKAdNetwork الحالية، أو التوجيه السياقي الأصلي حقًا الذي يظل ضمن قواعد تتبع Apple.

للحصول على التوجيه السياقي الخاص بالمنتج وسلوك النسب، راجع وثائق OpoInstall وقيم التنفيذ وفقًا لمتطلبات تتبع Apple المعمول بها.

المواد ذات الصلة

  • المفاهيم: إطار شفافية تتبع التطبيقات (ATT)، تحسين مُعرّف الإعلانات (IDFA)، الشاشات التمهيدية قبل الأذونات، مسارات التحويل للموافقات

  • التقنيات: إطار عمل StoreKit، إطار عمل AppTrackingTransparency، حزمة تطوير البرمجيات للهواتف المحمولة OpoInstall Mobile SDK

  • المعايير: إرشادات واجهة المستخدم من Apple للخصوصية، إرشادات مراجعة متجر التطبيقات القسم 5.1.2

  • واجهات برمجة التطبيقات (APIs): ATTrackingManager.requestTrackingAuthorization، UIApplication.openSettingsURLString، ASIdentifierManager

الوثائق الرسمية

Share this article