แอปของคุณจะได้รับ 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 ของรั้ว