2011-08-23 49 views
0

在與iPhone捆綁在一起的Maps應用程序中,只要定位服務關閉且用戶嘗試使用位置服務,我們就會收到以下警報消息:iOS - 地圖應用程序與其他位置感知第三方應用程序

打開位置服務以允許「地圖」確定您的位置|設置|取消

請注意,上述警報中的兩個按鈕是設置和取消。

現在的問題是,我們是否能夠獲得與我們都在開發的位置感知第三方應用程序中所述的完全相同的行爲。只是爲了更詳細地解釋這個問題,讓我們說我們正在開發我們的名稱爲「Abc」的位置感知應用程序。每次我們調用需要位置服務的「Abc」應用程序部分時,如果位置服務關閉,我們需要獲取以下警報消息。

打開位置服務以允許「Abc」確定您的位置|設置|取消

我在我的位置感知應用程序中嘗試了以下一段代碼作爲實現文件的一部分,但它的行爲與地圖應用程序在顯示期望的警報消息時要求用戶轉位置服務,如果它目前關閉。

@implementation LocationViewController 
@synthesize locationManager 

self.locationManager = [[[CLLocationManager alloc] init] autorelease]; 
locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; 
locationManager.delegate = self; 
[locationManager startUpdatingLocation]; 

在相關的頭文件,我有以下一段代碼

@interface LocationViewController:UIViewController<CLLocationManagerDelegate> { 
    CLLocationManager *locationManager; 
} 
@property(nonatomic, retain) CLLocationManager *locationManager; 
@end 

是否有需要被用來獲得上述行爲(如在地圖進行一些其他的API(S)應用程序)或者是第三方位置感知應用程序根本無法實現iOS 4.x以上的所需行爲。請分享你對此的評論。

回答

2

你不能這樣做 - 這是一個私人API。無法在應用程序中以編程方式啓動設置應用程序(不幸的是,因爲您可以通過URL架構啓動iTunes,Safari等,設置應用程序不存在)。你得到的是默認的「你想使用你當前的位置」的消息。

0

您可以檢查CLLocationManager的locationServicesEnabled屬性以查看您是否通常擁有CoreLocation框架上的權限。

如果沒有,並且沒有它們就無法操作,您需要對用戶進行關於它的操作。您將無法向設置應用程序提供一鍵啓動(這不是已發佈的網址方案),但您可以向他們說明如何自行進入並授予您位置權限。