2010-10-14 3 views
0

J'ai une application de localisation centrale que j'écris en tirant parti de la méthode startMonitoringSignificantLocationChanges pour générer des mises à jour, le cas échéant, mais cela ne fonctionne pas sur les anciens appareils tels que l'iPhone 3g. Je voudrais que la fonctionnalité de l'emplacement de base fonctionne encore pendant que l'appareil est ouvert, donc j'ai pensé que je pourrais utiliser un test sélecteur pour voir si l'appareil supporte la méthode, et s'il n'utilise pas la mise à jour standard méthode. Bien que ce sélecteur ne fonctionne pas sur mon iPhone 3g, il utilise toujours startMonitoringSignificantLocationChanges, même si cela ne fonctionne pas sur le téléphone.Détection des fonctionnalités du périphérique iPhone pour l'emplacement principal

Des idées? Je préférerais ne pas utiliser les tests d'identification de l'appareil car il faudra alors le mettre à jour pour chaque nouvelle version du téléphone.

@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

Qu'est-ce 'locationController.locationManager'? Êtes-vous sûr que la valeur de la propriété n'est pas «nulle»? Y at-il une raison pour laquelle vous n'utilisez pas simplement 'locationManager' ici comme vous l'avez fait dans le reste de la méthode? –

+0

Typo dans l'exemple que j'ai écrit pour ce poste. J'ai corrigé la faute de frappe. – adam0101

Répondre

2
if ([CLLocationManager significantLocationChangeMonitoringAvailable]) { 
… 
} 
Questions connexes