ปัญหาการอนุญาต Ionic Geolocation บน iOS

ฉันมีปัญหากับ ปลั๊กอิน GeoLocation ที่ ionic3

ฉันเพิ่มของนำเข้าทั้งหมดแล้ว ส่วน <edit-config> ก็เช่นกัน ฉันเห็นสิ่งนี้ในไฟล์ plist ของฉัน:

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

ดังนั้นฉันคิดว่ามันได้ผล แต่มันไม่ใช่; มันใช้งานได้กับ Android แต่ไม่ใช่สำหรับ iOS ฉันเรียกวิธีนี้:

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

ฉันได้รับ Error.code 2 และ Error.message: "Origin is not have allowance to use Geolocation service"

ฉันควรทำอย่างไรดี?


person Torben G    schedule 08.08.2018    source แหล่งที่มา


คำตอบ (2)


ฉันมีปัญหาตรงนี้ - ฉันต้องเพิ่มการตั้งค่าความเป็นส่วนตัวนี้ด้วยตนเองใน *.plist ไฟล์ใน XCode เอง (พบในทรัพยากร/)

ภายใต้ Key คุณพิมพ์ Privacy - Location When In Use Usage Description หรืออย่างน้อยเริ่มพิมพ์ จากนั้นระบบจะเติมข้อความอัตโนมัติ Type ควรเป็น String และ Value ควรเป็นข้อความที่คุณต้องการให้ป๊อปอัปแก่ผู้ใช้เพื่ออธิบายว่าทำไมคุณจึงต้องเข้าถึงข้อมูลตำแหน่ง

person Eli Cohn    schedule 08.08.2018
comment
โอเค มันได้ผล อีกครั้ง. แต่ด้วยฟังก์ชัน setTimeout เป็นไปได้ไหมที่โค้ดของฉันทำงานเร็วขึ้นแล้ว GPS ก็พร้อม? - person Torben G; 09.08.2018
comment
คุณมีสิ่งนี้เมื่อคุณพยายามหาตำแหน่งหรือไม่? 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
ใช่และฉันได้รับข้อผิดพลาด เมื่อฉันตั้งค่าการหมดเวลา มันใช้งานได้และค่าต่างๆ จะปรากฏขึ้น - person Torben G; 09.08.2018
comment
อาจลองลบและอ่านแพลตฟอร์ม forum.ionicframework คอม/t/ - person Eli Cohn; 09.08.2018
comment
แต่ตอนนี้มันใช้งานได้แล้ว ฉันเพิ่มรหัสความเป็นส่วนตัวตามที่คุณบอกและมันก็ใช้งานได้ :) Iphone ขออนุญาตระบุตำแหน่งทางภูมิศาสตร์ แต่หากฉันเรียกใช้ฟังก์ชันโดยไม่หมดเวลา มันจะทำให้ฉันมีข้อผิดพลาด แต่ถ้าฉันรวม setTimeout ฉันจะได้ค่าลองจิจูดและละติจูด - person Torben G; 10.08.2018
comment
คุณไม่ควรแก้ไขการตั้งค่าใน Xcode ด้วยตนเอง มันจะถูกลบออกเมื่อคุณเพิ่มแพลตฟอร์มของคุณอีกครั้ง นี่ไม่ใช่คำตอบที่ถูกต้อง - person Sinan Samet; 06.08.2020

ฉันมีปัญหาเดียวกัน. ฉันใช้ Ionic v4 กับ React, Cordova v9, cordova-ios v4.5.5 ปัญหาในกรณีของฉันเกิดขึ้นเพราะฉันไม่ได้ฉีดสคริปต์ Cordova JS ลงใน webview เพื่อแก้ไขฉันได้เพิ่มสคริปต์ Bash ต่อไปนี้ลงใน Cordova ก่อนที่จะเตรียม hooks ((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

โดยที่ www/index.html คือเส้นทางไปยังไฟล์ HTML หลักของแอปพลิเคชันของคุณซึ่งสัมพันธ์กับรูทโปรเจ็กต์ Cordova

บรรทัดสุดท้ายจะเพิ่มแท็ก <script src="cordova.js"></script> ที่ส่วนท้ายของไฟล์ HTML เมื่อคุณเรียกใช้ cordova prepare ios ด้วยเหตุนี้ webview จึงเริ่มโหลดสคริปต์ Cordova รวมถึงปลั๊กอินระบุตำแหน่งทางภูมิศาสตร์ และแอปพลิเคชันเริ่มขออนุญาตใช้ตำแหน่งทางภูมิศาสตร์

person Finesse    schedule 18.10.2019