ITMS-91064: إصلاح خطأ Invalid tracking information
بقلم Mehdi Azizi
نُشر في ، 5 د
خطأ ITMS-91064 يعني أن مفتاحَي التتبع في بيان الخصوصية متناقضان. الحل: اجعل NSPrivacyTracking وNSPrivacyTrackingDomains متوافقين ثم أعد البناء.
ITMS-91064 رفض تلقائي ترسله Apple بالبريد الإلكتروني بعد تسليم الـ build. معناه أن مفتاحَي التتبع في بيان الخصوصية (privacy manifest) يناقض أحدهما الآخر. الحل: اجعل NSPrivacyTracking وNSPrivacyTrackingDomains متوافقين، ثم أعد البناء.
واجهته في TradaZen، تطبيقي للتدرّب على التداول، بعد أن أضفت أداة لقياس الإعلانات. إليك السبب والحل.
ماذا يعني الخطأ ITMS-91064؟
عنوان الرسالة هو "ITMS-91064: Invalid tracking information". وهو يخص ملف PrivacyInfo.xcprivacy، أي بيان الخصوصية الذي يمكن أن يتضمنه كل تطبيق وكل SDK. يحتوي هذا الملف، من بين أمور أخرى، على مفتاحين مرتبطين بالتتبع بالمعنى المقصود في App Tracking Transparency:
NSPrivacyTracking: قيمته صحيحة إذا كان التطبيق أو الـ SDK يستخدم البيانات للتتبع.NSPrivacyTrackingDomains: قائمة النطاقات التي يتم الاتصال بها لهذا التتبع.
تصف Apple التركيبات الثلاث المرفوضة في ملاحظتها التقنية حول البيانات غير الصالحة:
NSPrivacyTrackingقيمته true وقائمة النطاقات فارغة. يجب ملء القائمة. هذه كانت حالتي.NSPrivacyTrackingقيمته true لكن أحد النطاقات مكتوب بشكل خاطئ. يُكتب النطاق دون مسار ودون شرطة مائلة في آخره.- توجد نطاقات في القائمة بينما
NSPrivacyTrackingقيمته false. يجب حذف القائمة.
القاعدة الأساسية موجودة في التوثيق الخاص بـبيانات الخصوصية: عندما تكون قيمة NSPrivacyTracking صحيحة، يجب تقديم قائمة النطاقات.
بريد Apple يذكر اسم الملف المخطئ ومساره. اقرأ هذا المسار: سيخبرك هل المشكلة في بيان تطبيقك أم في بيان SDK مدمج فيه.
كما في أخطاء ITMS الأخرى، هذا ليس رفضًا من مراجع بشري. الفحص تلقائي عند تسليم الـ build، ويتم استبعاد الـ build.
لماذا يحدث هذا: بيان لكل هدف
هنا الفخ. كثيرًا ما يتضمن الـ SDK بيانه الخاص مع نطاقاته. قد تظن أن هذا يكفي. لكن لتطبيقك أيضًا بيانه الخاص، وبيان التطبيق هو الذي رفضته Apple عندي.
حالتي في 21 يوليو 2026. عند ربط أداة قياس إعلانات بـ TradaZen، صرّحت بـ NSPrivacyTracking: true في إعدادات التطبيق، وهذا صحيح. لكنني لم أضف NSPrivacyTrackingDomains. بيان الـ SDK كان كاملًا. أما بيان التطبيق، الذي يولّده Expo من إعداداتي، فكان يقول "true" مع قائمة فارغة. فرُفض الـ build أثناء المعالجة.
الدرس: بيان الـ SDK لا يغطي بيان تطبيقك. إذا صرّحت بالتتبع في إعداداتك، فصرّح أيضًا بالنطاقات.
إصلاح ITMS-91064 في تطبيق Expo
مع Expo، يُضبط بيان التطبيق في الإعدادات تحت ios.privacyManifests. المبدأ مشروح في توثيق Expo حول الخصوصية، والمفتاح في مرجع الإعدادات.
- اعثر على نطاقات التتبع الخاصة بالـ SDK. انسخ القائمة من بيان الإصدار الذي يتضمنه الـ build الخاص بك، لا من آخر إصدار منشور على الإنترنت: قد يختلفان. لا تخترعها.
- أضفها إلى إعداداتك. النطاقان أدناه مجرد مثالين يجب استبدالهما:
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyTracking": true,
"NSPrivacyTrackingDomains": [
"example-tracking-domain.com",
"other-tracking-domain.com"
]
}
}
}
}
- تحقق من الملف المُولَّد قبل أن تدفع ثمن build، إذا كان مجلد
iosيُولَّد بواسطة Expo ومتجاهَلًا في git. شغّلnpx expo prebuild -p ios، ثم افتح ملفPrivacyInfo.xcprivacyالذي أُنشئ في مجلدios. يجب أن يحتوي علىNSPrivacyTrackingبقيمةtrueوعلى القائمة الكاملة للنطاقات. - أعد البناء وأرسل الـ build من جديد. البيان جزء من الملف الثنائي: التحديث عن بُعد لا يغيّره.
انتبه في الخطوة 3: هذا الأمر قد يحذف مجلد ios ثم يعيد إنشاءه. إذا كنت قد عدّلت فيه يدويًا، فلا تشغّله على مشروعك. اعمل على نسخة.
إذا كان تطبيقك لا يقوم بأي تتبع، فالطريق أقصر: اجعل NSPrivacyTracking بقيمة false واحذف القائمة.
ما الذي تغيّره هذه النطاقات لمستخدميك
التصريح بهذه النطاقات ليس مجرد إجراء شكلي. وفقًا لتوثيق Apple، إذا لم يوافق المستخدم على التتبع في نافذة App Tracking Transparency، تفشل الطلبات الموجهة إلى هذه النطاقات. هذا هو السلوك المتوقع: لا يحدث التتبع إلا إذا قال الشخص نعم.
يجب أن تقول صفحتك على App Store الشيء نفسه. إذا كان بيانك يصرّح بالتتبع، فيجب أن تذكره أيضًا تصريحات الخصوصية في صفحتك وسياسة الخصوصية الخاصة بك. وإلا فقد تتعرض لاحقًا لرفض من مراجع بموجب الإرشادات 5.1.1 أو 5.1.2: التفاصيل في سياسة الخصوصية للتطبيق.
أرسل الـ build دون مفاجآت
أخطاء ITMS تُصلَح بسرعة عندما تعرف كيف تقرؤها. أما حالات الرفض التي تأتي بعدها فتحتاج إلى نظرة أوسع: الخطوات موجودة في صفحة تطبيق رفضته Apple، وأكثر الأسباب شيوعًا في لماذا ترفض Apple تطبيقًا.
للتحقق من ملفك قبل الإرسال، يجمع Apple Review Kit قائمة التحقق الخاصة بي ومهارات Claude Code تراجع مشروعك. وإذا تعطّل إرسالك وأردت نظرة بشرية، احجز ساعة معي: نراجع مشروعك عبر مكالمة فيديو، على شاشتك. وإذا كنت تستعد لإطلاقك الأول، قم بالتشخيص المجاني: يرتّب لك الخطوات ويرسل إليك قائمة التحقق الخاصة بي لتجنب رفض Apple.
الأسئلة الشائعة
هل ITMS-91064 رفض من App Review؟
ليس بمعنى رفض من مراجع بشري. إنه فحص تلقائي يُجرى على الـ build عند تسليمه، قبل إدخاله في المراجعة. يتم استبعاد الـ build: يجب إصلاح بيان الخصوصية وإرسال build جديد.
ماذا أضع في NSPrivacyTrackingDomains؟
النطاقات التي يتصل بها تطبيقك أو الـ SDK للتتبع. انسخ تلك التي يذكرها الـ SDK في بيان الإصدار الذي يتضمنه الـ build الخاص بك. القائمة الفارغة مع NSPrivacyTracking بقيمة true من التركيبات التي ترفضها Apple.
ألا يكفي بيان الـ SDK؟
لا. في TradaZen، كان بيان الـ SDK كاملًا ومع ذلك رُفض الـ build: بيان التطبيق كان يصرّح بالتتبع دون أي نطاق. إذا كانت إعدادات تطبيقك تصرّح بالتتبع، فيجب أن تذكر النطاقات أيضًا.
تطبيقي لا يقوم بأي تتبع: ماذا أفعل؟
اجعل NSPrivacyTracking بقيمة false في إعداداتك واحذف قائمة النطاقات. ثم تحقق من أن صفحتك على App Store وسياسة الخصوصية تقولان الشيء نفسه.
هل يمكن إصلاح ITMS-91064 دون إعادة البناء؟
لا. بيان الخصوصية جزء من الملف الثنائي المُرسَل إلى Apple. يجب إصلاح الإعدادات، وإعادة البناء، وإرسال الـ build من جديد.