我需要在 Mac OS X 上使用 Qt/Qml/Quick 和 C++ 获取设备当前位置信息。我对其进行了测试:
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 库/框架以手动捆绑,但它也不起作用。
我应该部署我的应用程序,因此需要位置信息。我怎么解决这个问题?如何再次弹出权限?
谢谢!
编辑:
这是我的 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>