เอกสารนี้จะให้คำแนะนำในการเลือกตัวระบุที่เหมาะสมสำหรับแอปตามกรณีการใช้งานของคุณ
ดูข้อมูลทั่วไปเกี่ยวกับสิทธิ์ของ Android ได้ที่ภาพรวมของสิทธิ์ ดูแนวทางปฏิบัติแนะนำที่เฉพาะเจาะจงสำหรับการทำงานกับสิทธิ์ของ Android ได้ที่แนวทางปฏิบัติแนะนำสำหรับสิทธิ์ของแอป
แนวทางปฏิบัติแนะนำในการทำงานกับตัวระบุ Android
เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ ให้ใช้ตัวระบุที่มีข้อจำกัดมากที่สุดซึ่งตรงกับ Use Case ของแอป โดยเฉพาะอย่างยิ่ง โปรดทำตามแนวทางปฏิบัติแนะนำต่อไปนี้
- เลือกตัวระบุที่ผู้ใช้รีเซ็ตได้ทุกครั้งที่เป็นไปได้ แอปของคุณสามารถบรรลุ Use Case ส่วนใหญ่ได้แม้ว่าจะใช้ตัวระบุอื่นๆ ที่ไม่ใช่รหัสฮาร์ดแวร์ที่รีเซ็ตไม่ได้
หลีกเลี่ยงการใช้ตัวระบุฮาร์ดแวร์ ในกรณีการใช้งานส่วนใหญ่ คุณสามารถหลีกเลี่ยงการใช้ตัวระบุฮาร์ดแวร์ เช่น International Mobile Equipment Identity (IMEI) ได้โดยไม่จำกัดฟังก์ชันการทำงานที่จำเป็น
Android 10 (ระดับ API 29) เพิ่มข้อจำกัดสำหรับตัวระบุที่รีเซ็ตไม่ได้ ซึ่งรวมถึงทั้ง IMEI และหมายเลขซีเรียล แอปของคุณต้องเป็นแอปเจ้าของอุปกรณ์หรือโปรไฟล์ มีสิทธิ์พิเศษของผู้ให้บริการ หรือมีสิทธิ์พิเศษ
READ_PRIVILEGED_PHONE_STATEเพื่อเข้าถึงตัวระบุเหล่านี้ใช้รหัสโฆษณาสำหรับการทำโปรไฟล์ผู้ใช้หรือ Use Case ของโฆษณาเท่านั้น เมื่อใช้รหัสโฆษณา ให้เคารพการตัดสินใจของผู้ใช้เกี่ยวกับการติดตามโฆษณาเสมอ หากคุณต้องเชื่อมโยงตัวระบุโฆษณากับข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ ให้ดำเนินการต่อเมื่อได้รับความยินยอมอย่างชัดแจ้งจากผู้ใช้เท่านั้น
อย่าเชื่อมโยงการรีเซ็ตรหัสโฆษณา
ใช้รหัสการติดตั้ง Firebase (FID) หรือ GUID ที่จัดเก็บแบบส่วนตัวเมื่อเป็นไปได้สำหรับ Use Case อื่นๆ ทั้งหมด ยกเว้นการป้องกันการประพฤติมิชอบด้านการชำระเงินและโทรศัพท์ สำหรับ Use Case ที่ไม่ใช่โฆษณาส่วนใหญ่ FID หรือ GUID ควรเพียงพอแล้ว
ใช้ API ที่เหมาะสมกับกรณีการใช้งานของคุณเพื่อลดความเสี่ยงด้านความเป็นส่วนตัว ใช้ DRM API สำหรับการปกป้องเนื้อหาที่มีมูลค่าสูง และใช้ Play Integrity API สำหรับการป้องกันการละเมิด Play Integrity API เป็นวิธีที่ง่ายที่สุดในการระบุว่าอุปกรณ์เป็นของแท้หรือไม่โดยไม่ก่อให้เกิดความเสี่ยงด้านความเป็นส่วนตัว
ส่วนที่เหลือของคู่มือนี้จะอธิบายกฎเหล่านี้อย่างละเอียดในบริบทของการพัฒนาแอป Android
ทำงานกับรหัสโฆษณา
รหัสโฆษณาเป็นตัวระบุที่ผู้ใช้รีเซ็ตได้และเหมาะสำหรับกรณีการใช้งานโฆษณา อย่างไรก็ตาม มีประเด็นสำคัญบางประการที่ควรคำนึงถึงเมื่อใช้รหัสนี้
เคารพความตั้งใจของผู้ใช้ในการรีเซ็ตรหัสโฆษณาเสมอ อย่าเชื่อมโยงการรีเซ็ตของผู้ใช้โดยใช้ตัวระบุหรือลายนิ้วมืออื่นเพื่อลิงก์รหัสโฆษณาที่ตามมาเข้าด้วยกันโดยไม่ได้รับความยินยอมจากผู้ใช้ นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play ระบุไว้ดังนี้
"...หากมีการรีเซ็ต ตัวระบุโฆษณาใหม่ต้องไม่เชื่อมโยงกับตัวระบุโฆษณาก่อนหน้านี้ หรือข้อมูลที่ได้มาจากตัวระบุโฆษณาก่อนหน้านี้หากไม่ได้รับการยินยอมอย่างชัดแจ้งจากผู้ใช้"
ปฏิบัติตามแฟล็กโฆษณาที่ปรับตามโปรไฟล์ของผู้ใช้ที่เชื่อมโยงอยู่เสมอ รหัสโฆษณาสามารถกำหนดค่าได้โดยที่ผู้ใช้สามารถจำกัดปริมาณการติดตามที่เชื่อมโยงกับรหัสดังกล่าว ใช้เมธอด AdvertisingIdClient.Info.isLimitAdTrackingEnabled() เสมอเพื่อให้แน่ใจว่าคุณไม่ได้ละเมิดความต้องการของผู้ใช้ นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play ระบุไว้ดังนี้
"...คุณต้องปฏิบัติตามการตั้งค่า 'เลือกไม่ใช้การโฆษณาตามความสนใจ' หรือ 'เลือกไม่ใช้การปรับโฆษณาตามโปรไฟล์ของผู้ใช้' ของผู้ใช้ หากผู้ใช้เปิดใช้การตั้งค่านี้ คุณจะไม่สามารถใช้ตัวระบุโฆษณาสำหรับการสร้างโปรไฟล์ผู้ใช้โดยมีจุดประสงค์เพื่อโฆษณา หรือเพื่อกำหนดเป้าหมายผู้ใช้ด้วยโฆษณาที่ปรับตามโปรไฟล์ของผู้ใช้ กิจกรรมที่อนุญาตประกอบด้วยการโฆษณาตามบริบท, การกำหนดความถี่สูงสุด, เครื่องมือวัด Conversion, การรายงาน และการตรวจหาเกี่ยวกับความปลอดภัยและการฉ้อโกง"
โปรดคำนึงถึงนโยบายความเป็นส่วนตัวหรือความปลอดภัยที่เกี่ยวข้องกับ SDK ที่คุณใช้ซึ่งเกี่ยวข้องกับการใช้รหัสโฆษณา
ตัวอย่างเช่น หากคุณส่ง true ไปยังเมธอด enableAdvertisingIdCollection() จาก SDK ของ Google Analytics โปรดตรวจสอบและปฏิบัติตามนโยบาย 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 ดังนี้
| TABLE-01 | ||||
timestamp |
ad_id |
clickid |
dev_model |
|
| TABLE-02 | ||||
timestamp |
demo |
account_id |
dev_model |
name |
ในกรณีนี้ หากมีกิจกรรมการคลิกที่เกิดขึ้นไม่บ่อยนัก ก็ยังคงเป็นไปได้ที่จะรวม TABLE-01 ของรหัสผู้ลงโฆษณาและ PII ที่มีอยู่ใน TABLE-02 โดยใช้การประทับเวลาของกิจกรรมและรุ่นอุปกรณ์
แม้ว่าการรับประกันว่าจะไม่มีตัวระบุเสมือนดังกล่าวอยู่ในชุดข้อมูลมักเป็นเรื่องยาก แต่คุณสามารถป้องกันความเสี่ยงในการรวมที่ชัดเจนที่สุดได้โดยการทำให้ข้อมูลที่ไม่ซ้ำกันเป็นข้อมูลทั่วไปเมื่อเป็นไปได้ ในตัวอย่างก่อนหน้านี้ หมายความว่าการลดความแม่นยำของการประทับเวลาเพื่อให้อุปกรณ์หลายเครื่องที่มีรุ่นเดียวกันปรากฏขึ้นสำหรับการประทับเวลาทุกครั้ง
วิธีแก้ปัญหาอื่นๆ มีดังนี้
ไม่ออกแบบตารางที่ลิงก์ PII กับรหัสโฆษณาอย่างชัดเจน ในตัวอย่างแรกด้านบน หมายความว่าไม่รวมคอลัมน์
account_idใน TABLE-01การแยกและตรวจสอบรายการควบคุมการเข้าถึงสำหรับผู้ใช้หรือบทบาทที่มีสิทธิ์เข้าถึงทั้งข้อมูลที่ใช้รหัสโฆษณาเป็นคีย์และ PII การควบคุมและตรวจสอบความสามารถในการเข้าถึงทั้ง 2 แหล่งข้อมูลพร้อมกันอย่างเข้มงวด (เช่น การรวมตาราง) จะช่วยลดความเสี่ยงในการเชื่อมโยงระหว่างรหัสโฆษณากับ PII โดยทั่วไปแล้ว การควบคุมการเข้าถึงหมายถึงการดำเนินการต่อไปนี้
- เก็บรายการควบคุมการเข้าถึง (ACL) สำหรับข้อมูลที่ใช้รหัสผู้ลงโฆษณาเป็นคีย์และ PII แยกกันเพื่อลดจำนวนบุคคลหรือบทบาทที่อยู่ใน ACL ทั้ง 2 รายการ
- ใช้การบันทึกและการตรวจสอบการเข้าถึงเพื่อตรวจหาและจัดการข้อยกเว้นของกฎนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับรหัสโฆษณาอย่างมีความรับผิดชอบได้ที่เอกสารอ้างอิง API AdvertisingIdClient
การทำงานกับ FID และ GUID
วิธีที่ตรงไปตรงมาที่สุดในการระบุอินสแตนซ์แอปที่ทำงานบนอุปกรณ์คือการใช้รหัสการติดตั้ง Firebase (FID) และนี่เป็นวิธีที่แนะนำในกรณีการใช้งานส่วนใหญ่ที่ไม่ใช่โฆษณา มีเพียงอินสแตนซ์แอปที่จัดสรรไว้เท่านั้นที่เข้าถึงตัวระบุนี้ได้ และสามารถรีเซ็ตได้ (ค่อนข้าง) ง่ายเนื่องจากจะคงอยู่ตราบเท่าที่แอปยังติดตั้งอยู่เท่านั้น
ด้วยเหตุนี้ 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)
- Realm
- ข้อมูลเข้าสู่ระบบ โดยอิงตามข้อมูลเข้าสู่ระบบที่ใช้ในโปรไฟล์ Passpoint ดังนี้
- ข้อมูลเข้าสู่ระบบของผู้ใช้: ชื่อผู้ใช้
- ข้อมูลเข้าสู่ระบบของใบรับรอง: ใบรับรองและประเภทใบรับรอง
- ข้อมูลเข้าสู่ระบบของซิม: ประเภท 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 มีรหัสจำนวนมากที่มีลักษณะการทำงานแตกต่างกัน รหัสที่คุณควรใช้ขึ้นอยู่กับว่าลักษณะต่อไปนี้ทำงานร่วมกับกรณีการใช้งานของคุณอย่างไร อย่างไรก็ตาม ลักษณะเหล่านี้ยังส่งผลต่อความเป็นส่วนตัวด้วย คุณจึงควรทำความเข้าใจว่าลักษณะเหล่านี้โต้ตอบกันอย่างไร
ขอบเขต
ขอบเขตของตัวระบุจะอธิบายว่าระบบใดเข้าถึงตัวระบุได้ โดยทั่วไปแล้ว ขอบเขตของตัวระบุ Android จะมี 3 รูปแบบ ได้แก่
- แอปเดียว: รหัสเป็นข้อมูลภายในแอปและแอปอื่นๆ เข้าถึงไม่ได้
- กลุ่มแอป: กลุ่มแอปที่เกี่ยวข้องซึ่งกำหนดไว้ล่วงหน้าจะเข้าถึงรหัสได้
- อุปกรณ์: แอปทั้งหมดที่ติดตั้งในอุปกรณ์จะเข้าถึงรหัสได้
ยิ่งขอบเขตที่ให้แก่ตัวระบุกว้างเท่าใด ความเสี่ยงที่จะมีการใช้ตัวระบุเพื่อวัตถุประสงค์ในการติดตามก็จะยิ่งมากขึ้นเท่านั้น ในทางกลับกัน หากมีเพียงอินสแตนซ์แอปเดียวที่เข้าถึงตัวระบุได้ ก็จะใช้ตัวระบุดังกล่าวเพื่อติดตามอุปกรณ์ในธุรกรรมต่างๆ ในแอปอื่นไม่ได้
ความสามารถในการรีเซ็ตและความคงอยู่
ความสามารถในการรีเซ็ตและความคงอยู่จะกำหนดอายุการใช้งานของตัวระบุและอธิบายวิธีรีเซ็ตตัวระบุ ทริกเกอร์การรีเซ็ตที่พบบ่อย ได้แก่ การรีเซ็ตในแอป การรีเซ็ตผ่านการตั้งค่าระบบ การรีเซ็ตเมื่อเปิดแอป และการรีเซ็ตเมื่อติดตั้ง ตัวระบุ Android อาจมีอายุการใช้งานที่แตกต่างกัน แต่โดยปกติแล้วอายุการใช้งานจะเกี่ยวข้องกับวิธีรีเซ็ตรหัส ดังนี้
- เฉพาะเซสชัน: ระบบจะใช้รหัสใหม่ทุกครั้งที่ผู้ใช้รีสตาร์ทแอป
- รีเซ็ตเมื่อติดตั้ง: ระบบจะใช้รหัสใหม่ทุกครั้งที่ผู้ใช้ถอนการติดตั้งและติดตั้งแอปอีกครั้ง
- รีเซ็ต FDR: ระบบจะใช้รหัสใหม่ทุกครั้งที่ผู้ใช้รีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น
- FDR-persistent: รหัสจะยังคงอยู่แม้จะรีเซ็ตเป็นค่าเริ่มต้น
ความสามารถในการรีเซ็ตช่วยให้ผู้ใช้สร้างรหัสใหม่ที่ไม่เชื่อมโยงกับข้อมูลโปรไฟล์ที่มีอยู่ได้ ยิ่งตัวระบุคงอยู่นานและเชื่อถือได้มากเท่าใด เช่น ตัวระบุที่คงอยู่แม้จะรีเซ็ตเป็นค่าเริ่มต้นแล้วก็ตาม ความเสี่ยงที่ผู้ใช้อาจถูกติดตามในระยะยาวก็จะยิ่งมากขึ้นเท่านั้น หากมีการรีเซ็ตตัวระบุเมื่อติดตั้งแอปอีกครั้ง จะช่วยลดความคงอยู่และเป็นวิธีรีเซ็ตตัวระบุ แม้ว่าจะไม่มีการควบคุมของผู้ใช้อย่างชัดแจ้งในการรีเซ็ตจากภายในแอปหรือการตั้งค่าระบบก็ตาม
ความเป็นเอกลักษณ์
ความไม่ซ้ำกันจะกำหนดแนวโน้มของการทับซ้อนกัน กล่าวคือ มีตัวระบุที่เหมือนกันอยู่ภายในขอบเขตที่เกี่ยวข้อง ในระดับสูงสุด ตัวระบุที่ไม่ซ้ำกันทั่วโลกจะไม่มีการชนกันเลย แม้แต่ในอุปกรณ์หรือแอปอื่นๆ
มิฉะนั้น ระดับความไม่ซ้ำกันจะขึ้นอยู่กับเอนโทรปีของตัวระบุและแหล่งที่มาของความสุ่มที่ใช้สร้างตัวระบุ ตัวอย่างเช่น โอกาสที่จะเกิดการทับซ้อนกันจะสูงกว่ามากสำหรับตัวระบุแบบสุ่มที่สร้างขึ้นโดยใช้วันที่ติดตั้งตามปฏิทิน (เช่น 2019-03-01) เมื่อเทียบกับตัวระบุที่สร้างขึ้นโดยใช้การประทับเวลา Unix ของการติดตั้ง (เช่น 1551414181)
โดยทั่วไปแล้ว ตัวระบุบัญชีผู้ใช้จะถือว่าไม่ซ้ำกัน กล่าวคือ อุปกรณ์/บัญชีแต่ละชุดจะมีรหัสที่ไม่ซ้ำกัน ในทางกลับกัน ยิ่งตัวระบุมีความเฉพาะเจาะจงน้อยลงในกลุ่มประชากร การคุ้มครองความเป็นส่วนตัวก็จะยิ่งมากขึ้น เนื่องจากตัวระบุจะมีประโยชน์น้อยลงในการติดตามผู้ใช้แต่ละราย
การปกป้องความสมบูรณ์และการไม่ปฏิเสธความรับผิด
คุณสามารถใช้ตัวระบุที่ยากต่อการปลอมแปลงหรือเล่นซ้ำเพื่อพิสูจน์ว่าอุปกรณ์หรือบัญชีที่เชื่อมโยงมีคุณสมบัติบางอย่าง เช่น คุณสามารถพิสูจน์ได้ว่าอุปกรณ์ไม่ใช่อุปกรณ์เสมือนจริงที่นักส่งสแปมใช้ ตัวระบุที่ปลอมแปลงได้ยากยังให้การไม่ปฏิเสธความรับผิดด้วย หากอุปกรณ์ลงนามข้อความด้วยคีย์ลับ ก็ยากที่จะอ้างว่าอุปกรณ์ของผู้อื่นเป็นผู้ส่งข้อความ การไม่สามารถปฏิเสธความรับผิดอาจเป็นสิ่งที่ผู้ใช้ต้องการ เช่น เมื่อตรวจสอบสิทธิ์การชำระเงิน หรืออาจเป็นคุณสมบัติที่ไม่พึงประสงค์ เช่น เมื่อส่งข้อความที่ตนเองรู้สึกเสียใจในภายหลัง
กรณีการใช้งานทั่วไปและตัวระบุที่เหมาะสมที่จะใช้
ส่วนนี้จะอธิบายทางเลือกอื่นนอกเหนือจากการใช้รหัสฮาร์ดแวร์ เช่น IMEI เราไม่แนะนำให้ใช้รหัสฮาร์ดแวร์เนื่องจากผู้ใช้รีเซ็ตไม่ได้ และรหัสจะกำหนดขอบเขตไว้ที่อุปกรณ์ ในหลายกรณี ตัวระบุที่กำหนดขอบเขตระดับแอปก็เพียงพอแล้ว
บัญชี
สถานะของผู้ให้บริการขนส่ง
ในกรณีนี้ แอปของคุณจะโต้ตอบกับฟังก์ชันการโทรและรับส่งข้อความของอุปกรณ์โดยใช้บัญชีผู้ให้บริการ
ตัวระบุที่แนะนำให้ใช้: IMEI, IMSI และ Line1
ทำไมจึงแสดงรายการแนะนำนี้
การใช้ประโยชน์จากตัวระบุฮาร์ดแวร์เป็นสิ่งที่ยอมรับได้หากจำเป็นสำหรับฟังก์ชันการทำงานที่เกี่ยวข้องกับผู้ให้บริการ ตัวอย่างเช่น คุณสามารถใช้ตัวระบุเหล่านี้เพื่อสลับระหว่างผู้ให้บริการเครือข่ายมือถือหรือช่องซิม หรือเพื่อส่งข้อความ SMS ผ่าน IP (สำหรับ Line1) - บัญชีผู้ใช้ที่ใช้ซิม อย่างไรก็ตาม สำหรับแอปที่ไม่มีสิทธิ์ เราขอแนะนำให้ใช้การลงชื่อเข้าใช้บัญชีเพื่อดึงข้อมูลอุปกรณ์ของผู้ใช้ฝั่งเซิร์ฟเวอร์ สาเหตุหนึ่งคือใน Android 6.0 (ระดับ API 23) ขึ้นไป ตัวระบุเหล่านี้จะใช้ได้ผ่านสิทธิ์รันไทม์เท่านั้น ผู้ใช้อาจปิดสิทธิ์นี้ ดังนั้นแอปของคุณควรจัดการข้อยกเว้นเหล่านี้อย่างเหมาะสม
สถานะการสมัครใช้บริการบนอุปกรณ์เคลื่อนที่
ในกรณีนี้ คุณต้องเชื่อมโยงฟังก์ชันการทำงานของแอปกับการสมัครใช้บริการมือถือบางรายการในอุปกรณ์ ตัวอย่างเช่น คุณอาจมีข้อกำหนดในการยืนยันสิทธิ์เข้าถึงฟีเจอร์บางอย่างของแอปพรีเมียมตามการสมัครใช้บริการมือถือของอุปกรณ์ผ่านซิม
ตัวระบุที่แนะนำให้ใช้: Subscription ID API เพื่อระบุซิมที่ใช้ในอุปกรณ์
รหัสการสมัครใช้บริการจะให้ค่าดัชนี (เริ่มต้นที่ 1) เพื่อระบุซิมที่ติดตั้ง (รวมถึงซิมจริงและซิมอิเล็กทรอนิกส์) ที่ใช้ในอุปกรณ์โดยไม่ซ้ำกัน แอปสามารถเชื่อมโยงฟังก์ชันการทำงานกับข้อมูลการสมัครใช้บริการต่างๆ สำหรับซิมที่ระบุผ่านรหัสนี้ ค่านี้จะคงที่สำหรับซิมหนึ่งๆ เว้นแต่จะมีการรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น อย่างไรก็ตาม อาจมีกรณีที่ซิมเดียวกันมีรหัสการสมัครใช้บริการที่แตกต่างกันในอุปกรณ์ต่างๆ หรือซิมที่แตกต่างกันมีรหัสเดียวกันในอุปกรณ์ต่างๆ
ทำไมจึงแสดงรายการแนะนำนี้
ปัจจุบันบางแอปอาจใช้ ICC ID เพื่อวัตถุประสงค์นี้ เนื่องจากรหัส ICC ไม่ซ้ำกันทั่วโลกและรีเซ็ตไม่ได้ การเข้าถึงจึงถูกจำกัดไว้เฉพาะแอปที่มีสิทธิ์ READ_PRIVILEGED_PHONE_STATE ตั้งแต่ Android 10 เป็นต้นมา ตั้งแต่ Android 11 เป็นต้นมา Android ได้จำกัดการเข้าถึง ICCID ผ่าน API getIccId() เพิ่มเติม ไม่ว่าระดับ API เป้าหมายของแอปจะเป็นระดับใดก็ตาม แอปที่ได้รับผลกระทบควรย้ายข้อมูลไปใช้รหัสการสมัครใช้บริการแทน
การลงชื่อเพียงครั้งเดียว
ในกรณีนี้ แอปของคุณจะมอบประสบการณ์การลงชื่อเพียงครั้งเดียว ซึ่งช่วยให้ผู้ใช้เชื่อมโยงบัญชีที่มีอยู่กับองค์กรของคุณได้
ตัวระบุที่แนะนำให้ใช้: บัญชีที่เข้ากันได้กับผู้จัดการฝ่ายดูแลลูกค้า เช่น การลิงก์บัญชี Google
ทำไมจึงแสดงรายการแนะนำนี้
การลิงก์บัญชี Google ช่วยให้ผู้ใช้เชื่อมโยงบัญชี Google ที่มีอยู่กับแอปของคุณได้ ซึ่งจะช่วยให้เข้าถึงผลิตภัณฑ์และบริการขององค์กรได้อย่างราบรื่นและปลอดภัยยิ่งขึ้น นอกจากนี้ คุณยังสามารถกำหนดขอบเขต OAuth ที่กำหนดเองเพื่อแชร์เฉพาะข้อมูลที่จำเป็น ซึ่งจะช่วยเพิ่มความไว้วางใจของผู้ใช้ด้วยการกำหนดวิธีใช้ข้อมูลอย่างชัดเจน
โฆษณา
กลุ่มเป้าหมาย
ในกรณีนี้ แอปจะสร้างโปรไฟล์ความสนใจของผู้ใช้เพื่อแสดงโฆษณาที่เกี่ยวข้องมากขึ้น
ตัวระบุที่แนะนำให้ใช้: หากแอปของคุณใช้รหัสสำหรับโฆษณาและอัปโหลดหรือเผยแพร่ไปยัง Google Play รหัสดังกล่าวต้องเป็นรหัสโฆษณา
ทำไมจึงแสดงรายการแนะนำนี้
กรณีนี้เป็นกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็นโซลูชันที่เหมาะสมที่สุด คุณต้องใช้รหัสโฆษณาสำหรับกรณีการใช้งานโฆษณาตามนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้
ไม่ว่าคุณจะแชร์ข้อมูลผู้ใช้ในแอปหรือไม่ หากคุณรวบรวมและใช้ข้อมูลดังกล่าวเพื่อวัตถุประสงค์ด้านโฆษณา คุณต้องประกาศวัตถุประสงค์ด้านโฆษณาในส่วนความปลอดภัยของข้อมูลในหน้าเนื้อหาแอปใน Play Console
การวัดผล
ในกรณีนี้ แอปของคุณจะสร้างโปรไฟล์ของผู้ใช้โดยอิงตามพฤติกรรมในแอปต่างๆ ขององค์กรในอุปกรณ์เดียวกัน
ตัวระบุที่แนะนำให้ใช้: รหัสโฆษณาหรือ Play Install Referrer API
ทำไมจึงแสดงรายการแนะนำนี้
กรณีนี้เป็นกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็นโซลูชันที่เหมาะสมที่สุด หากคุณใช้รหัสสำหรับกรณีการใช้งานโฆษณา รหัสนั้นต้องเป็นรหัสโฆษณาเนื่องจากผู้ใช้สามารถรีเซ็ตได้ ดูข้อมูลเพิ่มเติมได้ในนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play
Conversion
ในกรณีนี้ คุณกำลังติดตาม Conversion เพื่อดูว่ากลยุทธ์การตลาดประสบความสำเร็จหรือไม่
ตัวระบุที่แนะนำให้ใช้: รหัสโฆษณาหรือ Play Install Referrer API
ทำไมจึงแสดงรายการแนะนำนี้
กรณีนี้เป็นกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็นโซลูชันที่เหมาะสมที่สุด คุณต้องใช้รหัสโฆษณาสำหรับกรณีการใช้งานโฆษณาตามนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสโฆษณาได้
รีมาร์เก็ตติ้ง
ในกรณีนี้ แอปจะแสดงโฆษณาตามความสนใจก่อนหน้าของผู้ใช้
ตัวระบุที่แนะนำให้ใช้: รหัสโฆษณา
ทำไมจึงแสดงรายการแนะนำนี้
กรณีนี้เป็นกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็นโซลูชันที่เหมาะสมที่สุด คุณต้องใช้รหัสโฆษณาสำหรับกรณีการใช้งานโฆษณาตามนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้
การวิเคราะห์แอป
ในกรณีนี้ แอปจะประเมินพฤติกรรมของผู้ใช้เพื่อช่วยคุณพิจารณาสิ่งต่อไปนี้
- ผลิตภัณฑ์หรือแอปอื่นๆ ขององค์กรที่อาจเหมาะกับผู้ใช้
- วิธีทำให้ผู้ใช้สนใจใช้แอปของคุณต่อไป
- วัดสถิติการใช้งานและการวิเคราะห์สำหรับผู้ใช้ที่ออกจากระบบหรือไม่ระบุตัวตน
วิธีแก้ปัญหาที่ทำได้มีดังนี้
- รหัสชุดแอป: รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ในแอปหลายแอปที่องค์กรของคุณเป็นเจ้าของได้ ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้เพื่อวัตถุประสงค์ในการโฆษณา หากคุณกำหนดเป้าหมายอุปกรณ์ที่ทำงานด้วยบริการ Google Play เราขอแนะนำให้ใช้รหัสชุดแอป
- รหัส Firebase (FID): FID จะกำหนดขอบเขตไว้ที่แอปที่สร้างรหัสดังกล่าว ซึ่งจะป้องกันไม่ให้มีการใช้ตัวระบุเพื่อติดตามผู้ใช้ในแอปต่างๆ นอกจากนี้ยังรีเซ็ตได้ง่าย เนื่องจากผู้ใช้สามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ กระบวนการสร้าง FID นั้นตรงไปตรงมา โปรดดูคู่มือการติดตั้ง Firebase
การพัฒนาแอป
รายงานข้อขัดข้อง
ในกรณีนี้ แอปของคุณจะรวบรวมข้อมูลเกี่ยวกับเวลาและสาเหตุที่แอปขัดข้องในอุปกรณ์ของผู้ใช้
ตัวระบุที่แนะนำให้ใช้: FID หรือรหัสชุดแอป
ทำไมจึงแสดงรายการแนะนำนี้
FID จะกำหนดขอบเขตไว้ที่แอปที่สร้างขึ้น ซึ่งจะป้องกันไม่ให้มีการใช้ตัวระบุเพื่อติดตามผู้ใช้ในแอปต่างๆ นอกจากนี้ยังรีเซ็ตได้ง่าย เนื่องจากผู้ใช้สามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ กระบวนการสร้าง FID นั้นตรงไปตรงมา โปรดดูคู่มือการติดตั้ง Firebase รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ในแอปหลายแอปที่องค์กรของคุณเป็นเจ้าของได้ ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้เพื่อวัตถุประสงค์ในการโฆษณา
การรายงานประสิทธิภาพ
ในกรณีนี้ แอปจะรวบรวมเมตริกประสิทธิภาพ เช่น เวลาในการโหลดและการใช้งานแบตเตอรี่ เพื่อช่วยปรับปรุงคุณภาพของแอป
ตัวระบุที่แนะนำให้ใช้: Firebase Performance Monitoring
ทำไมจึงแสดงรายการแนะนำนี้
Firebase Performance Monitoring ช่วยให้คุณมุ่งเน้นที่เมตริกที่สําคัญที่สุดสําหรับคุณ และทดสอบผลกระทบของการเปลี่ยนแปลงล่าสุดในแอป
การทดสอบแอป
ในกรณีนี้ แอปจะประเมินประสบการณ์ของผู้ใช้ที่มีต่อแอปเพื่อวัตถุประสงค์ในการทดสอบหรือแก้ไขข้อบกพร่อง
ตัวระบุที่แนะนำให้ใช้: 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 ID
ค่ากำหนดของผู้ใช้
ในกรณีนี้ แอปจะบันทึกสถานะผู้ใช้ต่ออุปกรณ์ในแอป โดยเฉพาะสำหรับผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้ คุณอาจโอนสถานะนี้ไปยังแอปอื่นที่ลงชื่อด้วยคีย์เดียวกันในอุปกรณ์เดียวกัน
ตัวระบุที่แนะนำให้ใช้: FID หรือ GUID
ทำไมจึงแสดงรายการแนะนำนี้
เราไม่แนะนำให้เก็บข้อมูลไว้ตลอดการติดตั้งอีกครั้ง เนื่องจากผู้ใช้อาจต้องการรีเซ็ตค่ากำหนดโดยการติดตั้งแอปอีกครั้ง