didEnterRegion appelé avec un plus grand rayon (iOS)

Je veux que didEnterRegion soit appelé avec beaucoup de précision, mais je n'ai pas pu le faire. Voici ce que j'ai fait: j'ai utilisé les meilleures valeurs de distanceFilter et desireAccuracy (les parameters GPS les plus précis selon Apple) et ont une destination CLCircularRegion (sous-class de CLRegion).

self.locationManager.distanceFilter = kCLLocationAccuracyBestForNavigation; self.locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; @property (nonatomic, strong) CLCircularRegion *Destination; self.Destination = [[CLCircularRegion alloc] initWithCenter:CLLocationCoordinate2DMake(43.907691, -69.963158) radius:5 identifier:@"Destination"]; [self.locationManager startMonitoringForRegion:self.Destination]; 

Le problème est que quand je suis à 150m de cette destination, didEnterRegion est appelé. De même, autour de la même distance, le nom de count est appelé. Je veux que didEnter et didExit region soient appelés quand je suis à 5 m, pas à 150m, comme je l'ai spécifié avec l'initialisation de CLCircularRegion. Quelqu'un a-t-il une solution? La précision est ce dont j'ai besoin, et 150m au lieu de 5m est trop imprécis pour moi. Merci tonne –

(J'ai utilisé l'iPhone 4S pour tester)

Alors qu'en théorie les exactitudes de 5m sont possibles avec l'équipement technique GPS + actuel, il se peut qu'Apple empêche une telle précision pour la surveillance de région pour diverses raisons.

L'un est qu'ils veulent toujours une bonne expérience user et la précision de 5m que vous voulez est dans la plage de précision que vous obtiendrez souvent des lectures GPS. Ainsi, le fait de laisser une si petite région pourrait aussi être dû à des lectures de précision plus faibles alors que l'user est encore dans la région. Apple couvre ces erreurs en définissant des seuils pour l'affichage des notifications regionEnter ou regionExit. De la documentation Apple :

Lorsque vous testez votre code de surveillance de région dans iOS Simulator ou sur un périphérique, réalisez que les events de région peuvent ne pas se produire immédiatement après le franchissement d'une limite de région. Pour éviter les notifications erronées, iOS ne délivre pas de notifications de région tant que certaines conditions de seuil ne sont pas remplies. Plus précisément, l'location de l'user doit traverser la limite de la région, s'éloigner de la limite d'une distance minimale et restr à cette distance minimale pendant au less 20 secondes avant que les notifications soient signalées.

Les distances de seuil spécifiques sont déterminées par le matériel et les technologies de localization actuellement disponibles. Par exemple, si le Wi-Fi est désactivé, la surveillance de la région est nettement less précise. Cependant, à des fins de test, vous pouvez supposer que la distance minimale est d'environ 200 mètres

Néanless, puisque vous pouvez requestr des lectures de haute précision Apple devrait également en tenir count. L'alternative pourrait être – comme vous l'avez commenté – d'utiliser didUpdateLocation: et de déterminer si à l'intérieur ou à l'extérieur de la région. De cette façon, vous pouvez inclure un test de précision de localization et n'accepter une sortie / input que lorsque la précision horizontale est suffisante.