จดทะเบียนรั้ว

แอปของคุณจะได้รับ Callback จาก PendingIntent ทุกครั้งที่สถานะของรั้วมีการเปลี่ยนแปลง แอปของคุณต้องลงทะเบียนรั้วแต่ละรั้วก่อนจึงจะใช้งานได้

ลงทะเบียนรั้ว

หากต้องการลงทะเบียนรั้ว ให้ใช้ FenceClient, และหากต้องการสร้าง FenceUpdateRequest, ให้ใช้ FenceClient.updateFences() เรียก addFence() สำหรับรั้วแต่ละรั้วที่ต้องการเพิ่ม

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

  • อินสแตนซ์ไคลเอ็นต์ API ของบริการ Google Play
  • อินสแตนซ์ AwarenessFence ซึ่งเป็นรั้วเอง
  • PendingIntent เพื่อจัดการการเปลี่ยนแปลงสถานะ
  • คีย์รั้ว ซึ่งเป็นสตริงที่ระบุรั้วและจับคู่กับคู่ AwarenessFence-PendingIntent

ตัวอย่างโค้ดต่อไปนี้แสดงเมธอดที่เรียก updateFences() เพื่อลงทะเบียนรั้ว

    Awareness.getFenceClient(this).updateFences(new FenceUpdateRequest.Builder()
        .addFence(FENCE_KEY, exercisingWithHeadphonesFence, mPendingIntent)
        .build())
        .addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                Log.i(TAG, "Fence was successfully registered.");
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.e(TAG, "Fence could not be registered: " + e);
            }
        });

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

ยกเลิกการลงทะเบียนรั้ว

หากต้องการยกเลิกการลงทะเบียนรั้ว ให้เรียก getFenceClient().updateFences(), และใช้ FenceUpdateRequest.Builder() เพื่อสร้างคำขออัปเดตรั้ว จากนั้นเรียก removeFence() ดังที่แสดงในตัวอย่างต่อไปนี้

 Awareness.getFenceClient(this).updateFences(new FenceUpdateRequest.Builder()
     .removeFence(FENCE_KEY)
     .build())
     .addOnSuccessListener(new OnSuccessListener<Void>() {
         @Override
         public void onSuccess(Void aVoid) {
             Log.i(TAG, "Fence was successfully unregistered.");
         }
     })
     .addOnFailureListener(new OnFailureListener() {
         @Override
         public void onFailure(@NonNull Exception e) {
             Log.e(TAG, "Fence could not be unregistered: " + e);
         }
     });

ขั้นตอนถัดไป: จัดการ Callback ของรั้ว