หน้านี้มีสคีมาชุดข้อมูลสำหรับข้อมูล Crashlytics ที่ส่งออกและข้อมูลเซสชัน Firebase ใน BigQuery
Firebase จะสร้างชุดข้อมูลใหม่ใน BigQuery สำหรับข้อมูลที่ส่งออก ดังนี้
ชุดข้อมูลเซสชัน Firebase (หากเปิดใช้การส่งออกข้อมูลเซสชัน)
ชุดข้อมูล Crashlytics
ระบบจะส่งออกข้อมูล Crashlytics ไปยังชุดข้อมูล BigQuery ชื่อ
firebase_crashlytics ชุดข้อมูลครอบคลุมทั้งโปรเจ็กต์ แม้ว่าจะมีแอปหลายแอปก็ตาม
ตาราง
โดยค่าเริ่มต้น Firebase จะสร้างตารางแต่ละรายการภายในCrashlytics ชุดข้อมูลสําหรับแต่ละแอปในโปรเจ็กต์ที่ลิงก์กับ BigQuery
ตารางจะมีชื่อตามตัวระบุของแอป (โดยแปลงจุดเป็นขีดล่าง) และต่อท้ายด้วยแพลตฟอร์มของแอป (_IOS หรือ _ANDROID) เช่น ข้อมูลสำหรับแอป Android ที่มีชื่อแพ็กเกจ com.google.test จะอยู่ในตารางชื่อ com_google_test_ANDROID
หากเปิดใช้การส่งออกสตรีมมิงไปยัง BigQuery ระบบจะสตรีมข้อมูลแบบเรียลไทม์ไปยังตารางที่ต่อท้ายด้วย
_REALTIME(เช่นcom_google_test_ANDROID_REALTIME) ด้วยแต่ละแถวในตารางแสดงถึงเหตุการณ์ที่เกิดขึ้นในแอป ซึ่งรวมถึง การขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง และ ANR
ตารางประกอบด้วยชุดข้อมูล Crashlytics มาตรฐานนอกเหนือจากคีย์ Crashlytics ที่กำหนดเองในแอป (iOS+ | Android | Flutter | Unity )
แถว
แต่ละแถวในตารางแสดงข้อผิดพลาดที่แอปพบ
คอลัมน์
คอลัมน์ในตารางจะเหมือนกันสำหรับข้อขัดข้อง ข้อผิดพลาดที่ไม่ร้ายแรง และ ANR
หากเปิดใช้การส่งออกแบบสตรีมไปยัง BigQuery ตารางเรียลไทม์ จะมีคอลัมน์เหมือนกับตารางแบบกลุ่ม
คุณอาจมีคอลัมน์ในแถวที่แสดงถึงเหตุการณ์ที่ไม่มี Stack Trace
ต่อไปนี้คือคอลัมน์ในตารางสำหรับข้อมูล Crashlytics ที่ส่งออก
| ชื่อช่อง | ประเภทข้อมูล | คำอธิบาย |
|---|---|---|
app_orientation |
STRING | เช่น PORTRAIT, LANDSCAPE,
FACE_UP, FACE_DOWN เป็นต้น |
application |
RECORD | แอปที่สร้างเหตุการณ์ |
application.build_version |
STRING | เวอร์ชันบิลด์ของแอป |
application.display_version |
STRING | |
blame_frame |
RECORD | เฟรมที่ระบุว่าเป็นสาเหตุหลักของข้อขัดข้องหรือข้อผิดพลาด |
blame_frame.address |
INT64 | ที่อยู่ในรูปภาพไบนารีที่มีโค้ด ไม่ได้ตั้งค่าสำหรับเฟรม Java |
blame_frame.blamed |
BOOLEAN | ไม่ว่า Crashlytics จะพิจารณาว่าเฟรมนี้เป็นสาเหตุของการขัดข้อง หรือข้อผิดพลาดหรือไม่ |
blame_frame.file |
STRING | ชื่อของไฟล์เฟรม |
blame_frame.library |
STRING | ชื่อที่แสดงของไลบรารีที่มีเฟรม |
blame_frame.line |
INT64 | หมายเลขบรรทัดของไฟล์ของเฟรม |
blame_frame.offset |
INT64 | ออฟเซ็ตไบต์ในรูปภาพไบนารีที่มีโค้ด ไม่ได้ตั้งค่าสำหรับข้อยกเว้น Java |
blame_frame.owner |
STRING | เช่น DEVELOPER, VENDOR,
RUNTIME, PLATFORM หรือ SYSTEM |
blame_frame.symbol |
STRING | สัญลักษณ์ที่ไฮเดรตแล้ว หรือสัญลักษณ์ดิบหากไฮเดรตไม่ได้ |
breadcrumbs |
บันทึกซ้ำ | Google Analyticsเบรดครัมบ์ที่มีการประทับเวลา หากเปิดใช้ |
breadcrumbs.name |
STRING | ชื่อที่เชื่อมโยงกับ Breadcrumb |
breadcrumbs.params |
บันทึกซ้ำ | พารามิเตอร์ที่เชื่อมโยงกับ Breadcrumb |
breadcrumbs.params.key |
STRING | คีย์พารามิเตอร์ที่เชื่อมโยงกับ Breadcrumb |
breadcrumbs.params.value |
STRING | ค่าพารามิเตอร์ที่เชื่อมโยงกับ Breadcrumb |
breadcrumbs.timestamp |
การประทับเวลา | การประทับเวลาที่เชื่อมโยงกับ Breadcrumb |
bundle_identifier |
STRING | ตัวระบุที่ไม่ซ้ำกันสำหรับแอปตามที่ลงทะเบียนไว้ในโปรเจ็กต์ Firebase
(เช่น com.google.gmailสำหรับแอปแพลตฟอร์ม Apple นี่คือรหัสแพ็กเกจของแอป สำหรับแอป Android นี่คือชื่อแพ็กเกจของแอป |
crashlytics_sdk_versions |
STRING | เวอร์ชัน SDK Crashlytics ที่สร้างเหตุการณ์ |
custom_keys |
บันทึกซ้ำ | คู่คีย์-ค่าที่นักพัฒนาแอปกำหนด |
custom_keys.key |
STRING | คีย์ที่นักพัฒนาแอปกำหนด |
custom_keys.value |
STRING | ค่าที่นักพัฒนาแอปกำหนด |
device |
RECORD | อุปกรณ์ที่เกิดเหตุการณ์ |
device_orientation |
STRING | เช่น PORTRAIT, LANDSCAPE,
FACE_UP, FACE_DOWN เป็นต้น |
device.architecture |
STRING | เช่น X86_32, X86_64, ARMV7,
ARM64, ARMV7S หรือ ARMV7K |
device.manufacturer |
STRING | ผู้ผลิตอุปกรณ์ |
device.model |
STRING | รุ่นอุปกรณ์ |
error |
บันทึกซ้ำ | ข้อผิดพลาดที่ไม่ร้ายแรง(แอปของ Apple เท่านั้น) |
error_type |
STRING | ประเภทข้อผิดพลาดของเหตุการณ์ (เช่น FATAL,
NON_FATAL, ANR ฯลฯ) |
error.blamed |
BOOLEAN | ไม่ว่าCrashlyticsจะพิจารณาว่าเฟรมนี้เป็นสาเหตุของ ข้อผิดพลาดหรือไม่ |
error.code |
INT64 | รหัสข้อผิดพลาดที่เชื่อมโยงกับ NSError ที่บันทึกที่กำหนดเองของแอป |
error.frames |
บันทึกซ้ำ | เฟรมของ Stacktrace |
error.frames.address |
INT64 | ที่อยู่ในรูปภาพไบนารีที่มีโค้ด |
error.frames.blamed |
BOOLEAN | ไม่ว่าCrashlyticsจะพิจารณาว่าเฟรมนี้เป็นสาเหตุของ ข้อผิดพลาดหรือไม่ |
error.frames.file |
STRING | ชื่อของไฟล์เฟรม |
error.frames.library |
STRING | ชื่อที่แสดงของไลบรารีที่มีเฟรม |
error.frames.line |
INT64 | หมายเลขบรรทัดของไฟล์ของเฟรม |
error.frames.offset |
INT64 | ออฟเซ็ตไบต์ในรูปภาพไบนารีที่มีโค้ด |
error.frames.owner |
STRING | เช่น DEVELOPER, VENDOR,
RUNTIME, PLATFORM หรือ SYSTEM |
error.frames.symbol |
STRING | สัญลักษณ์ที่ไฮเดรตแล้ว หรือสัญลักษณ์ดิบหากไฮเดรตไม่ได้ |
error.queue_name |
STRING | คิวที่ชุดข้อความทำงานอยู่ |
error.subtitle |
STRING | คำบรรยายของเธรด |
error.title |
STRING | ชื่อของชุดข้อความ |
event_id |
STRING | รหัสที่ไม่ซ้ำกันสำหรับเหตุการณ์ |
event_timestamp |
การประทับเวลา | เมื่อเกิดเหตุการณ์ |
exceptions |
บันทึกซ้ำ | (Android เท่านั้น) ข้อยกเว้นที่เกิดขึ้นระหว่างเหตุการณ์นี้ ระบบจะแสดงข้อยกเว้นที่ซ้อนกันตามลำดับเวลาแบบย้อนกลับ ซึ่งหมายความว่า บันทึกล่าสุดคือข้อยกเว้นแรกที่เกิดขึ้น |
exceptions.blamed |
BOOLEAN | เป็นจริงหาก Crashlytics ระบุว่าข้อยกเว้นเป็นสาเหตุของข้อผิดพลาดหรือข้อขัดข้อง |
exceptions.exception_message |
STRING | ข้อความที่เชื่อมโยงกับข้อยกเว้น |
exceptions.frames |
บันทึกซ้ำ | เฟรมที่เชื่อมโยงกับข้อยกเว้น |
exceptions.frames.address |
INT64 | ที่อยู่ในรูปภาพไบนารีที่มีโค้ด ไม่ได้ตั้งค่าสำหรับเฟรม Java |
exceptions.frames.blamed |
BOOLEAN | ไม่ว่า Crashlytics จะพิจารณาว่าเฟรมนี้เป็นสาเหตุของการขัดข้อง หรือข้อผิดพลาดหรือไม่ |
exceptions.frames.file |
STRING | ชื่อของไฟล์เฟรม |
exceptions.frames.library |
STRING | ชื่อที่แสดงของไลบรารีที่มีเฟรม |
exceptions.frames.line |
INT64 | หมายเลขบรรทัดของไฟล์ของเฟรม |
exceptions.frames.offset |
INT64 | ออฟเซ็ตไบต์ในรูปภาพไบนารีที่มีโค้ด ไม่ได้ตั้งค่าสำหรับข้อยกเว้น Java |
exceptions.frames.owner |
STRING | เช่น DEVELOPER, VENDOR,
RUNTIME, PLATFORM หรือ SYSTEM |
exceptions.frames.symbol |
STRING | สัญลักษณ์ที่ไฮเดรตแล้ว หรือสัญลักษณ์ดิบหากไฮเดรตไม่ได้ |
exceptions.nested |
BOOLEAN | เป็นจริงสำหรับข้อยกเว้นทั้งหมด ยกเว้นข้อยกเว้นที่ส่งล่าสุด (หมายถึงระเบียนแรก) |
exceptions.subtitle |
STRING | คำบรรยายของเธรด |
exceptions.title |
STRING | ชื่อของชุดข้อความ |
exceptions.type |
STRING | ประเภทข้อยกเว้น
(เช่น java.lang.IllegalStateException) |
firebase_session_id |
STRING | รหัสที่สร้างขึ้นโดยอัตโนมัติสําหรับเซสชัน Firebase ที่แมปกับเหตุการณ์ จาก Crashlytics |
installation_uuid |
STRING | รหัสที่ระบุการติดตั้งแอปและอุปกรณ์ที่ไม่ซ้ำกัน |
is_fatal |
BOOLEAN | แอปขัดข้องหรือไม่ |
issue_id |
STRING | ปัญหาที่เชื่อมโยงกับเหตุการณ์ |
logs |
บันทึกซ้ำ | ข้อความบันทึกที่มีการประทับเวลาซึ่งสร้างโดย Crashlytics logger หากเปิดใช้ |
logs.message |
STRING | ข้อความที่บันทึก |
logs.timestamp |
การประทับเวลา | เวลาที่สร้างบันทึก |
memory |
RECORD | สถานะหน่วยความจำของอุปกรณ์ |
memory.free |
INT64 | เหลือหน่วยความจำอีกกี่ไบต์ |
memory.used |
INT64 | ไบต์ของหน่วยความจำที่ใช้ |
operating_system |
RECORD | รายละเอียดของระบบปฏิบัติการในอุปกรณ์ |
operating_system.device_type |
STRING | ประเภทอุปกรณ์ (เช่น MOBILE, TABLET,
TV ฯลฯ) หรือที่เรียกว่า "หมวดหมู่อุปกรณ์" |
operating_system.display_version |
STRING | เวอร์ชันของระบบปฏิบัติการในอุปกรณ์ |
operating_system.modification_state |
STRING | อุปกรณ์ได้รับการแก้ไขหรือไม่
(เช่น แอปที่เจลเบรกแล้วคือ MODIFIED และแอปที่รูทแล้วคือ
UNMODIFIED) |
operating_system.name |
STRING | ชื่อของระบบปฏิบัติการในอุปกรณ์ |
operating_system.type |
STRING | (แอป Apple เท่านั้น) ประเภทของระบบปฏิบัติการที่ทำงานบนอุปกรณ์ (เช่น
IOS, MACOS ฯลฯ) |
platform |
STRING | แพลตฟอร์มของแอปตามที่ลงทะเบียนในโปรเจ็กต์ Firebase
(ค่าที่ใช้ได้: IOS หรือ ANDROID)
|
process_state |
STRING | BACKGROUND หรือ FOREGROUND |
storage |
RECORD | พื้นที่เก็บข้อมูลถาวรของอุปกรณ์ |
storage.free |
INT64 | ไบต์ของพื้นที่เก็บข้อมูลที่เหลือ |
storage.used |
INT64 | ไบต์ของพื้นที่เก็บข้อมูลที่ใช้ |
threads |
บันทึกซ้ำ | ชุดข้อความที่แสดงในขณะที่เกิดเหตุการณ์ |
threads.blamed |
BOOLEAN | ไม่ว่า Crashlytics จะพิจารณาว่าเฟรมนี้เป็นสาเหตุของการขัดข้อง หรือข้อผิดพลาดหรือไม่ |
threads.code |
INT64 | (แอปของ Apple เท่านั้น) รหัสข้อผิดพลาดของ NSError ที่บันทึกไว้ที่กำหนดเองของแอปพลิเคชัน |
threads.crash_address |
INT64 | ที่อยู่ของสัญญาณที่ทำให้แอปพลิเคชันขัดข้อง จะมีอยู่เฉพาะในเธรดเนทีฟที่ขัดข้องเท่านั้น |
threads.crashed |
BOOLEAN | ชุดข้อความขัดข้องหรือไม่ |
threads.frames |
บันทึกซ้ำ | เฟรมของเธรด |
threads.frames.address |
INT64 | ที่อยู่ในรูปภาพไบนารีที่มีโค้ด |
threads.frames.blamed |
BOOLEAN | ไม่ว่าCrashlyticsจะพิจารณาว่าเฟรมนี้เป็นสาเหตุของ ข้อผิดพลาดหรือไม่ |
threads.frames.file |
STRING | ชื่อของไฟล์เฟรม |
threads.frames.library |
STRING | ชื่อที่แสดงของไลบรารีที่มีเฟรม |
threads.frames.line |
INT64 | หมายเลขบรรทัดของไฟล์ของเฟรม |
threads.frames.offset |
INT64 | ออฟเซ็ตไบต์ในรูปภาพไบนารีที่มีโค้ด |
threads.frames.owner |
STRING | เช่น DEVELOPER, VENDOR,
RUNTIME, PLATFORM หรือ SYSTEM |
threads.frames.symbol |
STRING | สัญลักษณ์ที่ไฮเดรตแล้ว หรือสัญลักษณ์ดิบหากไฮเดรตไม่ได้ |
threads.queue_name |
STRING | (แอปของ Apple เท่านั้น) คิวที่เธรดทำงานอยู่ |
threads.signal_code |
STRING | โค้ดของสัญญาณที่ทำให้แอปขัดข้อง โดยจะแสดงเฉพาะในเธรดดั้งเดิมที่ขัดข้อง |
threads.signal_name |
STRING | ชื่อของสัญญาณที่ทำให้แอปขัดข้อง ซึ่งจะแสดงเฉพาะในเธรดดั้งเดิมที่ขัดข้องเท่านั้น |
threads.subtitle |
STRING | คำบรรยายของเธรด |
threads.thread_name |
STRING | ชื่อเธรด |
threads.title |
STRING | ชื่อของชุดข้อความ |
unity_metadata.debug_build |
BOOLEAN | หากเป็นบิลด์การแก้ไขข้อบกพร่อง |
unity_metadata.graphics_copy_texture_support |
STRING | รองรับการคัดลอกพื้นผิวกราฟิกตามที่กำหนดไว้ใน Unity API |
unity_metadata.graphics_device_id |
INT64 | ตัวระบุของอุปกรณ์กราฟิก |
unity_metadata.graphics_device_name |
STRING | ชื่อของอุปกรณ์กราฟิก |
unity_metadata.graphics_device_type |
STRING | ประเภทของอุปกรณ์กราฟิก |
unity_metadata.graphics_device_vendor_id |
INT64 | ตัวระบุของผู้ให้บริการโปรเซสเซอร์กราฟิก |
unity_metadata.graphics_device_vendor |
STRING | ผู้จำหน่ายอุปกรณ์กราฟิก |
unity_metadata.graphics_device_version |
STRING | เวอร์ชันของอุปกรณ์กราฟิก |
unity_metadata.graphics_max_texture_size |
INT64 | ขนาดสูงสุดที่ใช้ในการแสดงผลเท็กซ์เจอร์ |
unity_metadata.graphics_memory_size_mb |
INT64 | หน่วยความจำกราฟิกในหน่วย MB |
unity_metadata.graphics_render_target_count |
INT64 | จำนวนเป้าหมายการแสดงผลกราฟิก |
unity_metadata.graphics_shader_level |
INT64 | ระดับ Shader ของกราฟิก |
unity_metadata.processor_count |
INT64 | จำนวนโปรเซสเซอร์ (คอร์) |
unity_metadata.processor_frequency_mhz |
INT64 | ความถี่ของโปรเซสเซอร์ในหน่วย MHz |
unity_metadata.processor_type |
STRING | ประเภทโปรเซสเซอร์ |
unity_metadata.screen_refresh_rate_hz |
INT64 | อัตราการรีเฟรชของหน้าจอในหน่วย Hz |
unity_metadata.screen_resolution_dpi |
STRING | DPI ของหน้าจอเป็นเลขทศนิยม |
unity_metadata.screen_size_px |
STRING | ขนาดหน้าจอเป็นพิกเซลในรูปแบบกว้าง x สูง |
unity_metadata.system_memory_size_mb |
INT64 | ขนาดหน่วยความจำของระบบในหน่วย Mb |
unity_metadata.unity_version |
STRING | เวอร์ชันของ Unity ที่ทำงานในอุปกรณ์นี้ |
user |
RECORD | (ไม่บังคับ) ข้อมูลที่รวบรวมเกี่ยวกับผู้ใช้แอป |
user.email |
STRING | (ไม่บังคับ) อีเมลของผู้ใช้ |
user.id |
STRING | (ไม่บังคับ) รหัสเฉพาะแอปที่เชื่อมโยงกับผู้ใช้ |
user.name |
STRING | (ไม่บังคับ) ชื่อของผู้ใช้ |
variant_id |
STRING | รูปแบบปัญหาที่เชื่อมโยงกับเหตุการณ์นี้ โปรดทราบว่าเหตุการณ์บางอย่างอาจไม่มีรูปแบบปัญหาที่เชื่อมโยง |
ชุดข้อมูลเซสชัน Firebase
ระบบจะส่งออกข้อมูลเซสชัน Firebase ไปยังBigQuery ชุดข้อมูลชื่อ
firebase_sessions ชุดข้อมูลครอบคลุมทั้งโปรเจ็กต์ แม้ว่าจะมีแอปหลายแอปก็ตาม
ตาราง
โดยค่าเริ่มต้น Firebase จะสร้างตารางแต่ละรายการภายในชุดข้อมูลเซสชัน Firebase สำหรับแต่ละแอปในโปรเจ็กต์ที่ลิงก์กับ BigQuery
ตารางจะมีชื่อตามตัวระบุของแอป (โดยแปลงจุดเป็นขีดล่าง) และต่อท้ายด้วยแพลตฟอร์มของแอป (_IOS หรือ _ANDROID)
เช่น ข้อมูลสำหรับแอป Android ที่มีชื่อแพ็กเกจ com.google.test
จะอยู่ในตารางชื่อ com_google_test_ANDROID
แถว
แต่ละแถวในตารางแสดงถึงเหตุการณ์เซสชันที่เกิดขึ้น
คอลัมน์
หากเปิดใช้การส่งออกแบบสตรีมไปยัง BigQuery ตารางเรียลไทม์ จะมีคอลัมน์เหมือนกับตารางแบบกลุ่ม
คอลัมน์ภายในตารางสำหรับข้อมูลเซสชัน Firebase ที่ส่งออกมีดังนี้
| ชื่อช่อง | ประเภทข้อมูล | คำอธิบาย |
|---|---|---|
instance_id |
STRING | รหัสการติดตั้ง Firebase (FID) จากอุปกรณ์ ระบุการติดตั้ง แอป + อุปกรณ์ที่ไม่ซ้ำกัน |
session_id |
STRING | รหัสที่ไม่ซ้ำกันของเซสชันนี้ |
first_session_id |
STRING |
รหัสแรกของชุดเซสชันที่เซสชันนี้อยู่ตั้งแต่แอป
เริ่มทำงานแบบ Cold Start ซึ่งใช้เพื่อจัดกลุ่มเซสชันทั้งหมดที่เกิดขึ้นตั้งแต่เริ่มระบบแบบเย็นได้ หากเซสชันนี้เป็นเซสชันแรก
ฟิลด์นี้จะมีค่าเหมือนกับ session_id
|
session_index |
INTEGER |
ลำดับที่เซสชันนี้เข้ามาหลังจากที่แอปเริ่มทำงานแบบ Cold Start สำหรับ
เซสชันแรกหลังจากการเริ่มระบบแบบเย็น ค่านี้จะเป็น 0 ระบบจะเพิ่มดัชนี
ทุกครั้งที่สร้างเซสชันโดยไม่มีการเริ่มต้นแบบเย็น
เกิดขึ้น (เช่น หลังจากไม่มีการใช้งานเป็นเวลา 30 นาที)
|
event_type |
STRING |
ประเภทของเหตุการณ์ที่เกิดขึ้นในเซสชัน (เช่น
SESSION_START)
|
event_timestamp |
การประทับเวลา | เวลาที่เกิดเหตุการณ์ |
received_timestamp |
การประทับเวลา | เวลาที่เซิร์ฟเวอร์ได้รับเหตุการณ์จากอุปกรณ์ |
performance_data_collection_enabled |
BOOLEAN | ไม่ว่าจะเปิดใช้การเก็บรวบรวมข้อมูล SDK ของ Firebase Performance Monitoring หรือไม่ ในขณะที่เซสชันเกิดขึ้น |
crashlytics_data_collection_enabled |
BOOLEAN | เปิดใช้การเก็บรวบรวมข้อมูล Firebase Crashlytics SDK ในขณะที่เซสชัน กำลังทำงานอยู่หรือไม่ |
application |
RECORD | อธิบายแอปพลิเคชัน |
application.build_version |
STRING |
เวอร์ชันบิลด์ของแอปพลิเคชัน (เช่น
1523456)
|
application.display_version |
STRING |
เวอร์ชันที่แสดงของแอปพลิเคชัน (เช่น
4.1.7)
|
device |
RECORD | อุปกรณ์ที่เกิดเหตุการณ์ |
device.model |
STRING | รุ่นของอุปกรณ์ |
device.manufacturer |
STRING |
ผู้ผลิตอุปกรณ์ สำหรับแอปแพลตฟอร์ม Apple รหัสนี้จะเป็น
NULL
|
operating_system |
RECORD | อธิบายระบบปฏิบัติการของอุปกรณ์ |
operating_system.display_version |
STRING |
เวอร์ชันที่แสดงของระบบปฏิบัติการ (เช่น
10.2.1)
|
operating_system.name |
STRING | ชื่อของระบบปฏิบัติการ |
operating_system.type |
STRING |
ประเภทของระบบปฏิบัติการ (เช่น IOS)
ฟิลด์นี้จะตั้งค่าสำหรับอุปกรณ์ Apple เท่านั้น
|
operating_system.device_type |
STRING |
ประเภทอุปกรณ์ (เช่น MOBILE, TABLET, TV)
|