2015-03-02 86 views
1

使用定位服務從蘋果拒絕我使用下面的代碼與位置我的應用程序在後臺

self.locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.desiredAccuracy=500; 
    locationManager.distanceFilter=kCLLocationAccuracyKilometer; 


#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 

    if ([locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) 
    { 
     [locationManager requestAlwaysAuthorization]; 
    } 
#else 


#endif 

    [locationManager startUpdatingLocation]; 

    //Disable auto location pause in background 
    if ([self.locationManager respondsToSelector:@selector(pausesLocationUpdatesAutomatically)]) 
    { 
     self.locationManager.pausesLocationUpdatesAutomatically = NO; 
    } 

而在我的plist文件我用「應用程序註冊了位置更新」爲「所需的背景模式」。但蘋果拒絕了我的申請,並表示如果您在後臺使用位置信息,則必須使用實時位置更新。

請讓我知道我需要使用,如果我想在距離過濾器的背景中使用位置。

回答

0

如果您希望在沒有「位置更新的應用寄存器」後臺模式的情況下進行後臺更新,則必須使用startMonitoringSignificantLocationChanges。它應該每隔幾公里就會在後臺生成位置更新。 沒有其他方式在後臺獲取位置更新(無背景模式)。

Apple documentation

startMonitoringSignificantLocationChanges不依賴於過濾器:

它不依賴於distanceFilter屬性中的值來生成事件。

編輯:

正如我在評論中提到的,你可以使用背景音樂,如RunKeeper應用程序一樣。它仍然是一個灰色地帶,這意味着有一個很大的機會,你的應用程序將被拒絕還是

CoreMotion updates in background state

+0

感謝您的答覆。我正在計算在iPhone5s設備下運動傳感器的步驟,所以我需要在後臺運行我的應用程序。有沒有其他方法可以做到這一點。 – 2015-03-03 17:38:03

+0

是的,有一些技巧,如在後臺運行音樂。但結果與位置更新相同:您仍然需要啓用背景模式=>它可能會被蘋果拒絕。 – 2015-03-03 17:42:31

+0

編輯我的回答 – 2015-03-03 18:04:42