แก้ ITMS-91064 Invalid tracking information ใน Expo
โดย Mehdi Azizi
เผยแพร่เมื่อ , 5 นาที
ITMS-91064 หมายความว่า NSPrivacyTracking กับ NSPrivacyTrackingDomains ในไฟล์ privacy manifest ขัดกัน วิธีแก้คือทำให้สองคีย์นี้ตรงกัน แล้ว build ใหม่
ITMS-91064 คือการปฏิเสธอัตโนมัติจาก Apple ที่ส่งมาทางอีเมลหลังคุณส่ง build ขึ้นไป มันหมายความว่าคีย์เกี่ยวกับการติดตามสองตัวใน privacy manifest ของคุณขัดแย้งกันเอง วิธีแก้คือทำให้ NSPrivacyTracking กับ NSPrivacyTrackingDomains สอดคล้องกัน แล้ว build ใหม่
ผมเจอข้อผิดพลาดนี้กับ TradaZen แอปฝึกเทรดของผม หลังจากเพิ่มเครื่องมือวัดผลโฆษณาเข้าไป นี่คือสาเหตุและวิธีแก้ครับ
ข้อผิดพลาด ITMS-91064 หมายความว่าอะไร?
ข้อความนี้มีหัวเรื่องว่า "ITMS-91064: Invalid tracking information" มันชี้ไปที่ไฟล์ PrivacyInfo.xcprivacy ซึ่งเป็น privacy manifest ที่ทุกแอปและทุก SDK ฝังมาได้ ไฟล์นี้มีคีย์สองตัวที่เกี่ยวกับการติดตาม (tracking) ตามความหมายของ App Tracking Transparency:
NSPrivacyTracking: เป็นจริงถ้าแอปหรือ SDK ใช้ข้อมูลเพื่อการติดตามNSPrivacyTrackingDomains: รายชื่อโดเมนที่ติดต่อเพื่อการติดตามนั้น
Apple อธิบายสามกรณีที่ถูกปฏิเสธไว้ในบันทึกทางเทคนิคเรื่อง manifest ที่ไม่ถูกต้อง:
NSPrivacyTrackingเป็นจริง แต่รายชื่อโดเมนว่างเปล่า ต้องใส่รายชื่อให้ครบ กรณีของผมคือแบบนี้NSPrivacyTrackingเป็นจริง แต่มีโดเมนที่เขียนผิด โดเมนต้องเขียนโดยไม่มี path และไม่มีเครื่องหมาย / ปิดท้าย- มีรายชื่อโดเมน ทั้งที่
NSPrivacyTrackingเป็นเท็จ ต้องลบรายชื่อออก
กฎหลักอยู่ในเอกสารเรื่อง privacy manifest: เมื่อ NSPrivacyTracking เป็นจริง คุณต้องระบุรายชื่อโดเมนด้วย
อีเมลจาก Apple จะบอกชื่อและ path ของไฟล์ที่มีปัญหา อ่าน path นี้ให้ดี เพราะมันบอกว่าปัญหามาจาก manifest ของแอปคุณ หรือของ SDK ที่ฝังอยู่
เช่นเดียวกับข้อผิดพลาด ITMS อื่นๆ นี่ไม่ใช่การปฏิเสธจาก reviewer การตรวจสอบเป็นแบบอัตโนมัติตอนส่ง build และ build นั้นจะถูกตีกลับ
ทำไมถึงเกิดขึ้น: หนึ่ง manifest ต่อหนึ่ง target
นี่แหละคือกับดัก SDK มักฝัง manifest ของตัวเองมาพร้อมโดเมน คุณอาจคิดว่าแค่นั้นก็พอแล้ว แต่แอปของคุณก็มี manifest ของตัวเองด้วย และ ในกรณีของผม manifest ของแอปนี่แหละที่ Apple ปฏิเสธ
กรณีของผมเกิดวันที่ 21 กรกฎาคม 2026 ตอนเชื่อมเครื่องมือวัดผลโฆษณาเข้ากับ TradaZen ผมประกาศ NSPrivacyTracking: true ไว้ในการตั้งค่าของแอป ซึ่งถูกต้อง แต่ผมไม่ได้เพิ่ม NSPrivacyTrackingDomains manifest ของ SDK ครบถ้วน ส่วนของแอปที่ Expo สร้างจากการตั้งค่าของผม บอกว่า "จริง" แต่รายชื่อว่างเปล่า build เลยถูกปฏิเสธตอนประมวลผล
บทเรียน: manifest ของ SDK ไม่ได้ครอบคลุม manifest ของแอปคุณ ถ้าคุณประกาศการติดตามในการตั้งค่า คุณก็ต้องประกาศโดเมนด้วย
แก้ ITMS-91064 ในแอป Expo
ใน Expo คุณตั้งค่า manifest ของแอปได้ในการตั้งค่า ภายใต้ ios.privacyManifests หลักการอยู่ในเอกสารของ Expo เรื่องความเป็นส่วนตัว และคีย์อยู่ในเอกสารอ้างอิงการตั้งค่า
- หาโดเมนติดตามของ SDK คัดลอกรายชื่อจาก manifest ของเวอร์ชันที่ build ของคุณฝังอยู่ ไม่ใช่จากเวอร์ชันล่าสุดบนเว็บ เพราะอาจไม่ตรงกัน อย่าเดาเอาเอง
- เพิ่มโดเมนเหล่านั้นลงในการตั้งค่า สองโดเมนด้านล่างเป็นแค่ตัวอย่างที่ต้องเปลี่ยน:
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyTracking": true,
"NSPrivacyTrackingDomains": [
"example-tracking-domain.com",
"another-tracking-domain.com"
]
}
}
}
}
- ตรวจไฟล์ที่ถูกสร้างก่อนจ่ายเงินเพื่อ build หากโฟลเดอร์
iosของคุณถูกสร้างโดย Expo และถูก git ignore ไว้ ให้รันnpx expo prebuild -p iosแล้วเปิดไฟล์PrivacyInfo.xcprivacyที่ถูกสร้างในโฟลเดอร์iosไฟล์ต้องมีNSPrivacyTrackingเป็นtrueและมีรายชื่อโดเมนครบ - build ใหม่แล้วส่งอีกครั้ง manifest เป็นส่วนหนึ่งของไบนารี การอัปเดตแบบ remote จึงแก้มันไม่ได้
ระวังขั้นตอนที่ 3: คำสั่งนี้อาจลบแล้วสร้างโฟลเดอร์ ios ขึ้นใหม่ ถ้าคุณเคยแก้ไขอะไรในนั้นด้วยมือ อย่ารันกับโปรเจกต์จริง ให้ทำกับสำเนาแทน
ถ้าแอปของคุณไม่มีการติดตามเลย ทางลัดคือ ตั้ง NSPrivacyTracking เป็น false แล้วลบรายชื่อออก
โดเมนเหล่านี้ส่งผลอะไรกับผู้ใช้ของคุณ
การประกาศโดเมนเหล่านี้ไม่ใช่แค่พิธีการ ตามเอกสารของ Apple ถ้าผู้ใช้ไม่ยอมรับการติดตามในหน้าต่าง App Tracking Transparency คำขอที่ส่งไปยังโดเมนเหล่านี้จะล้มเหลว นี่คือพฤติกรรมที่ตั้งใจไว้: การติดตามจะเกิดขึ้นก็ต่อเมื่อผู้ใช้ตอบตกลงเท่านั้น
หน้า App Store ของคุณต้องบอกเรื่องเดียวกัน ถ้า manifest ประกาศว่ามีการติดตาม ข้อมูลความเป็นส่วนตัวในหน้า App Store และนโยบายความเป็นส่วนตัวของคุณก็ต้องบอกไว้ด้วย ไม่อย่างนั้นคุณเสี่ยงถูก reviewer ปฏิเสธตามมาภายใต้ guidelines 5.1.1 หรือ 5.1.2 รายละเอียดอยู่ในนโยบายความเป็นส่วนตัวของแอป
ส่ง build โดยไม่มีเรื่องเซอร์ไพรส์
ข้อผิดพลาด ITMS แก้ได้เร็วถ้าคุณรู้วิธีอ่าน แต่การปฏิเสธที่ตามมาทีหลังต้องใช้การมองภาพรวมมากกว่า แนวทางอยู่ในหน้าแอปถูก Apple ปฏิเสธ และเหตุผลที่พบบ่อยที่สุดอยู่ในทำไม Apple ปฏิเสธแอป
ถ้าต้องการตรวจโปรเจกต์ก่อนส่ง Apple Review Kit รวม checklist ของผมและ skills ของ Claude Code ที่ช่วยอ่านทวนโปรเจกต์ของคุณ ถ้าการส่งของคุณติดขัดและอยากได้คนช่วยดู จองเวลาหนึ่งชั่วโมงกับผม เราจะดูโปรเจกต์ของคุณผ่านวิดีโอคอลบนหน้าจอของคุณเลย และถ้าคุณกำลังเตรียมเปิดตัวแอปแรก ทำแบบประเมินฟรี ซึ่งจะเรียงขั้นตอนให้เป็นลำดับ และส่ง checklist กันโดน Apple ปฏิเสธของผมให้คุณ
คำถามที่พบบ่อย
ITMS-91064 เป็นการปฏิเสธจาก App Review หรือไม่?
ไม่ใช่ในแง่ของ reviewer ที่เป็นคน มันคือการตรวจสอบอัตโนมัติที่ทำกับ build ตอนส่ง ก่อนเข้าสู่การรีวิว build จะถูกตีกลับ คุณต้องแก้ privacy manifest แล้วส่ง build ใหม่
ต้องใส่อะไรใน NSPrivacyTrackingDomains?
โดเมนที่แอปหรือ SDK ของคุณติดต่อเพื่อการติดตาม คัดลอกโดเมนที่ SDK ระบุไว้ใน manifest ของเวอร์ชันที่ build ของคุณฝังอยู่ รายชื่อว่างเปล่าคู่กับ NSPrivacyTracking เป็น true คือหนึ่งในกรณีที่ Apple ปฏิเสธ
manifest ของ SDK ไม่พอหรือ?
ไม่พอครับ กับ TradaZen manifest ของ SDK ครบถ้วน แต่ build ก็ยังถูกปฏิเสธ เพราะ manifest ของแอปประกาศว่ามีการติดตามโดยไม่มีโดเมนเลย ถ้าการตั้งค่าแอปของคุณประกาศการติดตาม ก็ต้องระบุโดเมนด้วย
แอปของฉันไม่มีการติดตาม ต้องทำอย่างไร?
ตั้ง NSPrivacyTracking เป็น false ในการตั้งค่า แล้วลบรายชื่อโดเมนออก จากนั้นตรวจให้แน่ใจว่าหน้า App Store และนโยบายความเป็นส่วนตัวของคุณบอกเรื่องเดียวกัน
แก้ ITMS-91064 โดยไม่ต้อง build ใหม่ได้ไหม?
ไม่ได้ privacy manifest เป็นส่วนหนึ่งของไบนารีที่ส่งให้ Apple คุณต้องแก้การตั้งค่า build ใหม่ แล้วส่งอีกครั้ง