アプリはフェンスの状態が変化するたびに、PendingIntent
によるコールバックを受け取ります。アプリを使用するには、各フェンスを登録する必要があります。
フェンスを登録する
フェンスを登録するには FenceClient
を使用し、FenceUpdateRequest
を作成するには FenceClient.updateFences()
を使用します。追加するフェンスごとに addFence()
を呼び出します。
フェンスを登録または登録解除するには、次のものが必要です。
- Google Play 開発者サービス 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
メソッドは必要な数だけ使用できますが、すべてのフェンス コールバックに 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);
}
});
次のステップ: フェンス コールバックを管理する。