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