如何检查围栏键是否注册了 Awareness API?

How to check if a fence key is registered for Awareness API?

我有 2 个关于 Google 意识围栏的问题 API:

  1. 我们有没有一种方法可以检查具有给定栅栏键的栅栏是否已注册?
  2. 如果我不小心用同一个fence key注册了2个fence会怎样?
  1. 要检查围栏是否已注册,请创建 FenceQueryRequest 并检查 FenceStateMap 是否包含围栏密钥。

示例代码如下:

protected void queryFence(final String fenceKey) {
    Awareness.FenceApi.queryFences(mGoogleApiClient,
            FenceQueryRequest.forFences(Arrays.asList(fenceKey)))
            .setResultCallback(new ResultCallback<FenceQueryResult>() {
                @Override
                public void onResult(@NonNull FenceQueryResult fenceQueryResult) {
                    if (!fenceQueryResult.getStatus().isSuccess()) {
                        Log.e(TAG, "Could not query fence: " + fenceKey);
                        return;
                    }
                    FenceStateMap map = fenceQueryResult.getFenceStateMap();
                    if (!map.getFenceKeys().contains(fenceKey)) {
                      // Fence is not registered. 
                    }
                }
            });
}
  1. 如果你用同一个fence key注册了2个fence,第二个fence会替换第一个fence。参见 FenceUpdateRequest documentation.