เอกสารนี้ให้คำแนะนำในการเลือกตัวระบุที่เหมาะสมสำหรับแอปตามกรณีการใช้งานของคุณ
ดูภาพรวมทั่วไปของสิทธิ์ Android ได้ที่ภาพรวม สิทธิ์ ดูแนวทางปฏิบัติแนะนำเฉพาะสำหรับการทำงานกับสิทธิ์ของ Android ได้ที่แนวทางปฏิบัติแนะนำเกี่ยวกับสิทธิ์ของแอป
แนวทางปฏิบัติแนะนำในการทำงานกับตัวระบุ Android
ใช้ตัวระบุที่จำกัดที่สุดซึ่งตรงกับกรณีการใช้งานของแอปเพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ โดยเฉพาะอย่างยิ่ง ให้ทำตามแนวทางปฏิบัติแนะนำต่อไปนี้
- เลือกตัวระบุที่ผู้ใช้รีเซ็ตได้ทุกครั้งที่ทำได้ แอปของคุณสามารถ บรรลุ Use Case ส่วนใหญ่ได้แม้ว่าจะใช้ตัวระบุอื่นที่ไม่ใช่ รหัสฮาร์ดแวร์ที่รีเซ็ตไม่ได้
หลีกเลี่ยงการใช้ตัวระบุฮาร์ดแวร์ ในกรณีการใช้งานส่วนใหญ่ คุณสามารถหลีกเลี่ยงการใช้ตัวระบุฮาร์ดแวร์ เช่น หมายเลขระบุฮาร์ดแว��์ International Mobile Equipment Identity (IMEI) ได้โดยไม่จำกัดฟังก์ชันการทำงานที่จำเป็น
Android 10 (API ระดับ 29) เพิ่มข้อจำกัดสำหรับตัวระบุที่รีเซ็ตไม่ได้ ซึ่งรวมถึงทั้ง IMEI และหมายเลขซีเรียล แอปของคุณต้องเป็นแอปเจ้าของอุปกรณ์หรือ โปรไฟล์ มีสิทธิ์พิเศษของผู้ให้บริการ เครือข่าย หรือมี
READ_PRIVILEGED_PHONE_STATE
สิทธิ์ที่มีสิทธิ์เข้าถึงเพื่อเข้าถึง ตัวระบุเหล่านี้ใช้รหัสโฆษณาสำหรับการสร้างโปรไฟล์ผู้ใช้หรือกรณีการใช้งานโฆษณาเท่านั้น เมื่อใช้รหัสโฆษณา ให้เคารพการเลือกของผู้ใช้เกี่ยวกับ การติดตามโฆษณาเสมอ หากคุณต้องเชื่อมต่อตัวระบุโฆษณากับข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ ให้ทำเช่นนั้นเฉพาะในกรณีที่ได้รับความยินยอมอย่างชัดแจ้งจากผู้ใช้เท่านั้น
อย่าเชื่อมโยงการรีเซ็ตรหัสโฆษณา
ใช้รหัสการติดตั้ง Firebase (FID) หรือ GUID ที่จัดเก็บแบบส่วนตัวทุกครั้งที่ เป็นไปได้สำหรับ Use Case อื่นๆ ทั้งหมด ยกเว้นการป้องกันการประพฤติมิชอบเกี่ยวกับการชำระเงินและ โทรศัพท์ สำหรับกรณีการใช้งานที่ไม่ใช่โฆษณาส่วนใหญ่ FID หรือ GUID ก็เพียงพอแล้ว
ใช้ API ที่เหมาะสมกับ Use Case ของคุณเพื่อลดความเสี่ยงด้านความเป็นส่วนตัว ใช้ DRM API สำหรับ การปกป้องเนื้อหาที่มีมูลค่าสูงและ Play Integrity API สำหรับการป้องกันการละเมิด Play Integrity API เป็นวิธีที่ง่ายที่สุดในการพิจารณาว่าอุปกรณ์เป็น ของแท้หรือไม่โดยไม่ก่อให้เกิดความเสี่ยงด้านความเป็นส่วนตัว
ส่วนที่เหลือของคู่มือนี้จะอธิบายกฎเหล่านี้ในบริบทของการ พัฒนาแอป Android
ทำงานกับรหัสโฆษณา
รหัสโฆษณาคือตัวระบุที่ผู้ใช้รีเซ็ตได้และเหมาะสำหรับกรณีการใช้งานโฆษณา อย่างไรก็ตาม คุณควรคำนึงถึงประเด็นสำคัญบางประการเมื่อใช้รหัสนี้
เคารพความตั้งใจของผู้ใช้ในการรีเซ็ตรหัสโฆษณาเสมอ ห้ามเชื่อมโยงการรีเซ็ตของผู้ใช้โดยใช้ตัวระบุหรือลายนิ้วมืออื่นเพื่อลิงก์ รหัสโฆษณาที่ตามมาเข้าด้วยกันโดยไม่ได้รับความยินยอมจากผู้ใช้ นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play ระบุไว้ดังนี้
"...หากมีการรีเซ็ต ตัวระบุโฆษณาใหม่ต้องไม่เชื่อมโยงกับตัวระบุโฆษณาก่อนหน้านี้ หรือข้อมูลที่ได้มาจากตัวระบุโฆษณาก่อนหน้านี้หากไม่ได้รับการยินยอมอย่างชัดแจ้งจากผู้ใช้"
เคารพแฟล็กโฆษณาที่ปรับตามโปรไฟล์ของผู้ใช้ที่เชื่อมโยงเสมอ รหัสโฆษณา
กำหนดค่าได้โดยผู้ใช้สามารถจำกัดจำนวนการติดตามที่เชื่อมโยงกับรหัส
ได้ โปรดใช้วิธีAdvertisingIdClient.Info.isLimitAdTrackingEnabled()
เสมอเพื่อให้แน่ใจว่าคุณไม่ได้หลีกเลี่ยงความต้องการของผู้ใช้ นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play ระบุไว้ดังนี้
"...คุณต้องปฏิบัติตามการตั้งค่า "เลือกไม่ใช้การโฆษณาตามความสนใจ" หรือ "เลือกไม่ใช้การปรับโฆษณาตามโปรไฟล์ของผู้ใช้" ของผู้ใช้ หากผู้ใช้เปิดใช้การตั้งค่านี้ คุณจะไม่สามารถใช้ตัวระบุโฆษณาสำหรับการสร้างโปรไฟล์ผู้ใช้โดยมีจุดประสงค์เพื่อ โฆษณา หรือเพื่อกำหนดเป้าหมายผู้ใช้ด้วยโฆษณาที่ปรับตามโปรไฟล์ของผู้ใช้ กิจกรรมที่อนุญาตประกอบด้วยการโฆษณาตามบริบท, การกำหนดความถี่สูงสุด, เครื่องมือวัด Conversion, การรายงาน และการตรวจหาเกี่ยวกับความปลอดภัยและการฉ้อโกง"
โปรดทราบถึงนโยบายความเป็นส่วนตัวหรือความปลอดภัยที่เชื่อมโยงกับ SDK ที่คุณใช้ซึ่งเกี่ยวข้องกับการใช้รหัสโฆษณา
เช่น หากคุณส่ง true
ไปยังเมธอด
enableAdvertisingIdCollection()
จาก SDK ข��ง Google Analytics ให้ตรวจสอบและปฏิบัติตามนโยบาย SDK ของ Analytics ที่เกี่ยวข้องทั้งหมด
นอกจากนี้ โปรดทราบว่านโยบายเนื้อหาสำหรับนักพัฒนาแอปของ 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 ที่แยกกันเพื่อลดจำนวนบุคคลหรือบทบาทที่อยู่ในทั้ง 2 รายการ ACL
- ใช้การบันทึกและการตรวจสอบการเข้าถึงเพื่อตรวจหาและจัดการข้อยกเว้น ของกฎนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับรหัสโฆษณาอย่างมีความรับผิดชอบได้ที่การอ้างอิง API ของ
AdvertisingIdClient
ทำงานกับ FID และ GUID
โซลูชันที่ตรงไปตรงมาที่สุดในการระบุอินสแตนซ์ของแอปที่ทำงานบนอุปกรณ์คือการใช้รหัสการติดตั้ง Firebase (FID) และนี่คือโซลูชันที่แนะนำใน Use Case ที่ไม��ใช่โฆษณาส่วนใหญ่ เฉพาะอินสแตนซ์ของแอปที่ได้รับการจัดสรรเท่������้นที่เข้าถึงตัวระบุนี้ได้ และสามารถรีเซ็ตได้ (ค่อนข้าง) ง่ายเนื่องจากจะคงอยู่ตราบเท่าที่แอปยังคงติดตั้งอยู่
ด้วยเหตุนี้ FID จึงมีคุณสมบัติด้านความเป็นส่วนตัวที่ดีกว่าเมื่อเทียบกับ
รหัสฮาร์ดแวร์ที่กำหนดขอบเขตเป็นอุปกรณ์และรีเซ็ตไม่ได้ ดูข้อมูลเพิ่มเติมได้ที่
firebase.installations
การอ้างอิง API
ในกรณีที่ 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
- ข้อมูลเข้าสู่ระบบของผู้ใช้: ชื่อผู้ใช้
- ข้อมูลเข้าสู่ระบบใบรับรอง: cert และ cert type
- ข้อมูลเข้าสู่ระบบของซิม: ประเภท 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) ขึ้นไป ตัวระบุเหล่านี้จะใช้���ด้ผ่านสิทธิ์รันไทม์เท่านั้น ผู้ใช้อาจ ปิดสิทธิ์นี้ ดังนั้นแอปของคุณควรจัดการข้อยกเว้นเหล่านี้ อย่างเหมาะสม
สถานะการสมัครใช้บริการเครือข่ายมือถือ
ในกรณีนี้ คุณต้องเชื่อมโยงฟังก์ชันการทำงานของแอปกับการสมัครใช้บริการบางอย่างบนอุปกรณ์เคลื่อนที่ในอุปกรณ์ ตัวอย่างเช่น คุณอาจมีข้อกำหนดในการ ยืนยันสิทธิ์เข้าถึงฟีเจอร์บางอย่างของแอปพรีเมียมตามการ สมัครใช้บริการบนอุปกรณ์เคลื่อนที่ของอุปกรณ์ผ่านซิม
ตัวระบุที่แนะนำให้ใช้: รหัสการสมัครใช้บริการ API เพื่อ ระบุซิมที่ใช้ในอุปกรณ์
รหัสการสมัครใช้บริการจะให้ค่าดัชนี (เริ่มต้นที่ 1) สำหรับการระบุซิมที่ติดตั้ง (รวมถึงซิมจริงและซิมอิเล็กทรอนิกส์) ที่ใช้ในอุปกรณ์อย่างไม่ซ้ำกัน แอปของคุณสามารถเชื่อมโยงฟังก์ชันการทำงานกับ ข้อมูลการสมัครใช้บริการต่างๆ สำหรับซิมที่ระบุผ่านรหัสนี้ ค่านี้จะคงที่สำหรับซิมที่ระบุ เว้นแต่จะรีเซ็ตอุปกรณ์เป็นค่าเริ่มต้น อย่างไรก็ตาม อาจมีกรณีที่ ซิมเดียวกันมีรหัสการสมัครใช้บริการที่แตกต่างกันในอุปกรณ์ต่างๆ หรือซิมที่แตกต่างกันมีรหัสเดียวกันในอุปกรณ์ต่างๆ
ทำไมจึงแนะนำวิดีโอนี้
ปัจจุบันบางแอปอาจใช้ ICC
ID เพื่อวัตถุประสงค์นี้ เนื่องจาก ICC ID ไม่ซ้ำกันทั่วโลกและรีเซ็ตไม่ได้ เราจึงจำกัดการเข้าถึง
ไว้สำหรับแอปที่มีสิทธิ์ READ_PRIVILEGED_PHONE_STATE
ตั้งแต่ Android 10 เป็นต้นมา ตั้งแต่ Android 11 เป็นต้นไป Android ได้จำกัดการเข้าถึง ICCID ผ่าน API getIccId()
เพิ่มเติม ไม่ว่าระดับ API เป้าหมายของแอปจะเป็นเท่าใดก็ตาม แอปที่ได้รับผลกระทบควรย้ายข้อมูล��ป
ใช้รหัสการสมัครใช้บริการแทน
การลงชื่อเพียงครั้งเดียว
ในกรณีนี้ แอปของคุณจะมอบประสบการณ์การลงชื่อเพียงครั้งเดียว ซึ่งช่วยให้ผู้ใช้ เชื่อมโยงบัญชีที่มีอยู่กับองค์กรของคุณได้
ตัวระบุที่แนะนําให้ใช้: บัญชีที่เข้ากันได้กับผู้จัดการลูกค้า เช่น การลิงก์บัญชี Google
ทำไมจึงแนะนำวิดีโอนี้
การลิงก์บัญชี Google ช่วยให้ผู้ใช้เชื่อมโยงบัญชี Google ที่มีอยู่กับแอปของคุณได้ ซึ่งจะช่วยให้เข้าถึงผลิตภัณฑ์และบริการขององค์กรได้อย่างราบรื่นและปลอดภัยยิ่งขึ้น นอกจากนี้ คุณยังกําหนดขอบเขต OAuth ที่กําหนดเอง เพื่อแชร์เฉพาะข้อมูลที่จําเป็นได้ ซึ่งจะช่วยเพิ่มความไว้วางใจของผู้ใช้ด้วยการกําหนดวิธีใช้ข้อมูลของผู้ใช้อย่างชัดเจน
โฆษณา
การกำหนดเป้าหมาย
ในกรณีนี้ แอปจะสร้างโปรไฟล์ความสนใจของผู้ใช้เพื่อแสดงโฆษณาที่เกี่ยวข้องมากขึ้น
ตัวระบุที่แนะนำให้ใช้: หากแอปใช้รหัสสำหรับโฆษณาและอัปโหลดหรือ เผยแพร่ไปยัง Google Play รหัสดังกล่าวต้องเป็นรหัสโฆษณา
ทำไมจึงแนะนำวิดีโอนี้
นี่คือกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็น โซลูชันที่เหมาะสมที่สุด การใช้รหัสโฆษณาเป็นข้อบังคับสำหรับ กรณีการใช้งานโฆษณาตาม นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้
ไม่ว่าคุณจะแชร์ข้อมูลผู้ใช้ในแอปหรือไม่ หากคุณรวบรวมและใช้ข้อมูลดังกล่าวเพื่อวัตถุประสงค์ในการโฆษณา คุณต้องประกาศวัตถุประสงค์ในการโฆษณาในส่วนความปลอดภัยของข้อมูลของหน้าเนื้อหาแอปใน Play Console
การวัดผล
ในกรณีนี้ แอปจะสร้างโปรไฟล์ของผู้ใช้ตามพฤติกรรม ในแอปขององค์กรบนอ��ปกรณ์เดียวกัน
ตัวระบุที่แนะนำให้ใช้: API ของรหัสโฆษณาหรือตัวอ้างอิงการติดตั้ง Play
ทำไมจึงแนะนำวิดีโอนี้
นี่คือกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็น โซลูชันที่เหมาะสมที่สุด หากคุณใช้รหัสสำหรับกรณีการใช้งานโฆษณา รหัสดังกล่าว ต้องเป็นรหัสโฆษณาเนื่องจากผู้ใช้สามารถรีเซ็ตได้ ดูข้อมูลเพิ่มเติมได้ในนโยบายเนื้อหาสำหรับนักพัฒนาแอปของ Google Play
Conversion
ในกรณีนี้ คุณกำลังติดตาม Conversion เพื่อตรวจหาว่ากลยุทธ์การตลาด ประสบความสำเร็จหรือไม่
ตัวระบุที่แนะนำให้ใช้: API ของรหัสโฆษณาหรือตัวอ้างอิงการติดตั้ง Play
ทำไมจึงแนะนำวิดีโอนี้
นี่คือกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็น โซลูชันที่เหมาะสมที่สุด การใช้รหัสโฆษณาเป็นข้อบังคับสำหรับ กรณีการใช้งานโฆษณาตาม นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้
รีมาร์เก็ตติ้ง
ในกรณีนี้ แอปจะแสดงโฆษณาตามความสนใจก่อนหน้านี้ของผู้ใช้
ตัวระบุที่แนะนำให้ใช้: รหัสโฆษณา
ทำไมจึงแนะนำวิดีโอนี้
นี่คือกรณีการใช้งานที่เกี่ยวข้องกับโฆษณาซึ่งอาจต้องใช้รหัสที่ใช้ได้ ในแอปต่างๆ ขององค์กร ดังนั้นการใช้รหัสโฆษณาจึงเป็น โซลูชันที่เหมาะสมที่สุด การใช้รหัสโฆษณาเป็นข้อบังคับสำหรับ กรณีการใช้งานโฆษณาตาม นโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้
การวิเคราะห์แอป
ในกรณีนี้ แอปจะประเมินพฤติกรรมของผู้ใช้เพื่อช่วยคุณพิจารณาข้อมูลต่อไปนี้
- ผลิตภัณฑ์หรือแอปอื่นๆ ขององค์กรที่อาจเหมาะสำหรับผู้ใช้
- วิธีทำให้ผู้ใช้สนใจใช้แอปของคุณต่อไป
- วัดสถิติการใช้งานและการวิเคราะห์สําหรับผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้หรือผู้ใช้ที่ไม่ระบุตัวตน
วิธีแก้ปัญหาที่ทำได้มีดังนี้
- รหัสชุดแอป: รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ใน หลายแอปที่องค์กรของคุณเป็นเจ้าของได้ ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้ เพื่อวัตถุประสงค์ในการโฆษณา หากคุณกําลังกําหนดเป้าหมายอุปกรณ์ที่ขับเคลื่อนโดยบริการ Google Play เราขอแนะนําให้ใช้รหัสชุดแอป
- รหัส Firebase (FID): FID จะกำหนดขอบเขตไว้ที่แอปที่สร้าง FID ซึ่งจะ ป้องกันไม่ให้ใช้ตัวระบุเพื่อติดตามผู้ใช้ในแอปต่างๆ นอกจากนี้ยังรีเซ็ตได้ง่าย เนื่องจากผู้ใช้สามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ กระบวนการสร้าง FID นั้นตรงไปตรงมา โป��ดดูคู่มือการติดตั้ง Firebase
การพัฒนาแอป
รายงานข้อขัดข้อง
ในกรณีนี้ แอปของคุณจะรวบรวมข้อมูลเกี่ยวกับเวลาและสาเหตุที่แอปขัดข้องในอุปกรณ์ของผู้ใช้
ตัวระบุที่แนะนำให้ใช้: FID หรือรหัสชุดแอป
ทำไมจึงแนะนำวิดีโอนี้
FID มีขอบเขตอยู่ที่แอปที่สร้างขึ้น ซึ่งจะป้องกันไม่ให้ใช้ตัวระบุเพื่อติดตามผู้ใช้ในแอปต่างๆ นอกจากนี้ยังรีเซ็ตได้ง่าย เนื่องจากผู้ใช้สามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ กระบวนการสร้าง FID นั้นตรงไปตรงมา โปรดดูคู่มือการติดตั้ง Firebase รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ในแอปหลายแอปที่องค์กรของคุณเป็นเจ้าของได้ ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้เพื่อวัตถุประสงค์ในการโฆษณา
การรายงานประสิทธิภาพ
ในกรณีนี้ แอปจะรวบรวมเมตริกประสิทธิภาพ เช่น เวลาในการโหลดและ การใช้แบตเตอรี่ เพื่อช่วยปรับปรุงคุณภาพของแอป
ตัวระบุที่แนะนำให้ใช้ การตรวจสอบประสิทธิภาพ Firebase
ทำไมจึงแนะนำวิดีโอนี้
Firebase Performance Monitoring ช่วยให้คุณมุ่งเน้นที่เมตริกที่สําคัญที่สุด และทดสอบผลกระทบของการเปลี่ยนแปลงล่าสุดในแอป
การทดสอบแอป
ในกรณีนี้ แอปจะประเมินประสบการณ์ของผู้ใช้กับแอปของคุณเพื่อการทดสอบ หรือการแก้ไขข้อบกพร่อง
ตัวระบุที่แนะนำให้ใช้: FID หรือรหัสชุดแอป
ทำไมจึงแนะนำวิดีโอนี้
FID มีขอบเขตอยู่ที่แอปที่สร้างขึ้น ซึ่งจะป้องกันไม่ให้ใช้ตัวระบุเพื่อติดตามผู้ใช้ในแอปต่างๆ นอกจากนี้ยังรีเซ็ตได้ง่าย เนื่องจากผู้ใช้สามารถล้างข้อมูลแอปหรือติดตั้งแอปอีกครั้งได้ กระบวนการสร้าง FID นั้นตรงไปตรงมา โปรดดูคู่มือการติดตั้ง Firebase รหัสชุดแอปช่วยให้คุณวิเคราะห์พฤติกรรมของผู้ใช้ในแอปหลายแอปที่องค์กรของคุณเป็นเจ้าของได้ ตราบใดที่คุณไม่ได้ใช้ข้อมูลผู้ใช้เพื่อวัตถุประสงค์ในการโฆษณา
การติดตั้งข้ามอุปกรณ์
ในกรณีนี้ แอปของคุณต้องระบุอินสแตนซ์ที่ถูกต้องของแอปเมื่อ ติดตั้งในอุปกรณ์หลายเครื่องสำหรับผู้ใช้รายเดียวกัน
ตัวระบุที่แนะนำให้ใช้: FID หรือ GUID
ทำไมจึงแนะนำวิดีโอนี้
FID ออกแบบมาเพื่อวัตถุประสงค์นี้โดยเฉพาะ ขอบเขตของ FID จำกัดไว้ที่แอปเพื่อไม่ให้ใช้ติดตามผู้ใช้ในแอปต่างๆ ได้ และจะรีเซ็ตเมื่อมีการติดตั้งแอปอีกครั้ง ในกรณีที่พบไม่บ่อยนักซึ่ง FID ไม่เพียงพอ คุณยังใช้ GUID ได้ด้วย
ความปลอดภัย
การตรวจจับการละเมิด
ในกรณีนี้ คุณก���ลังพยายามตรวจหาอุปกรณ์ปลอมหลายเครื่องที่โจมตีบริการแบ็กเอนด์
ตัวระบุที่แนะนำให้ใช้: โทเค็นความสมบูรณ์ของ Google Play Integrity API
ทำไมจึงแนะนำวิดีโอนี้
หากต้องการยืนยันว่าคำขอมาจากอุปกรณ์ Android ของแท้ ไม่ใช่โปรแกรมจำลองหรือโค้ดอื่นๆ ที่ปลอมแปลงอุปกรณ์อื่น ให้ใช้ Google Play Integrity API
การฉ้อโกงผ่านโฆษณา
ในกรณีนี้ แอปจะตรวจสอบว่าการแสดงผลและการกระทําของผู้ใช้ในแอป เป็นของจริงและตรวจสอบได้
ตัวระบุที่แนะนำให้ใช้: รหัสโฆษณา
ทำไมจึงแนะนำวิดีโอนี้
กรณีการใช้งานโฆษณาต้องใช้รหัสโฆษณาตามนโยบายเนื้อหาสำหรับนักพัฒนาแอป Google Play เนื่องจากผู้ใช้สามารถรีเซ็ตรหัสได้
การจัดการสิทธิ์ดิจิทัล (DRM)
ในกรณีนี้ แอปของคุณต้องการปกป้องการเข้าถึงทรัพย์สินทางปัญญาหรือเนื้อหาที่ต้องชำระเงินอย่างไม่สุจริต
ตัวระบุที่แนะนำให้ใช้: การใช้ FID หรือ GUID จะบังคับให้ผู้ใช้ต้อง ติดตั้งแอปอีกครั้งเพื่อหลีกเลี่ยงขีดจำกัดเนื้อหา ซึ่งเป็นภาระที่เพียงพอที่จะยับยั้งคนส่วนใหญ่ หากการป้องกันนี้ไม่เพียงพอ Android มี DRM API ซึ่งใช้ เพื่อจำกัดการเข้าถึงเนื้อหาได้ โดยจะมีตัวระบุต่อ APK ซึ่งก็คือ รหัส Widevine
ค่ากำหนดของผู้ใช้
ในกรณีนี้ แอปจะบันทึกสถานะผู้ใช้ต่ออุปกรณ์ในแอป โดยเฉพาะ สำหรับผู้ใช้ที่ไม่ได้ลงชื่อเข้าใช้ คุณอาจโอนสถานะนี้ไปยังแอปอื่น ที่ลงนามด้วยคีย์เดียวกันในอุปกรณ์เดียวกัน
ตัวระบุที่แนะนำให้ใช้: FID หรือ GUID
ทำไมจึงแนะนำวิดีโอนี้
เราไม่แนะนำให้เก็บข้อมูลไว้เมื่อมีการติดตั้งแอปอีกครั้ง เนื่องจากผู้ใช้อาจต้องการรีเซ็ตค่ากำหนดโดยการติดตั้งแอปอีกครั้ง