# ทำความเข้าใจเกี่ยวกับตัวระบุอุปกรณ์ใน Pushwoosh

มีสองวิธีในการระบุอุปกรณ์เฉพาะที่ลงทะเบียนกับ Pushwoosh – คือ hardware ID (HWID) และ push token

## HWID

HWID (หรือ Hardware ID) เป็นตัวระบุหลักที่ Pushwoosh SDK กำหนดให้กับอุปกรณ์

#### Android HWID

สำหรับอุปกรณ์ Android, HWID คือชุดตัวอักษรและตัวเลขแบบสุ่มที่สร้างขึ้นโดยแอปแรกที่ติดตั้ง Pushwoosh SDK บนอุปกรณ์ จากนั้นจะถูกแชร์กับแอปอื่นๆ ที่มี Pushwoosh SDK เพื่อให้แอปทั้งหมดดังกล่าวมี HWID เดียวกัน

อย่างไรก็ตาม หากผู้ใช้ลบแอปทั้งหมดที่มี Pushwoosh SDK แล้วติดตั้งใหม่บางส่วน HWID ใหม่จะถูกสร้างขึ้นอีกครั้ง

ตัวอย่าง Android HWID: `5dcaed99-e1e0-44dc-bde2-b96188b99e9e`

#### iOS HWID

สำหรับอุปกรณ์ iOS, IDFV ([Identifier for Vendor](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor)) จะถูกใช้เป็น HWID ของอุปกรณ์ มันจะไม่เปลี่ยนแปลงตราบใดที่ยังมีแอปอย่างน้อยหนึ่งแอปจากผู้ขายรายเดียวกันติดตั้งอยู่บนอุปกรณ์

ตัวอย่าง iOS HWID (ตัวพิมพ์ใหญ่เท่านั้น!): `CBAF8ED1-17FB-49A3-73BD-DC79B63AEF93`

## Push token

Push token (device token) เป็นคีย์เฉพาะสำหรับการรวมกันของแอปและอุปกรณ์ที่ออกโดยเกตเวย์การแจ้งเตือนแบบพุชของ Apple หรือ Google มันช่วยให้เกตเวย์และผู้ให้บริการการแจ้งเตือนแบบพุชสามารถกำหนดเส้นทางข้อความและรับรองว่าการแจ้งเตือนจะถูกส่งไปยังการรวมกันของแอปและอุปกรณ์เฉพาะที่ตั้งใจไว้

#### iOS push token

iOS device push token เป็นสตริงที่มีสัญลักษณ์เลขฐานสิบหก 64 ตัว ตัวอย่าง iOS push token: `03df25c845d460bcdad7802d2vf6fc1dfde97283bf75cc993eb6dca835ea2e2f`

<Aside type="caution">
ตรวจสอบให้แน่ใจว่า iOS push token ที่คุณใช้เมื่อกำหนดเป้าหมายอุปกรณ์เฉพาะในคำขอ API ของคุณเป็น **ตัวพิมพ์เล็ก**
</Aside>

#### Android push token

Android device push token อาจมีความยาวแตกต่างกัน (โดยปกติจะต่ำกว่า 255 ตัวอักษร) และโดยทั่วไปจะขึ้นต้นด้วย APA91b…; อย่างไรก็ตาม อาจมีคำนำหน้าคั่นด้วยเครื่องหมายโคลอน ตัวอย่าง Android push token: `APA91bFoi3lMMre9G3XzR1LrF4ZT82_15MsMdEICogXSLB8-MrdkRuRQFwNI5u8Dh0cI90ABD3BOKnxkEla8cGdisbDHl5cVIkZah5QUhSAxzx4Roa7b4xy9tvx9iNSYw-eXBYYd8k1XKf8Q_Qq1X9-x-U-Y79vdPq`

<Aside type="caution">
การใช้ device token ดิบเพื่อกำหนดเป้าหมายอุปกรณ์เฉพาะไม่ใช่วิธีที่น่าเชื่อถือที่สุด เนื่องจาก FCM push token มีแนวโน้มที่จะเปลี่ยนแปลงเป็นครั้งคราว และยากที่จะบอกได้ว่าเกิดขึ้นบ่อยเพียงใด
</Aside>

## การรวบรวมบันทึก, HWID, และ push token จากอุปกรณ์

### iOS

ขั้นแรก หากคุณสามารถเข้าถึงซอร์สโค้ดของแอปของคุณได้ ตรวจสอบให้แน่ใจว่า `Pushwoosh_LOG_LEVEL` ในแอปของคุณถูกตั้งค่าเป็น `VERBOSE` หากต้องการทำเช่นนี้ ให้ตรวจสอบคีย์สตริง `Pushwoosh_LOG_LEVEL` ในไฟล์ `Info.plist` ของคุณ หากไม่มี ให้ข้ามไปยังขั้นตอนถัดไป นี่คือค่าที่เป็นไปได้สำหรับคีย์นี้:

*   `NONE` - ไม่มีบันทึกจาก SDK
*   `ERROR` - แสดงเฉพาะข้อผิดพลาดในคอนโซล
*   `WARNING` - แสดงคำเตือนด้วย
*   `INFO` - เพิ่มข้อความข้อมูล
*   `DEBUG` - เพิ่มข้อมูลดีบัก
*   `VERBOSE` - บันทึกทั้งหมดจาก SDK

ค่าคีย์ `VERBOSE` ช่วยให้ Pushwoosh SDK แสดงข้อมูลสำคัญเกี่ยวกับการดำเนินการลงทะเบียน

2. จากนั้น เชื่อมต่ออุปกรณ์กับ Mac ของคุณและเปิด Xcode ไปที่ Window->Device and Simulators

<img src="/pushwoosh-knowledge-hub-device-identifiers-1.webp" alt="หน้าต่าง Devices and Simulators ของ Xcode แสดงอุปกรณ์ iOS ที่เชื่อมต่อ"/>

3. ในหน้าต่างที่เปิดขึ้น ให้เลือกอุปกรณ์ที่เชื่อมต่อของคุณและคลิกที่สามเหลี่ยมชี้ขึ้นที่ด้านล่างซ้ายเพื่อดูคอนโซลของอุปกรณ์:

<img src="/pushwoosh-knowledge-hub-device-identifiers-2.webp" alt="มุมมองคอนโซลอุปกรณ์ของ Xcode แสดงบันทึกอุปกรณ์พร้อมปุ่มสามเหลี่ยมชี้ขึ้นที่ถูกไฮไลต์"/>

ตั้งแต่ Xcode เวอร์ชัน 9.3 เป็นต้นไป กระบวนการรับบันทึกคอนโซลของอุปกรณ์มีการเปลี่ยนแปลงเล็กน้อย สิ่งที่คุณต้องทำคือไปที่ Launchpad ของคุณและเปิดแอปพลิเคชัน "Console" เลือกอุปกรณ์ของคุณในแถบด้านข้างซ้าย แค่นั้นเอง!

<img src="/pushwoosh-knowledge-hub-device-identifiers-3.webp" alt="แอปพลิเคชัน Console ของ macOS แสดงอุปกรณ์ iOS ที่เชื่อมต่อที่ถูกเลือกในแถบด้านข้างซ้ายพร้อมบันทึกอุปกรณ์ที่แสดง"/>

4. ต่อไป เปิดแอปของคุณบนอุปกรณ์และรอหน้าต่างโต้ตอบ อนุญาตการแจ้งเตือนแบบพุชสำหรับแอปของคุณ

5. หลังจากขั้นตอนเหล่านี้ ให้เลือกบันทึกอุปกรณ์ทั้งหมดจากหน้าต่างคอนโซลและคัดลอกไปยังโปรแกรมแก้ไขข้อความใดก็ได้

คำขอ API ของ Pushwoosh [`/registerDevice`](/th/developer/api-reference/device-api/) คือสิ่งที่คุณกำลังมองหา:

<img src="/pushwoosh-knowledge-hub-device-identifiers-4.webp" alt="บันทึกคอนโซลอุปกรณ์แสดงคำขอ API registerDevice พร้อมพารามิเตอร์ hwid และ push token ที่มองเห็นได้"/>

หากอุปกรณ์ลงทะเบียนอย่างถูกต้อง คำขอนี้ต้องมีพารามิเตอร์ต่อไปนี้ รวมถึงค่า "hwid" และ "push token":

```txt title="ตัวอย่าง"
x
| Pushwoosh request:
| Url: https://D868A-C13C1.api.pushwoosh.com/json/1.3/registerDevice
| Payload: {"request":{"gateway":"production","jailbroken":0,"app_version":"1.9","application":"D868A-C13C1","sounds":["bubble.wav"],"device_type":1,"userId":"1457691684303547","language":"en","hwid":"FBCA07FE-05EE-4770-B4BA-AB6737BC1A98","package":"com.pushwoosh.pushon","timezone":"25200","push_token":"ae784019d1b8c8e38a1ea06f0800c17a4fa986d6e2d346fc79373e92439ff8f7","os_version":"11.2.2","v":"5.5.1","device_model":"iPhone7,1"}}
| Status: "200 no error"
| Response: {"status_code":200,"status_message":"OK","response":{"iosCategories":[{"categoryId":0,"buttons":[{"id":"33389","label":"test","type":"0","startApplication":0},{"id":"1233","label":"ajhdkj","type":"1","startApplication":0}]}]}}
x
```

ข้อความแจ้งเตือนพร้อม push token ของอุปกรณ์ของคุณควรปรากฏขึ้นด้วย:

```
<Notice>: [PW] [I] -[PWPushNotificationsManagerCommon] Registered for push notifications: ae784019d1b8c8e38a1ea06f0800c17a4fa986d6e2d346fc79373e92439ff8f7
```

### Android

1. หากคุณสามารถเข้าถึงซอร์สโค้ดของแอปได้ ตรวจสอบให้แน่ใจว่าระดับบันทึกของ Pushwoosh ถูกตั้งค่าเป็น `NOISE` หากต้องการทำเช่นนี้ ให้เพิ่มข้อมูลเมตา `com.pushwoosh.log_level` ที่มีค่า `NOISE` ลงใน `AndroidManifest.xml`

2. ต่อไป เปิด Android Studio บน Mac/PC ของคุณและไปที่ Tools -> Android -> Android Device Monitor

<img src="/pushwoosh-knowledge-hub-device-identifiers-5.webp" alt="หน้าต่าง Android Device Monitor ของ Android Studio แสดงอุปกรณ์ Android ที่เชื่อมต่อ"/>

3. เชื่อมต่ออุปกรณ์ของคุณกับ Mac/PC และเปิดแอป รอประมาณ 30 วินาที เลือกบันทึกอุปกรณ์ทั้งหมดจากหน้าต่างคอนโซลและคัดลอกไปยังโปรแกรมแก้ไขข้อความใดก็ได้

<img src="/pushwoosh-knowledge-hub-device-identifiers-6.webp" alt="หน้าต่างบันทึกคอนโซลของ Android Device Monitor แสดงบันทึกอุปกรณ์พร้อมคำขอ registerDevice ที่มองเห็นได้"/>

โปรดทราบว่าใน Android Studio เวอร์ชันล่าสุด คุณยังสามารถใช้เครื่องมือ Logcat เพื่อรับบันทึกคอนโซลของอุปกรณ์ได้ เปิด Android Studio และไปที่ View -> Tool Windows -> Logcat:

<img src="/pushwoosh-knowledge-hub-device-identifiers-7.webp" alt="อินเทอร์เฟซ Android Studio แสดงหน้าต่างเครื่องมือ Logcat ที่เข้าถึงจากเมนู View"/>

หลังจากนั้น คุณสามารถค้นหาบันทึกอุปกรณ์ในหน้าต่าง Logcat:

<img src="/pushwoosh-knowledge-hub-device-identifiers-8.webp" alt="หน้าต่าง Logcat ของ Android Studio แสดงบันทึกอุปกรณ์พร้อมคำขอ API registerDevice ที่มองเห็นได้"/>

นี่คือตัวอย่างด้านล่างว่าคำขอ API Pushwoosh /registerDevice มีลักษณะอย่างไรภายในบันทึกคอนโซลของอุปกรณ์:

<img src="/pushwoosh-knowledge-hub-device-identifiers-9.webp" alt="บันทึกคอนโซลอุปกรณ์ Android แสดงคำขอ API registerDevice พร้อมพารามิเตอร์ hwid และ push token ที่ถูกไฮไลต์"/>

ค้นหาค่าพารามิเตอร์ "hwid" และ "push token" ในคำขอ:

```txt title="ตัวอย่าง"
[RequestManager]
x
| Pushwoosh request:
| Url: https://D868A-C13C1.api.pushwoosh.com/json/1.3/registerDevice
| Payload: {"request":{"application":"D868A-C13C1","hwid":"fc79efabee7649ec","v":"5.5.2","device_type":3,"userId":"fc79efabee7649ec","device_name":"Phone","language":"en","timezone":25200,"android_package":"com.pushwoosh.pushon","jailbroken":0,"device_model":"Sony F8332","os_version":"8.0.0","idfa":"d43ad490-4e6a-48a8-b8b9-f20b76fbf07b","app_version":"1.5","push_token":"dwMAeCRabUE:APA91bGSk8SqCSycxfltrWCV9KtXGo48-8qvNKfzHn758PW7lLXSi_Wd7y3gqw-lbexsjLwsaXStpELTJUAQVZ3ybNqAUmfw-we-62rTjpNbvBa4oPYTwaPCr3s4M05xNv8jGau-MeA_","sounds":"[]"}}
| Response: {"status_code":200,"status_message":"OK","response":null}
x
[RequestManager] registerDevice response success
```

Push token จะรวมอยู่ในการแจ้งเตือนการลงทะเบียนอุปกรณ์:

```
I/Pushwoosh(12733): [DeviceRegistrar] Registered for pushes: dwMAeCRabUE:APA91bGSk8SqCSycxfltrWCV9KtXGo48-8qvNKfzHn758PW7lLXSi_Wd7y3gqw-lbexsjLwsaXStpELTJUAQVZ3ybNqAUmfw-we-62rTjpNbvBa4oPYTwaPCr3s4M05xNv8jGau-MeA_
03-30 14:45:10.539: D/PushOn(12733): Registered for push notifications
```

### Chrome (เดสก์ท็อป)

1. ไปที่เว็บไซต์ของคุณ

2. คลิกขวาที่ใดก็ได้บนหน้าและกด "Inspect"

<img src="/pushwoosh-knowledge-hub-device-identifiers-10.webp" alt="เครื่องมือสำหรับนักพัฒนาเบราว์เซอร์ Chrome เปิดขึ้นพร้อมตัวเลือกเมนูบริบท Inspect Element ที่มองเห็นได้"/>

3. ในหน้าต่างที่เปิดขึ้น ให้ไปที่แท็บ "Application"

4. จากนั้น ที่แถบด้านข้างซ้าย เลือก IndexedDB -> Pushwoosh\_SDK\_Store -> keyValue ที่นี่ ค้นหาพารามิเตอร์ HWID และ push token

<img src="/pushwoosh-knowledge-hub-device-identifiers-11.webp" alt="แท็บ Application ของเครื่องมือสำหรับนักพัฒนา Chrome แสดง IndexedDB พร้อม Pushwoosh SDK Store และ keyValue ที่มี HWID และ push token"/>

### Chrome (มือถือ)

1. เชื่อมต่ออุปกรณ์มือถือของคุณกับคอมพิวเตอร์

2. ไปที่ chrome://inspect/#devices บน Chrome เดสก์ท็อปของคุณ

3. เปิดเว็บไซต์ของคุณบน Chrome มือถือของคุณ

4. เมื่อเว็บไซต์เปิดบน Chrome มือถือของคุณ คุณจะเห็นหน้าที่สอดคล้องกันภายในหน้า Chrome เดสก์ท็อป โปรดดูภาพหน้าจอด้านล่าง:

<img src="/pushwoosh-knowledge-hub-device-identifiers-12.webp" alt="หน้ารีโมทดีบักของ Chrome แสดงอุปกรณ์มือถือที่เชื่อมต่อพร้อมปุ่ม Inspect ที่ถูกไฮไลต์"/>

5. กดปุ่ม "Inspect" ที่ไฮไลต์ในภาพหน้าจอด้านบน

6. หน้าต่างต่อไปนี้จะปรากฏบน Chrome เดสก์ท็อปของคุณ ที่นั่น ภายในแท็บ "Application" ให้เปิด IndexedDB -> PUSHWOOSH\_SDK\_STORE หลังจากนี้ คลิก keyValue และเปิดส่วน API\_PARAMS:

<img src="/pushwoosh-knowledge-hub-device-identifiers-13.webp" alt="แท็บ Application ของเครื่องมือสำหรับนักพัฒนา Chrome แสดง IndexedDB PUSHWOOSH SDK STORE พร้อมส่วน API_PARAMS ที่มี hwid และ push token"/>

ในส่วน API\_PARAMS คุณจะพบพารามิเตอร์ "hwid" และ "push token" พร้อมค่าของมัน

### Safari

1. ไปที่เว็บไซต์ของคุณ
2. คลิกขวาที่ใดก็ได้บนหน้าและเลือก Inspect Element
3. ไปที่แท็บ Storage -> Indexed Databases -> PUSHWOOSH\_SDK\_STORE -> keyValue
4. ขยาย API\_PARAMS และค้นหาค่า "hwid" และ "push token" ที่นี่

<img src="/pushwoosh-knowledge-hub-device-identifiers-14.webp" alt="แท็บ Storage ของเครื่องมือสำหรับนักพัฒนา Safari แสดง Indexed Databases พร้อม PUSHWOOSH SDK STORE keyValue ที่มี API_PARAMS พร้อม hwid และ push token"/>