2011-06-03 21 views
1

我有一個應用程序,其核心功能圍繞使用用戶的當前位置。它顯示地圖上用戶附近的對象。我不創建位置管理器,我只是使用mapview的。這很好,但現在我試圖確保我的應用程序正確提醒用戶它需要位置服務。我現在正在做的是在applicationDidBecomeActive方法中創建一個新的位置管理器,並嘗試開始更新,以便在應用程序打開時觸發用戶權限請求,或者在位置服務從後臺返回時像這樣:如果用戶選擇「不允許」,關閉需要位置服務的應用程序?

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    CLLocationManager *manager = [[CLLocationManager alloc] init]; 
    if([CLLocationManager locationServicesEnabled]) 
    { 
     NSLog(@"yes"); 
    } 
    [manager startUpdatingLocation]; 
} 

問題1:這是做這件事的好方法嗎?

問題2:由於我的應用程序的各個方面使用定位服務,將關閉該應用程序是適當的,如果用戶選擇「不允許」,當系統提示,他們是我的應用程序要使用位置 - 服務?

任何其他建議從經驗與處理位置服務和通知和請求的用戶將不勝感激。

回答

1

你不能「關閉」一個應用程序 - 蘋果不允許它,實際上沒有公共API來「退出」。

你可以做的是拋出一個視圖,該視圖接管整個屏幕,解釋在沒有CoreLocation權限的情況下無法正常運行的問題。也許即使有一個按鈕讓CLLocationManager再次提示他們獲得權限。

+0

確定這是有道理的,所以當他們駁回該視圖時,我會嘗試再次在位置管理器上「startUpdatingLocation」以再次觸發系統提示,對不對?對不起,還有一個問題,你可以訪問mapview自己的locationmanager來告訴它開始更新嗎? – Ryan 2011-06-03 20:05:39

+0

@Ryan - 你知道,我對此不確定。您可能必須爲他們指示進入其系統首選項並解除阻止。無論如何,這是一個更好的答案 - 他們可能會在你到達那裏之前關閉位置服務,所以能夠指導他們解決這個問題是有道理的。如果位置服務被阻止(無論是全球性的還是針對您的應用),它們也會在MapKit中被阻止。 – 2011-06-03 20:13:30

+0

感謝您的反饋。實際上,如果它在打開應用程序時被關閉,並且位置管理器第一次嘗試更新,它會自動向他們顯示警報並提供指向設置的鏈接。如果不是蘋果公司如此挑剔,我甚至不會與使用該應用程序的人打交道,將其退出以轉向定位服務,然後重新開放它,因爲這是一個非常不可能的場景,但是誰知道蘋果是否會檢查它:)多任務使事情變得複雜: – Ryan 2011-06-03 20:23:28

0

這是違反蘋果的指導方針,以編程方式關閉應用程序,這樣做很可能會被拒絕。

相關問題