แนวทางปฏิบัติที่ดีที่สุดสำหรับตัวระบุที่ไม่ซ้ำกัน

เอกสารนี้จะให้คำแนะนำในการเลือกตัวระบุที่เหมาะสมกับ แอปตามกรณีการใช้งานของคุณ

หากต้องการดูภาพรวมของสิทธิ์ของ Android โปรดดูที่สิทธิ์ ภาพรวม เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด แนวทางปฏิบัติเกี่ยวกับการใช้งานสิทธิ์ของ Android โปรดดูที่ดีที่สุดเกี่ยวกับสิทธิ์ของแอป แนวทางปฏิบัติที่ดี

แนวทางปฏิบัติแนะนำในการใช้ตัวระบุ Android

ใช้ตัวระบุที่จำกัดมากที่สุดซึ่งตรงกับ Use Case ของแอปเพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ โดยเฉพาะอย่างยิ่ง ให้ทำตามแนวทางปฏิบัติแนะนำต่อไปนี้

  1. เลือกตัวระบุที่ผู้ใช้รีเซ็ตได้หากเป็นไปได้ แอปของคุณจะทํา Use Case ส่วนใหญ่ได้แม้ว่าจะใช้ตัวระบุอื่นที่ไม่ใช่รหัสฮาร์ดแวร์ที่รีเซ็ตไม่ได้ก็ตาม
  2. หลีกเลี่ยงการใช้ตัวระบุฮาร์ดแวร์ ใน Use Case ส่วนใหญ่ คุณหลีกเลี่ยงการใช้ตัวระบุฮาร์ดแวร์ เช่น หมายเลขระบุฮาร์ดแวร์ International Mobile Equipment Identity (IMEI) ได้โดยไม่จำกัดฟังก์ชันการทำงานที่จำเป็น

    Android 10 (API ระดับ 29) เพิ่มข้อจำกัดสำหรับตัวระบุที่รีเซ็ตไม่ได้ ซึ่งจะมีทั้ง IMEI และหมายเลขซีเรียล แอปของคุณต้องเป็นแอปเจ้าของอุปกรณ์หรือโปรไฟล์ที่มีสิทธิ์พิเศษของผู้ให้บริการ หรือมีสิทธิ์ที่มีสิทธิ์ READ_PRIVILEGED_PHONE_STATE จึงจะเข้าถึงตัวระบุเหล่านี้ได้

  3. ใช้รหัสโฆษณาสําหรับการสร้างโปรไฟล์ผู้ใช้หรือกรณีการใช้งานโฆษณาเท่านั้น เมื่อใช้รหัสโฆษณา โปรดเคารพตัวเลือกของผู้ใช้เกี่ยวกับการติดตามโฆษณาเสมอ หากจำเป็นต้องเชื่อมต่อตัวระบุโฆษณากับข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ ให้ทําก็ต่อเมื่อได้รับความความยินยอมอย่างชัดแจ้งจากผู้ใช้เท่านั้น

  4. อย่าบริดจ์การรีเซ็ตรหัสโฆษณา

  5. ใช้รหัสการติดตั้ง Firebase (FID) หรือ GUID ที่จัดเก็บแบบส่วนตัวเมื่อใดก็ตามที่ ยกเว้นกรณีป้องกันการประพฤติมิชอบในการชำระเงิน โทรศัพท์ สำหรับ Use Case ที่ไม่ใช่โฆษณาส่วนใหญ่ FID หรือ GUID ก็เพียงพอแล้ว

  6. ใช้ API ที่เหมาะกับกรณีการใช้งานของคุณเพื่อลดความเป็นส่วนตัว ความเสี่ยง ใช้ DRM API สำหรับ การปกป้องเนื้อหาที่มีคุณค่าสูงและ Play Integrity API สำหรับการป้องกันการละเมิด Play Integrity API เป็นวิธีที่ง่ายที่สุดในการพิจารณาว่าอุปกรณ์เป็นของจริงหรือไม่โดยไม่ก่อให้เกิดความเสี่ยงด้านความเป็นส่วนตัว

ส่วนที่เหลือของคู่มือนี้จะอธิบายกฎเหล่านี้ในบริบทของการพัฒนาแอป Android

การทำงานกับรหัสโฆษณา

รหัสโฆษณาคือตัวระบุที่ผู้ใช้รีเซ็ตได้และเหมาะสำหรับโฆษณา กรณีการใช้งาน อย่างไรก็ตาม โปรดคํานึงถึงประเด็นสำคัญบางประการเมื่อคุณใช้ รหัส:

โปรดเคารพความตั้งใจของผู้ใช้ในการรีเซ็ตรหัสโฆษณาเสมอ ไม่บริดจ์การรีเซ็ตผู้ใช้โดยใช้ตัวระบุหรือลายนิ้วมืออื่นเพื่อลิงก์ รหัสโฆษณาต่อๆ มาโดยไม่มี ความยินยอมของผู้ใช้ นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play ระบุไว้ดังนี้

"...หากรีเซ็ต ตัวระบุโฆษณาใหม่ต้องไม่เชื่อมโยงกับ ตัวระบุโฆษณาก่อนหน้าหรือข้อมูลที่ได้มาจากการโฆษณาก่อนหน้า โดยไม่ได้รับความยินยอมอย่างชัดแจ้งจากผู้ใช้"

เคารพการแจ้งว่าไม่เหมาะสมที่เกี่ยวข้องกับโฆษณาที่ปรับตามโปรไฟล์ของผู้ใช้เสมอ รหัสโฆษณาจะกำหนดค่าได้ โดยผู้ใช้สามารถจํากัดจํานวนการติดตามที่เชื่อมโยงกับรหัส ใช้วิธีการ AdvertisingIdClient.Info.isLimitAdTrackingEnabled() เสมอเพื่อให้มั่นใจว่าคุณไม่ได้ละเมิดความต้องการของผู้ใช้ นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play ระบุไว้ดังนี้

"...คุณต้องปฏิบัติตามการตั้งค่า "เลือกไม่ใช้การโฆษณาตามความสนใจ" หรือ "เลือกไม่ใช้การปรับโฆษณาตามโปรไฟล์ของผู้ใช้" ของผู้ใช้ หากผู้ใช้เปิดใช้การตั้งค่านี้ คุณจะไม่สามารถใช้ตัวระบุโฆษณาสำหรับการสร้างโปรไฟล์ผู้ใช้โดยมีจุดประสงค์เพื่อโฆษณา หรือเพื่อกำหนดเป้าหมายผู้ใช้ด้วยโฆษณาที่ปรับตามโปรไฟล์ของผู้ใช้ กิจกรรมที่อนุญาตประกอบด้วยการโฆษณาตามบริบท, การกำหนดความถี่สูงสุด, เครื่องมือวัด Conversion, การรายงาน และการตรวจหาเกี่ยวกับความปลอดภัยและการฉ้อโกง"

โปรดคำนึงถึงนโยบายความเป็นส่วนตัวหรือนโยบายความปลอดภัยที่เกี่ยวข้องกับ SDK ที่คุณใช้ซึ่งเกี่ยวข้องกับการใช้รหัสโฆษณา ตัวอย่างเช่น หากคุณส่ง true ไปยัง enableAdvertisingIdCollection() จาก Google Analytics SDK อย่าลืมอ่านและปฏิบัติตาม Analytics SDK ที่เกี่ยวข้อง นโยบาย

นอกจากนี้ โปรดทราบว่านโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play กําหนดว่าตัวระบุโฆษณา "ต้องไม่เชื่อมโยงกับข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ หรือเชื่อมโยงกับตัวระบุอุปกรณ์ถาวร (เช่น SSAID, ที่อยู่ MAC, IMEI เป็นต้น)"

ตัวอย่างเช่น สมมติว่าคุณต้องการรวบรวมข้อมูลเพื่อป้อนข้อมูลในตารางฐานข้อมูลที่มีคอลัมน์ต่อไปนี้

TABLE-01
timestamp ad_id account_id clickid
TABLE-02
account_id name dob country

ในตัวอย่างนี้ คอลัมน์ ad_id เชื่อมโยงกับ PII ผ่านทาง account_id ได้ ในทั้ง 2 ตาราง ซึ่งถือเป็นการละเมิดนักพัฒนาซอฟต์แวร์ของ Google Play นโยบายเนื้อหาหากคุณ ไม่ได้รับสิทธิ์อย่างชัดแจ้งจากผู้ใช้

โปรดทราบว่าลิงก์ระหว่างรหัสผู้ลงโฆษณากับ PII อาจไม่เป็นเช่นนี้เสมอไป อาจไม่เหมาะสม อาจมี "ตัวระบุแบบใกล้เคียง" ที่ปรากฏทั้งใน PII และตารางที่มีการคีย์รหัสโฆษณา ซึ่งก็อาจทำให้เกิดปัญหาเช่นกัน ตัวอย่างเช่น สมมติว่าเราเปลี่ยน TABLE-01 และ TABLE-02 ดังนี้

ตาราง 01
timestamp ad_id clickid dev_model
TABLE-02
timestamp demo account_id dev_model name

ในกรณีนี้ เมื่อเหตุการณ์คลิกเกิดขึ้นน้อยมาก คุณยังคงเข้าร่วมระหว่างรหัสผู้ลงโฆษณา TABLE-01 กับ PII ที่มีอยู่ใน TABLE-02 ได้โดยใช้การประทับเวลาของเหตุการณ์และรุ่นอุปกรณ์

แม้ว่ามักจะรับประกันได้ยากว่าไม่มี quasi-identifier จริง ในชุดข้อมูล คุณจะป้องกันความเสี่ยงของการผนวกข้อมูลที่ชัดเจนที่สุดได้โดยการสรุป ข้อมูลที่ไม่ซ้ำกัน หากเป็นไปได้ ในตัวอย่างก่อนหน้านี้ จะหมายถึงการลด ความถูกต้องของการประทับเวลาเพื่อให้อุปกรณ์หลายเครื่องที่ใช้รุ่นเดียวกัน ปรากฏขึ้นในทุกการประทับเวลา

โซลูชันอื่นๆ มีดังนี้

  • ไม่ได้ออกแบบตารางที่ลิงก์ PII กับรหัสโฆษณาอย่างชัดแจ้ง ใน ตัวอย่างแรกข้างต้นหมายความว่าไม่มีคอลัมน์ account_id ใน TABLE-01

  • การแยกและตรวจสอบรายการควบคุมการเข้าถึงสําหรับผู้ใช้หรือบทบาทที่มีสิทธิ์เข้าถึงทั้งข้อมูลคีย์รหัสโฆษณาและ PII การควบคุมและการตรวจสอบความสามารถในการเข้าถึงทั้ง 2 แหล่งที่มาพร้อมกันอย่างเข้มงวด (เช่น โดยการรวมระหว่างตาราง) จะช่วยลดความความเสี่ยงในการเชื่อมโยงรหัสโฆษณากับ PII พูดง่ายๆ คือ การควบคุมการเข้าถึงหมายถึงการดำเนินการต่อไปนี้

    1. เก็บรายการควบคุมการเข้าถึง (ACL) สำหรับข้อมูลคีย์และ PII ของรหัสผู้ลงโฆษณาไว้ ไม่ต่อเนื่องเพื่อลดจำนวนบุคคลหรือบทบาทที่อยู่ทั้งใน ACL
    2. ใช้การบันทึกการเข้าถึงและการตรวจสอบเพื่อตรวจหาและจัดการข้อยกเว้น ลงในกฎนี้

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการทำงานอย่างมีความรับผิดชอบกับรหัสโฆษณา โปรดดูที่ AdvertisingIdClient เอกสารอ้างอิง API

ทำงานกับ FID และ GUID

โซลูชันที่ตรงที่สุดในการระบุอินสแตนซ์แอปที่ทํางานบนอุปกรณ์คือการใช้รหัสการติดตั้ง Firebase (FID) ซึ่งเป็นโซลูชันที่แนะนําใน Use Case ส่วนใหญ่ที่ไม่ใช่โฆษณา เฉพาะอินสแตนซ์แอปที่มีการจัดสรรเท่านั้นที่เข้าถึงตัวระบุนี้ได้ และสามารถรีเซ็ตได้ (ค่อนข้าง) ง่ายเนื่องจากตัวระบุจะยังคงอยู่ตราบใดที่แอปยังติดตั้งอยู่

ด้วยเหตุนี้ FID จึงให้ทรัพย์สินด้านความเป็นส่วนตัวที่ดีกว่า รหัสฮาร์ดแวร์ระดับอุปกรณ์ซึ่งรีเซ็ตไม่ได้ ดูข้อมูลเพิ่มเติมได้ที่การอ้างอิง API ของ firebase.installations

ในกรณีที่ FID ใช้งานไม่ได้จริง คุณสามารถใช้วิธีที่กำหนดเอง รหัสที่ไม่ซ้ำกันทั่วโลก (GUID) เพื่อระบุอินสแตนซ์ของแอปโดยไม่ซ้ำกัน วิธีง่ายที่สุดในการทำเช่นนี้คือการสร้าง GUID ของคุณเองโดยใช้โค้ดต่อไปนี้

Kotlin

var uniqueID = UUID.randomUUID().toString()

Java

String uniqueID = UUID.randomUUID().toString();

เนื่องจากตัวระบุเป็นข้อมูลที่ไม่ซ้ำกันทั่วโลก จึงสามารถใช้เพื่อระบุ อินสแตนซ์ของแอป หากต้องการหลีกเลี่ยงข้อกังวลเกี่ยวกับการลิงก์ตัวระบุในแอปต่างๆ จัดเก็บ GUID ไว้ในที่จัดเก็บข้อมูลภายในแทนที่จัดเก็บข้อมูลภายนอก (ที่แชร์) สำหรับข้อมูลเพิ่มเติม โปรดดูส่วนข้อมูลและพื้นที่เก็บข้อมูลไฟล์ ภาพรวม

ใช้งานที่อยู่ MAC ไม่ได้

ที่อยู่ MAC เป็นข้อมูลที่ไม่ซ้ำกันทั่วโลก ผู้ใช้รีเซ็ตไม่ได้ และอยู่รอดจากโรงงาน รีเซ็ต ด้วยเหตุนี้ เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้บน Android เวอร์ชัน 6 และ สูงกว่า การเข้าถึงที่อยู่ MAC จะถูกจำกัดไว้เฉพาะแอประบบเท่านั้น แอปของบุคคลที่สามจะเข้าถึงข้อมูลดังกล่าวไม่ได้

การเปลี่ยนแปลงความพร้อมใช้งานที่อยู่ MAC ใน Android 11

ในแอปที่กำหนดเป้าหมายเป็น Android 11 ขึ้นไป การสุ่ม MAC สำหรับ Passpoint เป็นเครือข่ายต่อโปรไฟล์ Passpoint ซึ่งจะสร้างที่อยู่ MAC ที่ไม่ซ้ำกันตาม ฟิลด์ต่อไปนี้:

  • ชื่อโดเมนที่สมบูรณ์ในตัวเอง (FQDN)
  • ขอบเขต
  • ข้อมูลเข้าสู่ระบบซึ่งอิงตามข้อมูลเข้าสู่ระบบที่ใช้ในโปรไฟล์ Passpoint:
    • ข้อมูลเข้าสู่ระบบผู้ใช้: ชื่อผู้ใช้
    • ข้อมูลเข้าสู่ระบบของใบรับรอง: cert และประเภทใบรับรอง
    • ข้อมูลเข้าสู่ระบบซิม: ประเภท EAP และ IMSI

นอกจากนี้ แอปที่ไม่มีสิทธิ์จะเข้าถึงที่อยู่ MAC ของอุปกรณ์ไม่ได้ โดยจะเห็นเฉพาะอินเทอร์เฟซเครือข่ายที่มีที่อยู่ IP เท่านั้น ซึ่งจะส่งผลต่อวิธีgetifaddrs() และNetworkInterface.getHardwareAddress() รวมถึงการส่งข้อความ RTM_GETLINK Netlink

ต่อไปนี้คือรายการวิธีที่แอปได้รับผลกระทบจากการเปลี่ยนแปลงนี้

  • NetworkInterface.getHardwareAddress() จะแสดงผลเป็น Null สําหรับอินเทอร์เฟซทุกรายการ
  • แอปใช้ฟังก์ชัน bind() กับซ็อกเก็ต NETLINK_ROUTE ไม่ได้
  • คำสั่ง ip ไม่แสดงข้อมูลเกี่ยวกับอินเทอร์เฟซ
  • แอปไม่สามารถส่งข้อความ RTM_GETLINK

โปรดทราบว่านักพัฒนาซอฟต์แวร์ส่วนใหญ่ควรใช้ API ระดับที่สูงขึ้นของ ConnectivityManager แทน API ระดับที่ต่ำกว่า เช่น NetworkInterface, getifaddrs() หรือซ็อกเก็ต Netlink เช่น แอปที่ต้องการข้อมูลล่าสุดใน เส้นทางปัจจุบันสามารถรับข้อมูลนี้ได้โดยการฟังการเปลี่ยนแปลงเครือข่ายโดยใช้ ConnectivityManager.registerNetworkCallback() และโทรหาเครือข่ายที่เกี่ยวข้อง LinkProperties.getRoutes()

ลักษณะของตัวระบุ

ระบบปฏิบัติการ Android มีรหัสจำนวนหนึ่งที่มีลักษณะลักษณะการทำงานแตกต่างกัน รหัสที่คุณควรใช้จะขึ้นอยู่กับวิธีการทำงานของลักษณะเฉพาะต่อไปนี้ Use Case ของคุณ อย่างไรก็ตาม ลักษณะเหล่านี้ก็อาจมีผลต่อความเป็นส่วนตัวด้วย คุณจึงควรทำความเข้าใจว่าลักษณะเหล่านี้ส่งผลต่อกันและกันอย่างไร

ขอบเขต

ขอบเขตตัวระบุจะอธิบายว่าระบบใดเข้าถึงตัวระบุนั้นได้ Android โดยทั่วไปแล้วขอบเขตตัวระบุจะมี 3 ประเภท ได้แก่

  • แอปเดียว: รหัสมีไว้สำหรับใช้ภายในแอปและแอปอื่นๆ เข้าถึงไม่ได้
  • กลุ่มแอป: แอปที่เกี่ยวข้องซึ่งกำหนดไว้ล่วงหน้าสามารถเข้าถึงรหัสได้
  • อุปกรณ์: แอปทั้งหมดที่ติดตั้งในอุปกรณ์จะเข้าถึงรหัสได้

ยิ่งขอบเขตที่อนุญาตสําหรับตัวระบุกว้างขึ้น ความเสี่ยงที่ตัวระบุดังกล่าวจะถูกนําไปใช้เพื่อวัตถุประสงค์ในการติดตามก็จะยิ่งมากขึ้น ในทางกลับกัน หากอินสแตนซ์แอปเดียวเท่านั้นที่เข้าถึงตัวระบุได้ ก็จะใช้ตัวระบุดังกล่าวเพื่อติดตามอุปกรณ์ในธุรกรรมต่างๆ ในแอปต่างๆ ไม่ได้

การรีเซ็ตและความต่อเนื่อง

ความสามารถในการรีเซ็ตและการคงอยู่จะกำหนดอายุการใช้งานของตัวระบุและอธิบายวิธีรีเซ็ต ทริกเกอร์การรีเซ็ตทั่วไป ได้แก่ การรีเซ็ตในแอป การรีเซ็ตผ่าน การตั้งค่าระบบ รีเซ็ตเมื่อเปิดใช้งาน และรีเซ็ตในการติดตั้ง แอนดรอยด์ ตัวระบุอาจมีอายุการใช้งานแตกต่างกัน แต่อายุขัยมักจะเกี่ยวข้องกัน กับวิธีรีเซ็ตรหัส ดังนี้

  • เซสชันเท่านั้น: ระบบจะใช้รหัสใหม่ทุกครั้งที่ผู้ใช้เปิดแอปอีกครั้ง
  • ติดตั้ง-รีเซ็ต: ระบบจะใช้รหัสใหม่ทุกครั้งที่ผู้ใช้ถอนการติดตั้งแล้วติดตั้งแอปอีกครั้ง
  • รีเซ็ต FDR: ระบบจะใช้รหัสใหม่ทุกครั้งที่ผู้ใช้รีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น
  • FDR-persistent: รหัสยังคงอยู่หลังจากรีเซ็ตเป็นค่าเริ่มต้น

การรีเซ็ตช่วยให้ผู้ใช้สร้างรหัสใหม่ที่ไม่ได้เชื่อมโยงได้ จากข้อมูลโปรไฟล์ที่มีอยู่ ยิ่งลิงก์นานและมีความเสถียร จะยังคงอยู่ เช่น ตัวระบุที่ยังคงอยู่เรื่อยๆ ระหว่างการรีเซ็ตเป็นค่าเริ่มต้น ความเสี่ยงที่ผู้ใช้อาจถูกติดตามระยะยาวมากขึ้น หาก ระบบจะรีเซ็ตตัวระบุเมื่อมีการติดตั้งแอปอีกครั้ง ซึ่งจะลดการคงอยู่และ ระบุวิธีการรีเซ็ต ID แม้ว่าจะไม่มีผู้ใช้ที่ชัดเจน ควบคุมเพื่อรีเซ็ตจากภายในแอปหรือการตั้งค่าระบบ

ความเป็นเอกลักษณ์

ความเป็นเอกลักษณ์ทำให้เกิดการชนกัน ซึ่งก็คือความเหมือนกัน อยู่ในขอบเขตที่เกี่ยวข้อง ในระดับสูงสุด ตัวระบุที่ไม่ซ้ำกันทั่วโลกจะไม่ทับซ้อนกัน แม้แต่ในอุปกรณ์หรือแอปอื่นๆ มิฉะนั้น ระดับความไม่ซ้ำกันจะขึ้นอยู่กับเอนโทรปีของตัวระบุและ แหล่งที่มาของความสุ่มที่ใช้ในการสร้าง ตัวอย่างเช่น โอกาสในการ ค่า Collision สูงกว่ามากสำหรับตัวระบุแบบสุ่มซึ่งตั้งเด่นเป็นวันที่ตามปฏิทิน (เช่น 2019-03-01) มากกว่าตัวระบุที่ตั้งค่าด้วย Unix การประทับเวลาของการติดตั้ง (เช่น 1551414181)

โดยทั่วไปแล้ว ตัวระบุบัญชีผู้ใช้จะถือว่าไม่ซ้ำกัน ก็คือ แต่ละ ชุดค่าผสมของอุปกรณ์/บัญชีมีรหัสที่ไม่ซ้ำกัน ในทางกลับกัน ยิ่งตัวระบุมีเอกลักษณ์น้อยในประชากรเท่าใด ความเป็นส่วนตัวก็ยิ่งได้รับการปกป้องมากขึ้นเท่านั้น เนื่องจากมีคุณค่าน้อยลงในการติดตามผู้ใช้แต่ละราย

การปกป้องความสมบูรณ์และการปฏิเสธความรับผิด

คุณสามารถใช้ตัวระบุที่ยากต่อการปลอมแปลงหรือเล่นซ้ำเพื่อพิสูจน์ว่าอุปกรณ์หรือบัญชีที่เชื่อมโยงมีบางลักษณะ ตัวอย่างเช่น คุณสามารถ พิสูจน์ว่าอุปกรณ์ดังกล่าวไม่ใช่อุปกรณ์เสมือนที่นักส่งสแปมใช้ นอกจากนี้ ตัวระบุที่ปลอมแปลงยากยังมีความสามารถในการลบล้างไม่ได้ด้วย หากอุปกรณ์ลงนามในข้อความด้วยคีย์ลับ จะทำให้อ้างได้ว่าอุปกรณ์ของบุคคลอื่นส่งข้อความนั้น ความสามารถในการปฏิเสธไม่ได้ อาจเป็นสิ่งที่ผู้ใช้ต้องการ เช่น เช่น เมื่อตรวจสอบสิทธิ์การชำระเงิน หรืออาจเป็นทรัพย์สินที่ไม่พึงปรารถนา เช่น เหมือนกับตอนที่พวกเขาส่งข้อความว่าเสียใจ

กรณีการใช้งานทั่วไปและตัวระบุที่เหมาะสมที่จะใช้

ส่วนนี้จะแสดงทางเลือกในการใช้รหัสฮาร์ดแวร์ เช่น IMEI ไม่แนะนำให้ใช้รหัสฮาร์ดแวร์เนื่องจากผู้ใช้จะรีเซ็ตไม่ได้ และรหัสดังกล่าวมีขอบเขตระดับอุปกรณ์ ในหลายกรณี ตัวระบุระดับแอปก็เพียงพอแล้ว

บัญชี

สถานะผู้ให้บริการ

ในกรณีนี้ แอปของคุณจะโต้ตอบกับโทรศัพท์และการรับส่งข้อความของอุปกรณ์ ฟังก์ชันโดยใช้บัญชีผู้ให้บริการ

ตัวระบุที่แนะนําให้ใช้: IMEI, IMSI และ Line1

ทำไมจึงให้คำแนะนำนี้

คุณสามารถใช้ตัวระบุฮาร์ดแวร์ได้หากจำเป็นสำหรับ ฟังก์ชันการทำงานที่เกี่ยวข้องกับผู้ให้บริการ เช่น คุณอาจใช้ตัวระบุเหล่านี้เพื่อ สลับไปมาระหว่างผู้ให้บริการเครือข่ายมือถือหรือช่องซิม หรือเพื่อส่งข้อความ SMS ผ่าน IP (สำหรับ Line1) - บัญชีผู้ใช้แบบซิม อย่างไรก็ตาม สําหรับแอปที่ไม่มีสิทธิ์ เราขอแนะนําให้ใช้การลงชื่อเข้าใช้บัญชีเพื่อดึงข้อมูลอุปกรณ์ของผู้ใช้จากฝั่งเซิร์ฟเวอร์ เหตุผลหนึ่งก็คือใน Android 6.0 (API ระดับ 23) และ ตัวระบุเหล่านี้จะใช้ได้ในสิทธิ์รันไทม์เท่านั้น ผู้ใช้อาจปิดสิทธิ์นี้ ดังนั้นแอปของคุณควรจัดการข้อยกเว้นเหล่านี้อย่างราบรื่น

สถานะการสมัครใช้บริการในอุปกรณ์เคลื่อนที่

ในกรณีนี้ คุณต้องเชื่อมโยงฟังก์ชันการทํางานของแอปกับการสมัครใช้บริการบางอย่างบนอุปกรณ์เคลื่อนที่ เช่น คุณอาจมีข้อกำหนดในการ ยืนยันสิทธิ์เข้าถึงฟีเจอร์พรีเมียมบางอย่างของแอปโดยอิงตามอุปกรณ์เคลื่อนที่ของอุปกรณ์ การสมัครใช้บริการผ่านซิม

ตัวระบุที่แนะนำให้ใช้: รหัสการสมัครใช้บริการ API ไปยัง ระบุซิมที่ใช้ในอุปกรณ์

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

เหตุใดจึงแสดงรายการแนะนำนี้

ปัจจุบันแอปบางแอปอาจใช้ ICCID เพื่อวัตถุประสงค์นี้ เนื่องจากรหัส ICC ไม่ซ้ำกันทั่วโลกและรีเซ็ตไม่ได้ เราจึงจำกัดการเข้าถึงไว้สำหรับแอปที่มีสิทธิ์ READ_PRIVILEGED_PHONE_STATEมาตั้งแต่ Android 10 ตั้งแต่ Android 11 เป็นต้นไป Android ได้จำกัดการเข้าถึง ICCID ผ่าน getIccId() API เพิ่มเติม โดยไม่คำนึงถึงระดับ API เป้าหมายของแอป แอปที่ได้รับผลกระทบควรย้ายข้อมูลไปยัง ให้ใช้รหัสการสมัครใช้บริการแทน

การลงชื่อเพียงครั้งเดียว

ในกรณีนี้ แอปของคุณจะมอบประสบการณ์การลงชื่อเพียงครั้งเดียว ซึ่งช่วยให้ผู้ใช้เชื่อมโยงบัญชีที่มีอยู่กับองค์กรของคุณได้

ตัวระบุที่แนะนำให้ใช้: บัญชีที่ใช้ร่วมกับผู้จัดการฝ่ายดูแลลูกค้าได้ เช่น การลิงก์บัญชี Google

เหตุใดจึงแสดงรายการแนะนำนี้

การลิงก์บัญชี Google ช่วยให้ผู้ใช้เชื่อมโยงบัญชี Google ที่มีอยู่กับแอปของคุณได้ ซึ่งจะช่วยให้เข้าถึงผลิตภัณฑ์และบริการขององค์กรได้อย่างราบรื่นและปลอดภัยยิ่งขึ้น นอกจากนี้ คุณยังสามารถ กำหนดขอบเขต OAuth ที่กำหนดเอง เพื่อแสดงเฉพาะข้อมูลที่จำเป็น ซึ่งเป็นการเพิ่มความไว้วางใจของผู้ใช้ด้วยการระบุอย่างชัดเจนว่า ของ Google

โฆษณา

การกำหนดเป้าหมาย

ในกรณีนี้ แอปจะสร้างโปรไฟล์ตามความสนใจของผู้ใช้เพื่อแสดงให้ผู้ใช้ ที่เกี่ยวข้องมากขึ้น

ตัวระบุที่แนะนำให้ใช้: หากแอปใช้รหัสสำหรับโฆษณาและการอัปโหลด หรือ เผยแพร่ไปยัง Google Play รหัสนั้นต้องเป็นรหัสโฆษณา

เหตุใดจึงแสดงรายการแนะนำนี้

กรณีการใช้งานนี้เกี่ยวข้องกับโฆษณา ซึ่งอาจต้องใช้รหัสที่ใช้ได้ ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็น โซลูชันที่เหมาะสมที่สุด จำเป็นต้องใช้รหัสโฆษณาเพื่อ ตามกรณีการใช้งานของโฆษณา นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เพราะผู้ใช้สามารถรีเซ็ตได้

ไม่ว่าคุณจะแชร์ข้อมูลผู้ใช้ในแอปหรือไม่ หากคุณเก็บรวบรวมและใช้ข้อมูล สำหรับโฆษณา คุณจะต้องประกาศวัตถุประสงค์ของโฆษณาใน ส่วนความปลอดภัยของข้อมูล ของหน้าเนื้อหาแอปใน Play Console

การวัดผล

ในกรณีนี้ แอปจะสร้างโปรไฟล์ของผู้ใช้ตามพฤติกรรมของผู้ใช้ จากแอปขององค์กรได้ ในอุปกรณ์เครื่องเดียวกัน

ตัวระบุที่แนะนําให้ใช้: Advertising ID หรือ Play Install Referrer API

เหตุใดจึงแสดงรายการแนะนำนี้

นี่เป็นกรณีการใช้งานที่เกี่ยวข้องกับโฆษณา ซึ่งอาจต้องใช้รหัสที่ใช้ได้กับแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็นโซลูชันที่เหมาะสมที่สุด หากคุณใช้รหัสสำหรับ Use Case การโฆษณา รหัสนั้น ต้องเป็นรหัสโฆษณาเนื่องจากผู้ใช้รีเซ็ตได้ ดูข้อมูลเพิ่มเติมใน นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play

Conversion

ในกรณีนี้ คุณกําลังติดตาม Conversion เพื่อตรวจดูว่ากลยุทธ์ทางการตลาดประสบความสําเร็จหรือไม่

ตัวระบุที่แนะนําให้ใช้: Advertising ID หรือ Play Install Referrer API

เหตุใดจึงแสดงรายการแนะนำนี้

กรณีการใช้งานนี้เกี่ยวข้องกับโฆษณา ซึ่งอาจต้องใช้รหัสที่ใช้ได้ ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็น โซลูชันที่เหมาะสมที่สุด การใช้รหัสโฆษณาเป็นสิ่งจําเป็นสำหรับกรณีการใช้งานโฆษณาตามนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้

รีมาร์เก็ตติ้ง

ในกรณีนี้ แอปจะแสดงโฆษณาตามความสนใจที่ผ่านมาของผู้ใช้

ตัวระบุที่แนะนําให้ใช้: รหัสโฆษณา

ทำไมจึงให้คำแนะนำนี้

กรณีการใช้งานนี้เกี่ยวข้องกับโฆษณา ซึ่งอาจต้องใช้รหัสที่ใช้ได้ ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็น โซลูชันที่เหมาะสมที่สุด การใช้รหัสโฆษณาเป็นสิ่งจําเป็นสำหรับกรณีการใช้งานโฆษณาตามนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้

การวิเคราะห์แอป

ในกรณีนี้ แอปของคุณจะประเมินพฤติกรรมของผู้ใช้เพื่อช่วยคุณพิจารณา ดังต่อไปนี้

  • ผลิตภัณฑ์หรือแอปอื่นๆ ขององค์กรอาจเหมาะสมกับ ผู้ใช้
  • วิธีทำให้ผู้ใช้สนใจที่จะใช้แอปของคุณต่อไป
  • วัดสถิติและข้อมูลวิเคราะห์การใช้งานสําหรับผู้ใช้ที่ออกจากระบบหรือผู้ใช้ที่ไม่ระบุตัวตน

วิธีแก้ไขที่เป็นไปได้มีดังนี้

  • รหัสชุดแอป: รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ในแอปหลายแอปที่องค์กรเป็นเจ้าของได้ ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้เพื่อวัตถุประสงค์ในการโฆษณา หากคุณกำหนดเป้าหมายอุปกรณ์ที่ขับเคลื่อนโดย Google Play เราขอแนะนำให้คุณใช้รหัสชุดแอป
  • รหัส Firebase (FID): FID จะกําหนดขอบเขตไว้สําหรับแอปที่สร้าง ซึ่งจะป้องกันไม่ให้มีการใช้ตัวระบุเพื่อติดตามผู้ใช้ในแอปต่างๆ นอกจากนี้ ผู้ใช้ยังรีเซ็ต FID ได้โดยง่ายเนื่องจากสามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ การสร้าง FID นั้นทําได้ง่ายๆ เพียงดูคู่มือการติดตั้ง Firebase

การพัฒนาแอป

รายงานข้อขัดข้อง

ในกรณีนี้ แอปจะรวบรวมข้อมูลเกี่ยวกับเวลาและสาเหตุที่แอปขัดข้องในอุปกรณ์ของผู้ใช้

ตัวระบุที่แนะนําให้ใช้: FID หรือรหัสชุดแอป

เหตุใดจึงแสดงรายการแนะนำนี้

FID จะกำหนดขอบเขตไว้สำหรับแอปที่สร้าง ซึ่งจะป้องกันไม่ให้มีการใช้ตัวระบุดังกล่าวเพื่อติดตามผู้ใช้ในแอปต่างๆ นอกจากนี้ ผู้ใช้ยังรีเซ็ต FID ได้อย่างง่ายดายเนื่องจากสามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ การสร้าง FID นั้นทําได้ง่ายๆ เพียงดูคู่มือการติดตั้ง Firebase รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ในแอปหลายแอปที่องค์กรเป็นเจ้าของได้ ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้เพื่อวัตถุประสงค์ในการโฆษณา

การรายงานประสิทธิภาพ

ในกรณีนี้ แอปของคุณจะรวบรวมเมตริกประสิทธิภาพ เช่น เวลาที่ใช้ในการโหลดและ การใช้แบตเตอรี่ เพื่อช่วยปรับปรุงคุณภาพของแอป

ตัวระบุที่แนะนำให้ใช้ การตรวจสอบประสิทธิภาพของ Firebase

ทำไมจึงให้คำแนะนำนี้

การตรวจสอบประสิทธิภาพของ Firebase ช่วยให้คุณมุ่งเน้นเมตริกที่มีความสำคัญมากที่สุด กับคุณ และทดสอบผลกระทบของการเปลี่ยนแปลงล่าสุดในแอป

การทดสอบแอป

ในกรณีนี้ แอปจะประเมินประสบการณ์ของผู้ใช้กับแอปเพื่อวัตถุประสงค์ในการทดสอบหรือการแก้ไขข้อบกพร่อง

ตัวระบุที่แนะนําให้ใช้: FID หรือรหัสชุดแอป

เหตุใดจึงแสดงรายการแนะนำนี้

FID จะจำกัดขอบเขตอยู่ที่แอปที่สร้าง FID ซึ่งป้องกันไม่ให้ตัวระบุ ใช้เพื่อติดตามผู้ใช้ข้ามแอป นอกจากนี้ ผู้ใช้ยังรีเซ็ต FID ได้อย่างง่ายดายเนื่องจากสามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ การสร้าง FID นั้นทําได้ง่ายๆ เพียงดูคู่มือการติดตั้ง Firebase รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ในหลายๆ แอปที่ ขององค์กร ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้เพื่อการโฆษณา วัตถุประสงค์

การติดตั้งในหลายอุปกรณ์

ในกรณีนี้ แอปของคุณต้องระบุอินสแตนซ์ที่ถูกต้องของแอปเมื่อ เพราะถูกติดตั้งในอุปกรณ์หลายเครื่องสำหรับผู้ใช้รายเดียวกัน

ตัวระบุที่แนะนำให้ใช้: FID หรือ GUID

เหตุใดจึงแสดงรายการแนะนำนี้

FID มีการออกแบบเพื่อวัตถุประสงค์นี้อย่างชัดเจน จะจำกัดขอบเขตไว้ที่ แอปเพื่อให้ไม่สามารถใช้ติดตามผู้ใช้ในแอปต่างๆ และ รีเซ็ตเมื่อติดตั้งแอปอีกครั้ง ในกรณีที่พบไม่บ่อยนักที่ FID ไม่เพียงพอ คุณยังสามารถใช้ GUID ได้ด้วย

ความปลอดภัย

การตรวจจับการละเมิด

ในกรณีนี้ คุณกำลังพยายามตรวจจับอุปกรณ์ปลอมหลายเครื่องที่จู่โจม แบ็กเอนด์

ตัวระบุที่แนะนำสำหรับใช้:โทเค็นความสมบูรณ์ของ Google Play Integrity API

เหตุใดจึงแสดงรายการแนะนำนี้

หากต้องการยืนยันว่าคำขอมาจากอุปกรณ์ Android จริง ไม่ใช่จากโปรแกรมจำลองหรือโค้ดอื่นๆ ที่แอบอ้างเป็นอุปกรณ์อื่น ให้ใช้ Google Play Integrity API

การฉ้อโกงผ่านโฆษณา

ในกรณีนี้ แอปจะตรวจสอบว่าการแสดงผลและการกระทําของผู้ใช้ในแอปเป็นจริงและตรวจสอบได้

ตัวระบุที่แนะนําให้ใช้: รหัสโฆษณา

ทำไมจึงให้คำแนะนำนี้

การใช้รหัสโฆษณาเป็นสิ่งจําเป็นสำหรับกรณีการใช้งานโฆษณาตามนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้

การจัดการสิทธิ์ดิจิทัล (DRM)

ในกรณีนี้ แอปของคุณต้องการปกป้องการเข้าถึงที่เป็นการฉ้อโกงทรัพย์สินทางปัญญาหรือเนื้อหาที่ต้องซื้อ

ตัวระบุที่แนะนำให้ใช้: การใช้ FID หรือ GUID จะบังคับให้ผู้ใช้ต้องติดตั้งแอปอีกครั้งเพื่อหลีกเลี่ยงการจำกัดเนื้อหา ซึ่งถือเป็นภาระที่หนักพอที่จะยับยั้งผู้ใช้ส่วนใหญ่ หากวิธีนี้ยังไม่เพียงพอ Android มี DRM API ซึ่งสามารถ ใช้เพื่อจำกัดการเข้าถึงเนื้อหา ซึ่งรวมถึงตัวระบุต่อ APK รหัส Widevine

ค่ากำหนดของผู้ใช้

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

ตัวระบุที่แนะนําให้ใช้: FID หรือ GUID

เหตุใดจึงแสดงรายการแนะนำนี้

ไม่แนะนําให้เก็บข้อมูลไว้ผ่านการติดตั้งใหม่เนื่องจากผู้ใช้อาจต้องการรีเซ็ตค่ากําหนดโดยการติดตั้งแอปอีกครั้ง