Chris Alvares daemonに似たデーモンを書いています。ユーザーの許可なしにバックグラウンドでデバイスの位置を取得したい。Location Services
[設定] の設定が に設定されている場合、ON
場所の取得に問題はありません。このためにcom.apple.locationd.preauthorized
、ブール値を true に設定して、実行可能資格キーに追加しています。問題はLocation Services
オフのときです。この場合、デバイスの位置を取得したい場合、UIAlertView がポップアップして、位置情報サービスがオフになっていることをユーザーに伝えます。基本的に2つの方法がありますが、実行可能かどうかはわかりません。まず、設定で位置情報サービスの設定をプログラムでオン/オフにします。次に、位置情報サービスを設定する必要なく、別のコードを使用して位置情報を取得しますON
更新 01:
私はiMokhlesが言ったようにやったし、うまくいくはずだと思うが、何も起こらない. 資格が原因だと思います。syslog を見たところ、ログに記録されているものが次のとおりです。
iPhone locationd[44] <Error>: Entitlement com.apple.locationd.authorizeapplications required to use _CLDaemonSetLocationServicesEnabled
iPhone myDaemon[3443] <Error>: CoreLocation: CLInternalSetLocationServicesEnabled failed
そのため、このキーを資格に追加しましたが、それでもこのエラーが発生しました。Preferences app entitlement を確認した後、これらの行を entitlements plist に追加しましたが、やはり何も起こりません。
<key>com.apple.locationd.authorizeapplications</key>
<true/>
<key>com.apple.locationd.defaults_access</key>
<true/>
<key>com.apple.locationd.effective_bundle</key>
<true/>
<key>com.apple.locationd.status</key>
<true/>