locationManager:didEnterRegion pas appelé lorsqu'une balise est détecté
En testant avec des balises (iOS), j'ai trouvé l'auditeur phare de donner un comportement inattendu. locationManager:didEnterRegion méthode n'est pas appelée, même si une balise pénètre dans une région. Mais le locationManager:didRangeBeacons:inRegion: est appelé correctement, et détecté les balises sont indiqués. Personne n'a jamais rien connu de tel.
Après avoir lutté avec problème de 1,5 jours. Le problème était en mode avion. Si le mode avion est activé, iBeacon allant parfaitement de travail mais le contrôle pas. Il est dommage qu'il n'y a pas d'erreur ou quoi que ce soit
OriginalL'auteur Dhanesh KM | 2013-10-08
Vous devez vous connecter pour publier un commentaire.
Vérifier si vos moyens sont mis en œuvre en la manière suivante.
Dans
viewDidLoad
, commencer moniotoring à la finaprès le début de surveillance, à la demande de l'état de votre région définie
après l'etat est déterminé, à commencer allant des balises
et de mettre en œuvre les méthodes suivantes en fonction de vos besoins...
Espère que cela permettra de résoudre votre problème.
Merci pour le goût u_b...
Incroyable explication. Je vous remercie beaucoup.
j'ai essayé ci-dessus vous a dit encore méthode n'est pas appelée
Sur
didEnterRegion:
, ne devrions-nous pas alloc CLLocationManager de nouveau? Parce que l'appel peut venir de l'arrière-plan.OriginalL'auteur Muhammad Ibrahim
(et de faire suivre les instructions données par M. Davidgyoung. croyez-moi, il sera certainement le travail.)
Si votre application est un BLE centrale, il vous faut installer l'Application communique à l'aide d'CoreBluetooth" dans le contexte des modes. Si votre application est un BLE périphérique, vous devez définir le "App de partage des données à l'aide de CoreBluetooth"
OriginalL'auteur Nitesh
Il est difficile de dire si j'ai vu exactement la même chose, sans plus de détails sur les conditions de départ de votre test. Mais, oui, dans certains cas précis, j'ai vu locationManager:didRangeBeacons:inRegion obtenir, même sans avoir reçu un appel de locationManager:didEnterRegion.
Si vous commencez allant et de surveillance dans le même temps à la même région, et iOS pense que vous avez été déjà dans le suivi de la région, puis vous ne pouvez pas obtenir un appel à locationManager:didEnterRegion.
Pour vraiment tester si quelque chose ne va pas, vous devez configurer un cas de test où vous:
Si vous ne recevez toujours pas d'un appel après avoir traversé ci-dessus, alors quelque chose est définitivement faux.
Il n'a pas d'importance si vous pense que vous avez entré de la région. 🙂 Tout ce qui compte c'est ce que iOS LocationManager pense, et son état actuel est invisible pour vous. Vous devez être sûr à 100% qu'il ne pense pas qu'il est déjà dans la Région que vous avez défini lorsque vous commencer à surveiller, parce que si il pense que c'est déjà dans la Région, vous ne pouvez pas obtenir un rappel. C'est pourquoi je vous propose la procédure ci-dessus, il s'assure que iOS va vous reconnaître comme étant à l'extérieur de la région lorsque le test commence.
Permettez-moi de poser cette autre façon... si le problème que vous signalez est répétable, quelle est la différence entre ce que tu dis fonctionne dans votre commentaire et ce que vous dites ne fonctionne pas dans votre post original? Avez-vous redémarrez votre téléphone? Pensez-vous attendre un long moment? Que faut-il de répéter l'échec?
mon didEnterRegion délégué n'est pas appelé? pouvez-vous me dire comment faire pour détecter où vais-je tort?
J'ai rencontré le même problème, et j'ai trouvé qu'à partir de iOS8 nous avons à gérer requestAlwaysAuthorization ou requestWhenInUseAuthorization pour obtenir des informations de localisation. Et nous devons aussi ajouter NSLocationAlwaysUsageDescription ou NSLocationWhenInUseUsageDescription pour info.plist.
OriginalL'auteur davidgyoung
Vous devez également être conscient que vous êtes la surveillance d'un région - pas un particulier des balises.
Donc si vous avez 3 balises qui partagent le même
proximityUUID
et votre région est définie comme étant seulementproximityUUID
(sans majeures et mineures de valeurs), vous obtiendrez notifiée que dans deux situations:Pas les phares de la région étaient en gamme et de première balise/phares obtient
découvert (
didEnterRegion:
)Une ou plusieurs balises de la région ont été dans la gamme et ils sont tous sortis de la vue pour
~30 secondes (
didExitRegion:
)OriginalL'auteur Maciek Czarnik