Является ли проект инструмента командной строки Xcode разрешенными разрешениями CoreLocation?
У меня есть проект командной строки Xcode, написанный на С++. Недавно я добавил структуру CoreLocation и связанный код, чтобы найти местоположение пользователей.
Обычно, когда я реализую инфраструктуру CoreLocation, OS X запрашивает у меня разрешение на предоставление приложения. Это не происходит с моим инструментом командной строки. Это потому, что нет связанного окна/меню?
Кроме того, если я попытаюсь вручную включить разрешение в панели "Системные настройки" в разделе "Безопасность" > "Конфиденциальность", он автоматически отключается при каждом запуске приложения, даже если я явно разрешил доступ.
Любая информация будет принята с благодарностью.
Ответы
Ответ 1
Некоторые вещи под Mac OS нуждаются в подключении к серверу окон. Примером этого является NSImage
, и может быть, что для служб определения местоположения также требуется такое соединение.
Однако я не знаю, как сделать такое соединение без вызова NSApplicationMain
.
Что вы можете сделать, это написать вспомогательное приложение, которое не отображается в доке (например, приложение панели состояния), но вызывает NSApplicationMain
. Это приложение будет затем выполнять все службы определения местоположения и связываться с вызывающим процессом (вашим CLI) через stdout или сокеты или что-то подобное.
Ответ 2
Вы также импортируете Foundation.h в свой проект? Вы должны проверить, чтобы увидеть все зависимости, которые имеет CoreLocation, и убедиться, что они вносят его в ваш проект. CoreLocation также записывается в Objective-C, поэтому некоторые из вызовов не могут быть пойманы С++ вашим компилятором.
Ответ 3
когда CoreLocation запрашивает данные о местоположении, Mac предложит вам окно с запросом на предоставление разрешения, если вы проверите "Не спрашивайте меня снова" и нажмите "ОК", то он никогда не будет запрашивать сообщение еще раз, Reset Предупреждения "в области безопасности, но если вы переместите приложение командной строки в другой каталог, Mac снова попросит разрешения. Я считаю, что это разрешение хранится с полным путем приложения.