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

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

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

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

จําเป็นต้องมีต่อไปนี้เพื่อจดทะเบียนและยกเลิกการลงทะเบียนรั้ว

  • อินสแตนซ์ไคลเอ็นต์ของ Google Play Services API
  • อินสแตนซ์ 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 เพียงรายการเดียวสําหรับการเรียกกลับไปยังรั้วทั้งหมด หากคุณใช้คีย์รั้วที่ลงทะเบียนไว้กับการเรียก 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);
         }
     });

ขั้นตอนถัดไป: จัดการการเรียกกลับด้วยรั้ว