# แก้ ITMS-91064 Invalid tracking information ใน Expo

> ITMS-91064 หมายความว่า NSPrivacyTracking กับ NSPrivacyTrackingDomains ในไฟล์ privacy manifest ขัดกัน วิธีแก้คือทำให้สองคีย์นี้ตรงกัน แล้ว build ใหม่

หน้าต้นฉบับ: [แก้ ITMS-91064 Invalid tracking information ใน Expo](https://devoria.fr/th/blog/fix-itms-91064-invalid-tracking-information-expo)
ผู้เขียน: [Mehdi Azizi](https://devoria.fr/th/mehdi-azizi)
เผยแพร่: 2026-10-16
แก้ไขเนื้อหาล่าสุด: 2026-10-16


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 ที่ไม่ถูกต้อง](https://developer.apple.com/documentation/technotes/tn3181-debugging-invalid-privacy-manifest):

- `NSPrivacyTracking` เป็นจริง แต่รายชื่อโดเมนว่างเปล่า ต้องใส่รายชื่อให้ครบ กรณีของผมคือแบบนี้
- `NSPrivacyTracking` เป็นจริง แต่มีโดเมนที่เขียนผิด โดเมนต้องเขียนโดยไม่มี path และไม่มีเครื่องหมาย / ปิดท้าย
- มีรายชื่อโดเมน ทั้งที่ `NSPrivacyTracking` เป็นเท็จ ต้องลบรายชื่อออก

กฎหลักอยู่ในเอกสารเรื่อง [privacy manifest](https://developer.apple.com/documentation/bundleresources/privacy-manifest-files): เมื่อ `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 เรื่องความเป็นส่วนตัว](https://docs.expo.dev/guides/apple-privacy/) และคีย์อยู่ใน[เอกสารอ้างอิงการตั้งค่า](https://docs.expo.dev/versions/latest/config/app/)

1. **หาโดเมนติดตามของ SDK** คัดลอกรายชื่อจาก manifest ของเวอร์ชันที่ build ของคุณฝังอยู่ ไม่ใช่จากเวอร์ชันล่าสุดบนเว็บ เพราะอาจไม่ตรงกัน อย่าเดาเอาเอง
2. **เพิ่มโดเมนเหล่านั้นลงในการตั้งค่า** สองโดเมนด้านล่างเป็นแค่ตัวอย่างที่ต้องเปลี่ยน:

```json
{
  "expo": {
    "ios": {
      "privacyManifests": {
        "NSPrivacyTracking": true,
        "NSPrivacyTrackingDomains": [
          "example-tracking-domain.com",
          "another-tracking-domain.com"
        ]
      }
    }
  }
}
```

3. **ตรวจไฟล์ที่ถูกสร้างก่อนจ่ายเงินเพื่อ build** หากโฟลเดอร์ `ios` ของคุณถูกสร้างโดย Expo และถูก git ignore ไว้ ให้รัน `npx expo prebuild -p ios` แล้วเปิดไฟล์ `PrivacyInfo.xcprivacy` ที่ถูกสร้างในโฟลเดอร์ `ios` ไฟล์ต้องมี `NSPrivacyTracking` เป็น `true` และมีรายชื่อโดเมนครบ
4. **build ใหม่แล้วส่งอีกครั้ง** manifest เป็นส่วนหนึ่งของไบนารี การอัปเดตแบบ remote จึงแก้มันไม่ได้

ระวังขั้นตอนที่ 3: คำสั่งนี้อาจลบแล้วสร้างโฟลเดอร์ `ios` ขึ้นใหม่ ถ้าคุณเคยแก้ไขอะไรในนั้นด้วยมือ อย่ารันกับโปรเจกต์จริง ให้ทำกับสำเนาแทน

ถ้าแอปของคุณไม่มีการติดตามเลย ทางลัดคือ ตั้ง `NSPrivacyTracking` เป็น `false` แล้วลบรายชื่อออก

## โดเมนเหล่านี้ส่งผลอะไรกับผู้ใช้ของคุณ

การประกาศโดเมนเหล่านี้ไม่ใช่แค่พิธีการ ตามเอกสารของ Apple ถ้าผู้ใช้ไม่ยอมรับการติดตามในหน้าต่าง App Tracking Transparency คำขอที่ส่งไปยังโดเมนเหล่านี้จะล้มเหลว นี่คือพฤติกรรมที่ตั้งใจไว้: การติดตามจะเกิดขึ้นก็ต่อเมื่อผู้ใช้ตอบตกลงเท่านั้น

หน้า App Store ของคุณต้องบอกเรื่องเดียวกัน ถ้า manifest ประกาศว่ามีการติดตาม ข้อมูลความเป็นส่วนตัวในหน้า App Store และนโยบายความเป็นส่วนตัวของคุณก็ต้องบอกไว้ด้วย ไม่อย่างนั้นคุณเสี่ยงถูก reviewer ปฏิเสธตามมาภายใต้ guidelines 5.1.1 หรือ 5.1.2 รายละเอียดอยู่ใน[นโยบายความเป็นส่วนตัวของแอป](https://devoria.fr/th/blog/ios-app-privacy-policy-guide)

## ส่ง build โดยไม่มีเรื่องเซอร์ไพรส์

ข้อผิดพลาด ITMS แก้ได้เร็วถ้าคุณรู้วิธีอ่าน แต่การปฏิเสธที่ตามมาทีหลังต้องใช้การมองภาพรวมมากกว่า แนวทางอยู่ในหน้า[แอปถูก Apple ปฏิเสธ](https://devoria.fr/th/expertise/app-rejected-by-apple) และเหตุผลที่พบบ่อยที่สุดอยู่ใน[ทำไม Apple ปฏิเสธแอป](https://devoria.fr/th/blog/apple-app-rejection-reasons-real-cases)

ถ้าต้องการตรวจโปรเจกต์ก่อนส่ง [Apple Review Kit](https://devoria.fr/th/kits/review-apple) รวม checklist ของผมและ skills ของ Claude Code ที่ช่วยอ่านทวนโปรเจกต์ของคุณ ถ้าการส่งของคุณติดขัดและอยากได้คนช่วยดู [จองเวลาหนึ่งชั่วโมงกับผม](https://devoria.fr/th/coaching) เราจะดูโปรเจกต์ของคุณผ่านวิดีโอคอลบนหน้าจอของคุณเลย และถ้าคุณกำลังเตรียมเปิดตัวแอปแรก [ทำแบบประเมินฟรี](https://devoria.fr/th/diagnostic) ซึ่งจะเรียงขั้นตอนให้เป็นลำดับ และส่ง 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 ใหม่ แล้วส่งอีกครั้ง


## โปรเจกต์ของคุณ

[Apple Review Kit](https://devoria.fr/th/kits/review-apple): เช็กลิสต์รีวิว App Store ที่ผมใช้ การปฏิเสธจาก Apple ที่ผมแก้แล้ว บันทึกถึงผู้ตรวจ และสอง skills ของ Claude Code ที่ตรวจแอปคุณ 29 €

[iOS Kit](https://devoria.fr/th/kits/ios): สร้างแอป iPhone ด้วย Claude Code: Starter Code ของแอปผม skills ที่ตรวจงาน และคิต Apple Review, Screenshots และ ASO 129,99 €
