33 votes

iBeacon en arrière-plan - Cas d'utilisation

Le nombre de questions sur SO relatives à iBeacon et à ses capacités de fond augmente et il y a une certaine confusion sur ce point. J'ai testé le projet AirLocate.

iBeacon a 2 "capacités" : Le suivi de la région et le Ranging.

La surveillance de la région est limitée à 20 régions et peut fonctionner en arrière-plan (du dispositif d'écoute) et dispose de différents délégués pour notifier l'application d'écoute (et l'utilisateur) de l'entrée/sortie dans la région - même si l'application est en arrière-plan ou si le téléphone est verrouillé.

Le Ranging ne fonctionne qu'en avant-plan mais renvoie (au dispositif d'écoute) un tableau (illimité ?) de tous les iBeacons trouvés avec leurs propriétés (UUID, etc..)

De plus, cette surveillance de 20 régions est une limite du dispositif. Si l'utilisateur utilise des rappels de géofencing, d'autres applications qui utilisent la surveillance des régions, ce nombre sera réduit.

  1. Nous sommes donc en train de dire que je ne peux pas déployer une application à l'échelle d'un centre commercial (plus de 100 magasins) qui utilise les iBeacons des magasins pour envoyer une notification "spécifique au magasin" à l'utilisateur, alors que l'application est en arrière-plan ou que le téléphone est verrouillé ?

  2. J'en déduis que le dispositif publicitaire (la balise) doit également être au premier plan pour annoncer une région dans laquelle le dispositif d'écoute pourrait "entrer". Donc, sommes-nous en train de dire que si le propriétaire d'un magasin avait un appareil iOS, je ne pourrais pas, par exemple, lui faire économiser de l'argent en lui demandant d'utiliser son iPhone (du moins au début) comme dispositif publicitaire (balise) - puisque l'application ne sera probablement pas toujours au premier plan ?

  3. Ainsi, dans le cas d'iBeacon + MLB, une seule UUID (ou <20 UUID) est/sont utilisées par l'application pour déterminer éventuellement la porte d'entrée et, ensuite, l'utilisateur devra-t-il déverrouiller le téléphone/amener l'application au premier plan pour l'utiliser (trouver un siège, etc.) ?

Puis-je alors appeler l'iBeacon : une fonction de localisation/événement unique (magasin, parc, etc.) qui requiert l'attention la plus " avant-plan " de l'utilisateur pour avoir un cas d'utilisation pratique " complet " ?

J'ai essayé de m'exprimer clairement sur les cas d'utilisation pour les mettre en pratique. Veuillez répondre par autre chose que oui ou non.

0 votes

Sommes-nous sûrs que le "En outre, que la surveillance de 20 régions est une limite du dispositif. "c'est une limite de dispositif ? Je pense que c'est par application.

0 votes

S'agit-il d'une limite par appareil ou par application ?

26voto

davidgyoung Points 14271

On dirait que vous êtes sur la bonne voie. En général, vous avez raison de dire qu'une application doit être au premier plan pour utiliser pleinement les capacités iBeacon. Quelques précisions sur vos trois questions principales :

  1. Le cas d'utilisation de votre centre commercial peut fonctionnent avec quelques limitations. (a) vous devez conserver vos CLBeaconRegions en faisant en sorte que la plupart ou la totalité des 100 magasins partagent le même UUID et/ou le même numéro majeur, ne différant que par le numéro mineur. Cela vous permet de configurer une seule CLBeaconRegion pour en surveiller plusieurs. (b) Si l'application se réveille en arrière-plan après avoir vu le iBeacon 1, elle ne pourra pas se réveiller une seconde fois après avoir vu le iBeacon 2 dans la même CLBeaconRegion. sauf si il cesse d'abord de voir toute autre balise dans cette CLBeaconRegion. (Vous pouvez jouer un peu avec cela en mettant en place plusieurs CLBeaconRegions et en essayant de grouper les magasins de façon à ce que ceux qui sont adjacents dans la portée radio bluetooth de 50 mètres qui se chevauche soient dans des CLBeaconRegions différentes).

  2. Non, le propriétaire d'un magasin ne peut pas utiliser son iPad comme balise iBeacon en arrière-plan - il doit être au premier plan pour fonctionner. Mais il peut demander à son ordinateur Windows ou Mac de le faire en utilisant un programme iBeacon virtuel. Ma société en propose un en téléchargement gratuit : http://developer.radiusnetworks.com/ibeacon/

  3. Dans le cas de l'entrée par la porte, oui, l'utilisateur devrait accuser réception de la notification sur l'écran de verrouillage pour faire passer l'application au premier plan. Une mise en œuvre typique utiliserait une seule CLBeaconRegion (probablement avec tous les iBeacons partageant un ProximityUUID et peut-être même un major) pour alerter l'utilisateur.

Modifier le 4/11/2020 : Apple a annoncé des plans pour une nouvelle publicité beacon qui fonctionnera en arrière-plan. Voir aquí pour plus d'informations.

0 votes

Tx pour les réponses détaillées. Pour la solution #1 : créer des clusters de 10 magasins avec chaque magasin dans ce cluster partageant l'UUID+Major unique du cluster mais avec chaque magasin dans ce cluster ayant un mineur différent. Ensuite, lorsque l'application entre dans l'une des CLBeaconRegions, elle reconnaît le cluster dans lequel elle est entrée (en utilisant l'identifiant CLRegion) et l'application peut alors déterminer les mineurs disponibles dans ce cluster. Cependant, la recherche ne peut toujours pas se faire en arrière-plan et l'application ne sait pas quel magasin de ce groupe l'utilisateur passe (signal le plus fort, etc.) jusqu'à ce que l'application passe au premier plan.

11 votes

En fait, vous peut en arrière-plan, mais seulement très brièvement. Lorsque iOS réveille votre application en arrière-plan en entrant ou en sortant d'une CLBeaconRegion, elle fonctionnera pendant environ 5 secondes avant d'être suspendue. Vous pouvez effectuer des opérations pendant ce temps, puis utiliser les résultats pour affiner la notification que vous envoyez à l'utilisateur.

0 votes

@davidgyoung vient de tomber sur votre article de blog utile, merci pour cela ! Je me demandais si vous pouviez obtenir l'entrée/sortie lorsque l'application ne fonctionne pas du tout (c'est-à-dire lorsqu'elle est tuée).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X