フェンスを登録する

アプリはフェンスの状態が変化するたびに、PendingIntent によるコールバックを受け取ります。アプリを使用するには、各フェンスを登録する必要があります。

フェンスを登録する

フェンスを登録するには FenceClient を使用し、FenceUpdateRequest を作成するには FenceClient.updateFences() を使用します。追加するフェンスごとに addFence() を呼び出します。

フェンスを登録または登録解除するには、次のものが必要です。

  • Google Play 開発者サービス API クライアント インスタンス。
  • AwarenessFence インスタンス。これはフェンス自体です。
  • 状態の変化を処理する PendingIntent
  • フェンスキー。フェンスを識別して AwarenessFencePendingIntent ペアにマッピングします。

次のコードサンプルは、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 メソッドは必要な数だけ使用できますが、すべてのフェンス コールバックに 1 つの 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);
         }
     });

次のステップ: フェンス コールバックを管理する