每當圍欄狀態變更時,應用程式會收到 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);
}
});
下一步:管理圍欄回呼。