Masalah Izin Geolokasi Ionic di iOS

Saya mempunyai masalah dengan Plugin GeoLocation di ionic3.

Saya menambahkan semua barang impor. Bagian <edit-config> juga. Saya dapat melihat ini di file plist saya:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Get Position</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Get position</string>

Jadi menurut saya itu berhasil. Tapi ternyata tidak; ini berfungsi untuk Android tetapi tidak untuk iOS. Saya menyebut metode ini:

this.geolocation.getCurrentPosition().then((resp) => {
    alert("geo " + resp.coords.latitude);
    // resp.coords.latitude
    // resp.coords.longitude
   }).catch((error) => {
     alert(error.code);
     alert(error.message);
   });

Saya mendapat Error.code 2 dan Error.message: "Origin tidak memiliki izin untuk menggunakan layanan Geolokasi".

Apa yang harus saya lakukan?


person Torben G    schedule 08.08.2018    source sumber


Jawaban (2)


Saya mengalami masalah persis seperti ini -- saya harus menambahkan pengaturan privasi ini secara manual di file *.plist di XCode itu sendiri (ditemukan di resources/).

Di bawah Key Anda mengetik Privacy - Location When In Use Usage Description, atau setidaknya mulai mengetiknya, dan itu akan dilengkapi secara otomatis. Type harus berupa String dan Value harus berupa pesan yang ingin Anda munculkan kepada pengguna yang menjelaskan mengapa Anda memerlukan akses ke data lokasi.

person Eli Cohn    schedule 08.08.2018
comment
Oke, itu berhasil. Lagi. Tetapi dengan fungsi setTimeout. Mungkinkah kode saya berjalan lebih cepat daripada GPS yang siap? - person Torben G; 09.08.2018
comment
Apakah Anda mengalami hal seperti ini saat mencoba mendapatkan lokasinya? this.geolocation.getCurrentPosition().then((pos) => { this.latitude = pos.coords.latitude; this.longitude = pos.coords.longitude; console.log('Successfully got location'); }).catch((error) => { console.log('Error getting location', error); }); - person Eli Cohn; 09.08.2018
comment
Ya dan saya mendapatkan Kesalahan. Ketika saya menetapkan batas waktu, itu berfungsi dan Nilai ditampilkan. - person Torben G; 09.08.2018
comment
Mungkin mencoba menghapus dan membaca platformnya? forum.ionicframework. com/t/ - person Eli Cohn; 09.08.2018
comment
Tapi itu berhasil sekarang. Saya menambahkan kunci privasi seperti yang Anda katakan dan berhasil :) Iphone meminta Izin Geolokasi. Tetapi jika saya menjalankan Fungsi tanpa batas waktu, saya akan mendapat kesalahan. Tetapi jika saya menyelesaikan setTimeout, saya mendapatkan nilai bujur dan lintang. - person Torben G; 10.08.2018
comment
Anda tidak boleh mengedit pengaturan di Xcode secara manual. Itu akan dihapus ketika Anda menambahkan kembali platform Anda. Ini bukanlah jawaban yang tepat. - person Sinan Samet; 06.08.2020

Saya memiliki masalah yang sama. Saya menggunakan Ionic v4 dengan React, Cordova v9, cordova-ios v4.5.5. Masalah dalam kasus saya terjadi karena saya tidak memasukkan skrip Cordova JS ke tampilan web. Untuk memperbaikinya, saya menambahkan skrip Bash berikut ke Cordova sebelum menyiapkan kait ((cordova root)/hooks/before_prepare/inject_cordova.js):

#!/bin/bash
set -e
sed -E -i "" -e "s_(<head[^>]*>)_\1<script src=\"cordova.js\"></script>_" www/index.html

Dimana www/index.html adalah jalur ke file HTML utama aplikasi Anda yang berhubungan dengan root proyek cordova.

Baris terakhir menambahkan tag <script src="cordova.js"></script> di akhir file HTML saat Anda menjalankan cordova prepare ios. Hasilnya, tampilan web mulai memuat skrip Cordova termasuk plugin geolokasi dan aplikasi mulai meminta izin untuk menggunakan geolokasi.

person Finesse    schedule 18.10.2019