Службы определения местоположения всегда отключены в Mac OS X Lion
Простая программа определения местоположения работала нормально на моей машине и внезапно перестала работать. После дальнейшего изучения проблемы я понял, что в некоторых процессах отключены службы определения местоположения в Системных настройках "Безопасность и конфиденциальность" Конфиденциальность.
Я установил флажок "Включить службы определения местоположения", но снова он автоматически отключился.
После некоторых исследований я обнаружил, что это не только моя программа, даже встроенные системные функции также не работают из-за этой проблемы, например, " Системные настройки" Дата и время "Часовой пояс не удалось найти текущее местоположение.
Каждый раз, когда я проверяю Enable Location Services, я вижу следующую ошибку в журналах консоли:
16/10/12 11:23:15.636 AM [0x0-0x42042].com.apple.systempreferences: ERROR,Time,372059595.636,Function,"CLInternalSetLocationServicesEnabled",CLInternalSetLocationServicesEnabled failed
16/10/12 11:23:15.638 AM [0x0-0x42042].com.apple.systempreferences: STACK,Time,372059595.636,1 CoreLocation 0x00007fff8f9957be CLInternalSetLocationServicesEnabled + 110
Заметки:
- WiFi включен
- Я не установил iOS Симулятор
- Я использую Xcode Version 4.5 (4G182)
- Я использую Boot Camp и сделал мою MacBook Pro двойной загрузкой (Mac OS X Lion и Windows 7)
- Я занимаюсь только Mac разработкой, но не iOS
2 ответа
#!/bin/sh
launchctl unload /System/Library/LaunchDaemons/com.apple.locationd.plist
defaults write /System/Library/LaunchDaemons/com.apple.locationd Disabled -bool false
then
launchctl load /System/Library/LaunchDaemons/com.apple.locationd.plist
exit 0
Я сталкиваюсь с той же проблемой в OSX 10.11 (El Capitan).
Я нашел этот пост ( https://jamfnation.jamfsoftware.com/discussion.html?id=5336). Я запустил сценарий внутри, и, наконец, мои службы определения местоположения были исправлены.
#!/bin/bash
########################## SET SYSTEM TIME ##################################################
#
# Written by Tim Kimpton
#
# using information from https://jamfnation.jamfsoftware.com/discussion.html?id=5336
#
# If the machine is 5 minutes out of the kdc the machine will not bind to the domain.
#
# This script does the folling to ensure the time is correct
#
# 1. Unload the launch daemon used for location services
#
# 2. Get the hardware UUID of the machine and put it in the location services db
#
# 3. Enable location services
#
# 4. Correct permissions on the database file used for location services
#
# 5. Set the time zone to update the time automatically
#
# 6. Set the network time to on
#
# For information see https://jamfnation.jamfsoftware.com/discussion.html?id=5336
###############################################################################################
######################### ENVIRONMENT VARIABLES #######################
# Get the Hardware UUID from system profiler
uuid=$(/usr/sbin/system_profiler SPHardwareDataType | grep "Hardware UUID" | cut -c22-57)
####################### DO NOT MODIFY BELOW THIS LINE #################
# Unload the launch daemon
/bin/launchctl unload /System/Library/LaunchDaemons/com.apple.locationd.plist
# Write the UUID to the hidden plist file and initialise it
/usr/bin/defaults write /var/db/locationd/Library/Preferences/ByHost/com.apple.locationd."$uuid" LocationServicesEnabled -int 1
# Enable Location Services
/usr/bin/defaults write /var/db/locationd/Library/Preferences/ByHost/com.apple.locationd.notbackedup."$uuid" LocationServicesEnabled -int 1
# Make sure the permissions on the database file is correct
/usr/sbin/chown -R _locationd:_locationd /var/db/locationd
/bin/launchctl load /System/Library/LaunchDaemons/com.apple.locationd.plist
# Set time zone to update automatically
/usr/bin/defaults write /Library/Preferences/com.apple.timezone.auto Active -bool true
# Set network time to on
/usr/sbin/systemsetup -setusingnetworktime on > /dev/null 2>&1
exit 0