Huawei Location Kit dla React Native, metoda addFusedLocationEventListener nie powoduje wywołania zwrotnego

0

Pytanie

Skonfiguruj zestaw lokalizacji huawei do ustalania lokalizacji urządzenia w godzinach nadliczbowych, gdy są używane aplikacje, wykonaj konfigurację z https://developer.huawei.com/consumer/en/doc/HMS-Plugin-Guides-V1/config-agc-0000001050197382-V1

u nas nie ma rzeczywistego urządzenia huawei, korzystamy z chmury debugowanie

Spróbuj zrealizować, aby obserwować lokalizację gps w godzinach nadliczbowych z tym wszystkim składnią

// ------ Parent ------
// this put on the parent useEffect
HMSLocation.LocationKit.Native.init()
 .then(() => console.log('----------Success Initialize----------'))
 .catch((err) => alert(err.message))

// ------ Child ------
const stopWatchingLocation = () => {
  if (hasHms) {
    HMSLocation.FusedLocation.Events.removeFusedLocationEventListener(
      (res: LocationResult) => console.log('remove add listener', res),
    )
  } 
}

const startWatchingLocation = async () => {
  if (hasHms) {
      HMSLocation.FusedLocation.Native.requestLocationUpdatesWithCallbackEx(
          hwGeolocationOptions,
    )
      .then((res) => console.log('success request', res))
      .catch((error) => console.log('failed request', error))
    
    HMSLocation.FusedLocation.Events.addFusedLocationEventListener(
      (res: LocationResult) => console.log('result', res.lastHWLocation)
    )
  }
}

// implementation of add & remove event listener
useEffect(() => {
  startWatchingLocation() // inside here invoke addFusedLocationEventListener
  return stopWatchingLocation // inside here invoke, cleanup function removeFusedLocationEventListener
}, [])

Kod pomyślnie powoduje init, requestLocationUpdatesWithCallbackExale wejście do konsoli z addFusedLocationEventListener nigdy nie zasłaniaj

Już włącz rozdzielczość hms core app dla lokalizacji, hasPermission również zwrócona wartość true

Próbowałem locationRequest rozwiązania problemu z komentarzami react native @hmscore/react-native-hms-lokalizacja, nadal nie działa

Jak możemy to naprawić??

1

Najlepsza odpowiedź

1

Myślę, że to może być problem z pomocą. Funkcja addingFusedLocationEventListener polega na tym, aby dodać FusedLocationEvent Słuchacz. Funkcja ta działa tylko wtedy, gdy wystąpi zdarzenie FusedLocationEvent.

W swoim opisie usuń removeFusedLocationEventListener po addFusedLocationEventListenerdodany detektor również usuwane.

Ponadto, zaleca się korzystać z niezależnych funkcji zamiast bezpośrednio określić ich parametrów wejściowych.

handleLocationUpdate = (locationResult) => { console.log(locationResult); this.setState({ locationCallbackResult: locationResult }); }

requestLocationCallbackWithListener = () => {
  HMSLocation.FusedLocation.Native.requestLocationUpdatesWithCallbackEx(locationRequest)
    .then((res) => this.setState({ reqCode: res.requestCode }))
    .catch((err) => alert(err.message));
  HMSLocation.FusedLocation.Events.addFusedLocationEventListener(this.handleLocationUpdate);
  this.setState({ autoUpdateEnabled: true });
};

enter image description here

2021-11-24 07:20:30

Zaktualizował swój kod, umieściliśmy removeFusedLocationEventListener nie raz po addFusedLocationEventListener, stawiamy removeFusedLocationEventListener wewnątrz funkcji czyszczenia useEffect, nawet gdy usuwamy removeFusedLocationEventListener nie powoduje addFusedLocationEventListener oddzwonienie też
Vina

Cześć @Shirley, odkryłem, że instalacja priorytetu zapytania lokalizacji na 200 nie działa, działa tylko z priorytetem 100, wiesz dlaczego? lub jak możemy zainstalować lokalizacja z dużą dokładnością?
Vina

cześć@Vina, myślę, że ustawienie priorytetu zapytania lokalizacji na 100 może również spełniać wymagania. Według dokumentów, obecnie precyzyjna funkcja lokalizacji Location Kit jest dostępna tylko w Shenzhen, Guangzhou, Suzhou, Hangzhou, Chongqing, Chengdu, Tiencinie i Dongguan w Chinach kontynentalnych. W niedalekiej przyszłości będzie wsparcie dla większej liczby miast.
shirley

Stwierdzono, wielkie dzięki @shirley za pomoc :)
Vina

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................