DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Fonctions Beacon
  • Utilisation d'un service de détection du mobile
  • Comment connaître les balises à proximité ?
  • Divers
  • Version nécessaire
  • Bluetooth Low Energy
  • Permissions requises
  • Spécificités
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Permet à l'application d'être notifiée lorsque l'appareil entre ou sort d'une zone correspondant au rayon d'émission d'un ensemble de balises Beacon.
Exemple
// Dans un musée, on souhaite déclencher la lecture (resp. l'arrêt) d'un audio-guide
// lorsque le visiteur entre (resp. sort) d'une salle.
// On associe à chaque balise Beacon le même UUID correspondant au musée et
// un numéro Major correspondant à la salle dans laquelle la balise sera positionnée.
// On dispose une balise Beacon à chaque entrée de chaque salle du musée.
// L'application doit appeler la fonction BeaconDétecteEnArrièrePlan
// avec un tableau de variables BeaconGroupe correspondant à chacune des salles du musée.
 
// La procédure callback passée en paramètre à la fonction sera appelée
// à chaque entrée ou sortie d'une pièce et fournira les informations
// du groupe de beacons détecté permettant ainsi
// de piloter l'audio-guide pour lire la piste audio correspondante.
 
// UUID du musée
sUUID est une chaîne = "f4231ab6-5ef2-6c99-4229-af6c72e0446e"
// Création d'une variable beaconGroupe par salle
groupeSalle1 est un beaconGroupe
groupeSalle1.UUID = sUUID
groupeSalle1.Major = 1
groupeSalle2 est un beaconGroupe
groupeSalle2.UUID = sUUID
groupeSalle2.Major = 2
groupeSalle3 est un beaconGroupe
groupeSalle3.UUID = sUUID
groupeSalle3.Major = 3
groupeSalle4 est un beaconGroupe
groupeSalle4.UUID = sUUID
groupeSalle4.Major = 4
// Lancement de la détection
tabGroupeBeacon est un tableau de beaconGroupe = [groupeSalle1, ...
   groupeSalle2, groupeSalle3, groupeSalle4]
// La procédure ProcDétection sera exécuté chaque fois que le mobile entrera
// ou sortira de la zone définie par chaque groupe de beacons.
BeaconDétecteEnArrièrePlan(tabGroupeBeacon, ProcDétection)
PROCÉDURE ProcDétection(Groupe est un beaconGroupe, nType est un entier)
 
SI nType = bdapSortie ALORS
// Arrêt de la piste en cours
RETOUR
FIN
 
SI nType = bdapEntrée ALORS
SELON Groupe.Major
CAS 1
// Lecture de la piste de la salle 1
CAS 2
// Lecture de la piste de la salle 2
...
FIN
FIN
Syntaxe

Lancer une détection en arrière-plan sur plusieurs groupes de balises Beacon Masquer les détails

<Résultat> = BeaconDétecteEnArrièrePlan(<Tableau> , <Procédure WLangage>)
<Résultat> : Booléen
  • Vrai si la détection a bien été démarrée,
  • Faux dans le cas contraire. Pour plus de détails sur l'erreur, utilisez la fonction ErreurInfo.
<Tableau> : Tableau de beaconGroupe
Nom du tableau de variables de type beaconGroupe décrivant les groupes de balises Beacon à détecter.
<Procédure WLangage> : Nom de procédure
Nom de la procédure WLangage (également nommée "callback") appelée lorsque le périphérique entre ou sort de la zone d'émission d'un groupe de balises Beacon.
Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(<Groupe>, <Type>)
  • Le paramètre <Groupe> est une variable de type beaconGroupe décrivant le groupe de balises Beacon pour lequel l'appareil vient d'entrer ou de sortir de la zone d'émission.
  • Le paramètre <Type> est une constante de type entier correspondant à une des valeurs suivantes :
    bdapEntréeL'appareil est entré dans la zone d'émission du groupe de balises Beacon.
    bdapSortieL'appareil est sorti de la zone d'émission du groupe de balises Beacon.
Attention :
  • Cette procédure doit être une procédure globale du projet. Dans le cas contraire, une erreur fatale sera déclenchée lors de l'appel de la fonction.
  • Cette procédure ne doit pas accéder à l'interface de l'application. En effet, comme la procédure peut être appelée en arrière-plan, les fenêtres ne sont pas forcément ouvertes.

Lancer une détection en arrière-plan sur un groupe de balises Beacon Masquer les détails

<Résultat> = BeaconDétecteEnArrièrePlan(<Groupe de balises> , <Procédure WLangage>)
<Résultat> : Booléen
  • Vrai si la détection a bien été démarrée,
  • Faux dans le cas contraire. Pour plus de détails sur l'erreur, utilisez la fonction ErreurInfo.
<Groupe de balises> : Variable de type beaconGroupe
Nom de la variable de type beaconGroupe décrivant le groupe de balises Beacon à détecter.
<Procédure WLangage> : Nom de procédure
Nom de la procédure WLangage (également nommée "callback") appelée lorsque le périphérique entre ou sort de la zone d'émission d'un groupe de balises Beacon.
Cette procédure est de la forme :
PROCEDURE <Nom de la procédure>(<Groupe>, <Type>)
  • Le paramètre <Groupe> est une variable de type beaconGroupe décrivant le groupe de balises Beacon pour lequel l'appareil vient d'entrer ou de sortir de la zone d'émission.
  • Le paramètre <Type> est une constante de type entier correspondant à une des valeurs suivantes :
    bdapEntréeL'appareil est entré dans la zone d'émission du groupe de balises Beacon.
    bdapSortieL'appareil est sorti de la zone d'émission du groupe de balises Beacon.
Attention :
  • Cette procédure doit être une procédure globale du projet. Dans le cas contraire, une erreur fatale sera déclenchée lors de l'appel de la fonction.
  • Cette procédure ne doit pas accéder à l'interface de l'application. En effet, comme la procédure peut être appelée en arrière-plan, les fenêtres ne sont pas forcément ouvertes.
Remarques

Utilisation d'un service de détection du mobile

La fonction BeaconDétecteEnArrièrePlan active un service de détection du mobile, non lié à WINDEV Mobile. Lorsque ce service est activé, il se met en attente et détecte uniquement les entrées et sorties de zones.
Attention : Pour économiser la consommation de batterie de l'appareil, la recherche des balises se trouvant à proximité de l'appareil est effectuée périodiquement avec des intervalles de temps pouvant aller jusqu'à plusieurs minutes. Il peut donc se passer un certain laps de temps entre l'arrivée (ou la sortie) de l'appareil dans le rayon d'émission d'un groupe de balises Beacon et la notification effective de l'application.
Pour arrêter le service de détection du mobile, il faut au choix :
Attention : La fermeture et la ré-exécution de l'application n'a pas de conséquence sur le fonctionnement du service de détection du mobile.

Comment connaître les balises à proximité ?

La détection des balises Beacon effectuée par la fonction BeaconDétecteEnArrièrePlan est indépendante du cycle de vie de l'application (cette détection est effectuée par un service du mobile, non lié à WINDEV Mobile).
  • Si l'application est en arrière-plan, elle continuera à recevoir les notifications d'entrée et de sortie.
  • Si l'application est arrêtée puis relancée dans la même zone, aucune notification ne sera effectuée. Il est nécessaire de sortir de la zone pour recevoir une notification de sortie. De même, il est nécessaire de rentrer dans la zone pour recevoir une notification d'entrée.
  • Si l'application est arrêtée, elle sera automatiquement démarrée lors de la détection d'un groupe de balises Beacon. Dans ce cas, les traitements exécutés sont les suivants :
    • code d'initialisation du projet,
    • procédure WLangage ("callback") passée en paramètre de la fonction BeaconDétecteEnArrièrePlan.
    La première fenêtre de l'application ne sera pas ouverte.
Pour connaître précisément la liste des balises beacon qui se trouvent à proximité de l'appareil ainsi que leur distance, plusieurs solutions sont disponibles :
  • Appeler la fonction BeaconDétectePrécis. Cette fonction est beaucoup plus consommatrice d'énergie et pour préserver la batterie de l'appareil, il est recommandé de l'appeler par exemple :
    • dans la procédure WLangage (appelée "callback") de la fonction BeaconDétecteEnArrièrePlan.
    • au lancement de l'application.
    • dans le traitement de mise en avant-plan de l'application.
  • Stocker la zone où se trouve l'appareil via la procédure WLangage de la fonction BeaconDétecteEnArrièrePlan. Ce stockage peut être effectué dans un fichier.

Divers

  • Il est possible de lister les détections actives avec la fonction BeaconListeDétectionEnArrièrePlan.
  • Si un groupe de balises ayant les mêmes informations (UUID, major, minor) est ajouté plusieurs fois dans la liste des détections actives, seul le dernier ajout sera pris en compte.

Version nécessaire

AndroidWidget Android Les fonctions de gestion des balises Beacon sont disponibles uniquement sur les appareils disposant d'une version d'Android supérieure ou égale à la version 4.3 (api level 18).
Si la fonction est utilisée avec une version antérieure du système, une erreur fatale sera déclenchée.
Pour connaître la version du système Android sur laquelle s'exécute l'application, utilisez la fonction SysVersionAndroid.
iPhone/iPadWidget IOS Les fonctions de gestion des balises Beacon sont disponibles uniquement sur les appareils disposant d'une version d'iOS supérieure ou égale à iOS 11.
AndroidWidget Android

Bluetooth Low Energy

L'appareil doit supporter la technologie Bluetooth Low Energy (Bluetooth LE).
AndroidWidget Android

Permissions requises

L'utilisation de cette fonction entraîne la modification des permissions requises par l'application.
Permission requise : ACCESS_COARSE_LOCATION : Permet à l'application d'obtenir la position approximative de l'appareil.
Spécificité Android 11 : L'utilisation de cette fonction nécessite la mise en place de la permission ACCESS_BACKGROUND_LOCATION permettant la localisation de l'appareil.
Cette permission permet d'autoriser l'utilisation de la fonction lorsque l'application est en arrière-plan.
Si l'application nécessite la localisation en arrière-plan, il faut :
  • Ajouter manuellement la permission "ACCESS_BACKGROUND_LOCATION" dans l'assistant de génération de l'application Android.
  • Demander explicitement la permission de localisation en arrière-plan à l'utilisateur avec la fonction PermissionDemande. Par exemple :
    PermissionDemande(permLocalisationEnArrièrePlan, Callback)
    PROCÉDURE INTERNE Callback(p est une Permission)
    SI p.Accordé ALORS
    // Utilisation possible des fonctions nécessitant la localisation en arrière-plan
    FIN
    FIN
Une fenêtre permet à l'utilisateur de :
  • accepter l'accès à la position de l'appareil avec l'application en arrière-plan,
  • limiter l'accès à la position à l'application active,
  • refuser l'accès à la position.
L'utilisateur peut également modifier son autorisation à posteriori dans les réglages de Android.
Remarques :
  • Respectez les spécifications Google concernant les applications utilisant la localisation en arrière-plan. Pour plus de détails, consultez https://support.google.com/googleplay/android-developer/answer/9799150. Si ces conditions ne sont pas remplies (notamment les conditions d'information de l'utilisateur), les applications pourront ne pas obtenir l'autorisation de publication sur Play Store.
  • La demande de permission de localisation en arrière-plan ne doit être effectuée que si la permission de localisation a été accordée. Dans le cas contraire, la fonction PermissionDemande échouera.
  • Si le choix de l'utilisateur lors de la demande de permission de localisation en arrière-plan est plus restrictif que le choix effectué lors de la demande de permission de localisation, l'application sera automatiquement relancée.
  • Sur les appareils en version inférieure à Android 10, si la permission de localisation a été accordée à l'application, la demande de permission de localisation en arrière-plan sera accordée sans affichage de fenêtre.
iPhone/iPadWidget IOSMac Catalyst

Spécificités

  • Il est possible de détecter 20 groupes au maximum. Si le nombre de groupes total à détecter dépasse ce nombre, une erreur sera renvoyée.
  • Il est nécessaire de disposer d'un accès à un réseau pour faire fonctionner correctement la détection.
  • Si l'application a été lancée en arrière-plan, il est important de ne pas effectuer de traitements longs dans la procédure WLangage (callback). En effet, le système iOS termine automatiquement l'exécution de l'application au bout d'une dizaine de secondes.
  • L'utilisation de cette fonction entraîne la modification des permissions requises par l'application.
    Permissions requises :
    • Location Always Usage Description.
    • Location When In Use Usage Description.
    • Location Always And When In Use Usage Description.
Composante : wd300android.aar
Version minimum requise
  • Version 23
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 19/09/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale