2014-12-31 36 views
0

我在SpringBoard或imagent中使用CLLocationManager,但是當我分配CLLocationManager時,我得到了錯誤with:depending on legacy on-demand authorization, which is not supported for new apps。即使在locationd過程 ,我得到了同樣的情況......在SpringBoard中使用CLLocationManager,但得到了錯誤:取決於傳統的按需授權,這是不支持新的應用程序

%hook SpringBoard 
-(void)applicationDidFinishLaunching: (id)application { 
    CLLocationManager *locationMgr = [[CLLocationManager alloc] init]; 
    %orig; 
} 
%end 

問題是我怎麼能獲得這樣的過程中的位置信息?或者,如果我可以更改應用程序的權利?

+0

請看看http://girijeshkumar2007.blogspot.in/2014/10/ios-8-location-services-update.html –

+0

但問題是這些是系統應用程序,我不能改變他們的Info.plist .. –

回答

1

這一切都歸功於iOS 8的變化。在之前的iOS版本中,至少有locationd擁有com.apple.locationd.preauthorized權利,該權利允許在沒有用戶許可的情況下訪問位置。現在,即使是locationd也沒有。與SpringBoardimagent相同。當然,它可以通過它自己的API訪問位置 - locationd是位置守護進程,它處理從授權到過濾和處理來自各種來源的原始位置數據的所有內容。

您可以更改他們的Info.plist,但它不會做太多 - 這些應用程序仍然不會被授權。使用SpringBoard,您將不得不顯示默認警報以允許其訪問位置。與locationdimagent你可能不能做任何事情 - 他們是守護進程。守護程序沒有UI,因此無法顯示任何警報以請求權限。爲了解決這個系統,守護進程使用權利來訪問沒有用戶許可的內容(比如個人信息)。

現在,你怎麼能離開請求從用戶權限SpringBoard解決它:

  • 自己寫的守護進程com.apple.locationd.preauthorized授權簽署。這樣你可以在沒有任何權限的情況下訪問位置默認情況下,守護進程將始終有權這樣做。
  • 退出系統應用程序com.apple.locationd.preauthorized。這是一種破解,在這種情況下我個人反對,因爲編寫一個守護進程可以解決所有問題。如果你仍然想那樣做,然後讀我的回答here
+0

謝謝,問題通過與com.apple.locationd.preauthorized簽署應用程序解決。現在,我正在嘗試創建自己的守護進程。 –

相關問題