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

Другие вопросы по тегам