QT/Qml PositionSource не может получить доступ к расположению из-за привилегий в OS X
Мне нужно получить информацию о текущем местоположении устройства с помощью Qt/Qml/Quick и C++ в Mac OS X. Я проверяю это:
PositionSource {
id: src
updateInterval: 60000
active: true
preferredPositioningMethods: PositionSource.AllPositioningMethods
Component.onCompleted: {
src.start()
src.update()
var supPos = "Unknown"
if (src.supportedPositioningMethods == PositionSource.NoPositioningMethods) {
supPos = "NoPositioningMethods"
} else if (src.supportedPositioningMethods == PositionSource.AllPositioningMethods) {
supPos = "AllPositioningMethods"
} else if (src.supportedPositioningMethods == PositionSource.SatellitePositioningMethods) {
supPos = "SatellitePositioningMethods"
} else if (src.supportedPositioningMethods == PositionSource.NonSatellitePositioningMethods) {
supPos = "NonSatellitePositioningMethods"
}
console.log("Position Source Loaded || Supported: "+supPos+" Valid: "+valid);
}
onPositionChanged: {
var coord = src.position.coordinate;
console.log("Coordinate:", coord.longitude, coord.latitude);
backend.longitude = coord.longitude;
backend.latitude = coord.latitude;
console.log(src.nmeaSource)
}
}
Когда я запускаю его на Qt Creator, я получаю это всплывающее окно ok / cancel: "TestApp" хочет использовать ваше текущее местоположение.". Если я нажимаю кнопку" ОК ", он может получить информацию о текущем местоположении устройства (широту, долготу и т. Д.).)
С другой стороны, когда я пытаюсь запустить приложение на терминале (путь: TestApp.app/Content/MacOs/TestApp) или развернуть его с помощью "macqdeploy", всплывающее окно не появляется и не может получить текущее местоположение.
Для развертывания я также тестирую копирование всех библиотек Qt/Qml/QuickControl lib /framework для связывания вручную, но это также не работает.
Я должен развернуть свое приложение, поэтому информация о местоположении необходима. Как я могу решить эту проблему? Как получить права всплывающего окна снова?
Спасибо!
Редактировать:
Это мой Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LSUIElement</key>
<string>1</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>app2.app always location use</string>
</dict>
</plist>
1 ответ
Вам нужен список недвижимости info.plist
файл в вашем проекте, если у вас его нет. Я думаю, начиная с iOS10 /macOS10, этот файл управляет разрешениями. За подробностями обращайтесь к руководству Apple О ключах и значениях Info.plist.
В вашем случае, я думаю, вам нужна эта запись в вашем info.plist
файл:
<key>NSLocationAlwaysUsageDescription</key>
<string>${PRODUCT_NAME} always location use</string>
следующие сообщения SO могут быть полезны:
Службы определения местоположения не работают в iOS 8
NSLocationAlwaysUsageDescription строка добавлена в info.plist