В Ionic 4 Android не работает геолокация - PullRequest
0 голосов
/ 07 февраля 2019

Чтобы получить текущее местоположение на устройстве Android, я использовал плагин Ionic 4 Geolocation и следовал инструкциям, приведенным в документации.При запуске команды Ionic CLI ionic cordova запустите android --l --c, он запустит приложение и выведет диалоговое окно разрешения доступа.Но выдает ошибку вроде getCurrentPosition() and watchPosition() are deprecated on insecure origins. To use this feature, you should consider switching your application to a secure origin.

{
   PositionErrorcode: 1message: "Only secure origins are allowed ."__proto__: PositionError
   home.page.ts:37Error getting location PositionError
}

Также после прочтения блогов и тем на форуме я просто использовал команду cli ionic cordova run android (без перезагрузки).В этом случае приложение не загружалось, так как источники не были загружены должным образом.

Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///polyfills.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///styles.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///cordova.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///vendor.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///main.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///assets/icon/favicon.png Failed to load resource: net::ERR_FILE_NOT_FOUND

Я также попытался установить местоположение GPS в эмуляторе, используя расширенный контроль эмулятора.Пробовал в реальном устройстве, и у него также есть такие проблемы.

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

В двух разделах я постараюсь помочь, у меня были те же две проблемы, я объясняю, как мне удалось " исправить " их, возможно, это работает и для вас.

(1) Относительно этой ошибки:

Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///polyfills.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///styles.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///cordova.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///vendor.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///main.js Failed to load resource: net::ERR_FILE_NOT_FOUND
file:///assets/icon/favicon.png Failed to load resource: net::ERR_FILE_NOT_FOUND

Честно говоря, я не уверен, что именно вызывает это, я все еще исследую основную причину, поскольку у меня была эта проблема, на случай, если она вернется.Странно, у меня была эта проблема с Android, но не с платформой iOS.Чтобы исправить это, я удалил все плагины и снова установил их:

// Inside your app's folder
$ rm -rf plugins 
// Just in case (I didn't do it, but who knows!) remove and add the platform again
$ ionic cordova platform remove android
$ ionic cordova platform add android

После этого эти ошибки исчезли.

(2) Относительно геолокации

Да, это правда, я прочитал документацию по HTTP / HTTP и у меня также есть предупреждение при использовании через браузеры.Я не работал с Geolocation на устройствах (iOS и Android), он просто не получил никакого жизненного сигнала после написания кода, о котором говорилось в документации Ionic.Я думал, что это из-за проблемы с геолокацией (HTTP / HTTP) на Chrome 50 .

Итак, я выяснил, что на устройствах (Android и iOS) геолокация работает нормально, ЕСЛИ вы запустите их после того, как Платформа будет готова (или используйте параметр Timeout, в качестве альтернативы).Код, который заставлял устройства получать местоположение пользователя, был таким:

   this.platform.ready().then(() => {
        this.geolocation.getCurrentPosition().then((loc) => {
              userLatitude  = loc.coords.latitude;
              userLongitude = loc.coords.longitude;
              map.flyTo({userLatitude:userLongitude}, MAX_ZOOM - 2, ZOOM_PAN_OPTIONS);
        }).catch((error) => {
            this.utils.error('Error getting location: ' + error.message);
        }); 
   };

Я не тестировал, но другой альтернативой может быть использование параметра Timeout в методе:

this.geolocation.getCurrentPosition({ timeout: 30000 }).then((loc) => { ...

Я думаю, что есть много переменных, касающихся всего контекста, которые могут заставить это работать или нет.В моем случае это происходит так.

0 голосов
/ 07 февраля 2019

Доступ к местоположению пользователя не рекомендуется в незащищенном (HTTP) контексте.См. https://www.chromium.org/Home/chromium-security/prefer-secure-origins-for-powerful-new-features.

Это проблема только при использовании прямой перезагрузки.

Это будет работать ionic cordova build android

...