แอปของคุณจะได้รับโค้ดเรียกกลับภายในวันที่ 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);
}
});
ขั้นตอนถัดไป: จัดการการเรียกกลับด้วยรั้ว