フェンスの状態が変化するたびに、アプリは 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);
}
});
次のステップ: フェンス コールバックを管理する。