ตรวจหาการละเมิดซ้ำโดยใช้การเรียกคืนอุปกรณ์ (เบต้า)

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

การเรียกคืนของอุปกรณ์ทำงานอย่างไร

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

  • อ่านข้อมูลของแต่ละอุปกรณ์: คุณสามารถอ่านค่าที่กำหนดเองหรือ บิต 3 ค่าสำหรับ อุปกรณ์แต่ละเครื่องเมื่อได้รับผลการตรวจสอบความสมบูรณ์ คุณสามารถกำหนดความหมายของค่าเหล่านี้ได้เอง เช่น คุณสามารถถือว่าค่าเหล่านี้เป็นแฟล็ก 3 รายการแยกกัน หรือรวมค่าเหล่านี้เพื่อแสดงป้ายกำกับที่กำหนดเอง 8 รายการ
  • แก้ไขข้อมูลของแต่ละอุปกรณ์: หลังจากได้รับโทเค็นความสมบูรณ์แล้ว คุณสามารถใช้ โทเค็นดังกล่าวเพื่อทำการเรียก API จากเซิร์ฟเวอร์ไปยังเซิร์ฟเวอร์ของ Google Play เพื่อแก้ไขค่าอย่างน้อย 1 ค่า คุณมีเวลาสูงสุด 14 วันในการใช้โทเค็น ซึ่งช่วยให้คุณแก้ไขค่าได้หาก เช่น การละเมิดปรากฏให้เห็นในช่วง 2 สัปดาห์หลังจากที่คุณทำการตรวจสอบความสมบูรณ์ครั้งแรก เมื่อคุณแก้ไขค่า ระบบจะจัดเก็บเดือนและปีที่ทำการแก้ไขด้วย

ข้อกำหนดเบื้องต้นและข้อควรพิจารณาเกี่ยวกับการเรียกคืนของอุปกรณ์

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

การเรียกคืนของอุปกรณ์มีข้อกำหนดเบื้องต้นดังนี้

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

การเรียกคืนของอุปกรณ์มีข้อควรพิจารณาเกี่ยวกับช่วงเวลาดังนี้

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

สำหรับนักพัฒนาแอปที่มีแอปหลายแอปและนักพัฒนาแอปที่โอนแอป การเรียกคืนอุปกรณ์จะทำงานดังนี้

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

เปิดการเรียกคืนของอุปกรณ์

เมื่อพร้อมแล้ว ให้เปิดการเรียกคืนของอุปกรณ์ใน Play Console โดยทำดังนี้

  1. ลงชื่อเข้าใช้ Play Console
  2. เลือกแอปที่จะใช้การเรียกคืนของอุปกรณ์
  3. ไปที่ได้รับการปกป้องจาก Google Play จากเมนูด้านซ้าย
  4. คลิกจัดการ ข้าง Play Integrity API
  5. คลิกเปลี่ยนการตอบกลับ ในส่วนการตอบกลับของหน้า
  6. เปิดการเรียกคืนของอุปกรณ์
  7. คลิก "บันทึกการเปลี่ยนแปลง"

เมื่อคุณเปิดหรือปิดการเรียกคืนของอุปกรณ์ ระบบจะลบการตอบกลับการทดสอบ Play Integrity API ที่คุณตั้งค่าไว้ใน Play Console และคุณจะต้องสร้างการตอบกลับเหล่านั้น อีกครั้ง

อ่านค่าการเรียกคืนของอุปกรณ์

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

แก้ไขค่าการเรียกคืนของอุปกรณ์

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

playintegrity.googleapis.com/v1/PACKAGE_NAME/deviceRecall:write -d \
'{
  "integrityToken": "INTEGRITY_TOKEN",
  "newValues": {
    "bitFirst": true,
    "bitThird": false
  }
}'
newValues.BitFirst = true // ForceSendFields optional for value true
newValues.BitSecond = false // ForceSendFields required for value false
newValues.BitThird = nil // do not set ForceSendFields for unspecified bits
newValues.ForceSendFields = []string{"BitSecond"}