註冊圍欄

每當圍欄狀態變更時,應用程式會收到 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() 的圍欄金鑰,則該金鑰的 AwarenessFencePendingIntent 值會覆寫該值。

取消註冊圍欄

如要取消註冊圍欄,請呼叫 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);
         }
     });

下一步:管理圍欄回呼