Zarejestruj płot

Aplikacja otrzymuje wywołanie zwrotne przez PendingIntent za każdym razem, gdy zmienia się stan obszaru. Zanim będzie można używać każdego obszaru, aplikacja musi go zarejestrować.

Rejestrowanie ogrodzenia

Aby zarejestrować ogrodzenie, użyj FenceClient, a aby utworzyć FenceUpdateRequest, użyj FenceClient.updateFences(). Wywołaj funkcję addFence() dla każdego ogrodzenia, które chcesz dodać.

Aby zarejestrować i wyrejestrować obszar, musisz wykonać te czynności:

  • Instancja klienta interfejsu API usług Google Play.
  • Instancja AwarenessFence, czyli sam płot.
  • PendingIntent do obsługi zmian stanu.
  • Klucz ogrodzenia, czyli ciąg znaków, który identyfikuje ogrodzenie i jest powiązany z parą AwarenessFence-PendingIntent.

Poniższy przykładowy kod pokazuje metodę, która wywołuje updateFences(), aby zarejestrować ogrodzenie:

    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);
            }
        });

Aby utworzyć wiele ogrodzeń z unikalnymi kluczami ogrodzenia, wywołaj funkcję addFence() kilka razy. Możesz użyć dowolnej liczby metod PendingIntent, ale zalecamy używanie jednej metody PendingIntent w przypadku wszystkich wywołań zwrotnych związanych z obszarem. Jeśli użyjesz klucza ogrodzenia, który został już zarejestrowany do wywoływania funkcji addFence(), wartości AwarenessFence i PendingIntent zostaną nadpisane dla tego klucza.

Wyrejestrowywanie ogrodzenia

Aby wyrejestrować obszar, wywołaj funkcję getFenceClient().updateFences() i użyj FenceUpdateRequest.Builder(), aby utworzyć żądanie aktualizacji obszaru. Następnie wywołaj funkcję removeFence(), jak pokazano w tym przykładzie:

 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);
         }
     });

Dalszy krok: zarządzanie wywołaniami zwrotnymi dotyczącymi obszaru.