2010-10-14 105 views
0

我有一個核心位置應用程序,我正在利用startMonitoringSignificantLocationChanges方法在合適的時候生成更新,但這在較老的設備(如iPhone 3g)上不起作用。爲核心位置檢測iPhone設備功能

我想核心位置功能仍然可以在設備打開時工作,所以我想我可以使用選擇器測試來查看設備是否支持該方法,以及如果它不僅僅使用標準核心位置更新方法。雖然這個選擇器在我的iPhone 3G上不起作用,但它仍然使用startMonitoringSignificantLocationChanges,即使它不適用於手機。

任何想法?我寧願不使用設備標識符測試,因爲那樣它將不得不爲每個未來版本的手機進行更新。

@interface RootViewController : UITableViewController <CLLocationManagerDelegate> { 
    CLLocationManager *locationManager;  
} 
@property (nonatomic, retain) CLLocationManager *locationManager; 

@implementation RootViewController 
@synthesize locationManager; 
    if([locationManager respondsToSelector:@selector(startMonitoringSignificantLocationChanges)]) { 
      [locationManager startMonitoringSignificantLocationChanges]; 
      NSLog(@"Using bg updates"); 
     } 
     else { 
      [locationManager startUpdatingLocation]; 
      NSLog(@"Using reg updates"); 
     } 
+0

什麼是'locationController.locationManager'?你確定財產的價值不是「無」嗎?是否有一個原因,你不只是像在這個方法的其餘部分那樣使用'locationManager'? – 2010-10-14 07:48:20

+0

我爲這篇文章寫的例子中的錯字。我糾正了錯字。 – adam0101 2010-10-14 14:25:28

回答

2
if ([CLLocationManager significantLocationChangeMonitoringAvailable]) { 
… 
}