AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Comunicación / Funciones Beacon
  • Usar un servicio de detección de móviles
  • ¿Cómo identificar los faros cercanos?
  • Varios
  • Versión necesaria
  • Bluetooth de baja energía
  • Permisos necesarios
  • Características específicas
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Notifica a la aplicación cuando el dispositivo entra o sale del rango de transmisión de un conjunto de balizas.
Ejemplo
// In a museum, we want to trigger the reading (resp. the stop) of an audio guide
// when the visitor enters into (resp. exits from) a room.
// Each Beacon is associated with the same UUID corresponding to the museum and
// a Major number corresponding to the room in which the beacon will be positioned.
// A Beacon is placed at each entrance to each room of the museum..
// The application must call the BeaconDetectBackground function
// with an array of BeaconGroup variables corresponding to each museum room.
 
// The callback procedure passed as parameter to the function will be called
// whenever entering into or exiting from a room and it will give information
// about the detected groupe of beacons in order to
// emulate the audio-guide to play the corresponding track.
 
// Museum UUID
sUUID is string = "f4231ab6-5ef2-6c99-4229-af6c72e0446e"
// Create a beaconGroup variable for each room
groupRoom1 is beaconGroup
groupRoom1.UUID = sUUID
groupRoom1.Major = 1
groupRoom2 is beaconGroup
groupRoom2.UUID = sUUID
groupRoom2.Major = 2
groupRoom3 is beaconGroup
groupRoom3.UUID = sUUID
groupRoom3.Major = 3
groupRoom4 is beaconGroup
groupRoom4.UUID = sUUID
groupRoom4.Major = 4
// Start the detection
arrBeaconGroup is array of beaconGroup = [groupRoom1, ...
   groupRoom2, groupRoom3, groupRoom4)
// The ProcDetection procedure will be run whenever the mobile enters into
// or exits from the area defined by each group of beacons.
BeaconDetectBackground(arrBeaconGroup, ProcDetection)
PROCEDURE ProcDetection(Group is beaconGroup, nType is int)
 
IF nType = bdbLeave THEN
// Stop the current track
RETURN
END
 
IF nType = bdbEnter THEN
SWITCH Group.Major
CASE 1
// Read the track for room 1
CASE 2
// Read the track for room 2
...
END
END
Sintaxis

Iniciando una detección en varios grupos de Faros en la Background Ocultar los detalles

<Result> = BeaconDetectBackground(<Array> , <WLanguage procedure>)
<Result>: booleano
  • True si se inició la detección,
  • False en caso contrario. Para obtener más información sobre el error, utilice la función ErrorInfo.
<Array>: Array de beaconGroup
Nombre de la variable array de beaconGroup que describe el grupo de balizas a detectar.
<WLanguage procedure>: Nombre de Procedure
Nombre de la WLanguage Procedure ("callback") llamada cuando el dispositivo entra o sale del rango de transmisión de un grupo de Balizas.
Este procedimiento tiene el siguiente formato:
PROCEDURE <Procedure name>(<Group>, <Type>)
  • El parámetro <Grupo> es una variable de tipo beaconGroup que describe el grupo de balizas para el que el dispositivo acaba de entrar o salir del rango de transmisión.
  • El parámetro es una constante entera que corresponde a uno de los siguientes valores:
    bdbEnterEl dispositivo entró en el rango de transmisión de un grupo de faros.
    bdbLeaveEl dispositivo dejó el rango de transmisión de un grupo de faros.
Atención:
  • Este Procedure debe ser un Procedure global de proyecto. De lo contrario, se producirá un error fatal durante la llamada a la función.
  • Este Procedure no debe acceder a la interfaz de la aplicación. De hecho, como el Procedure puede ser llamado en Background, las ventanas no necesariamente se abren.

Iniciando una detección en un grupo de faros en la Background Ocultar los detalles

<Result> = BeaconDetectBackground(<Group of Beacons> , <WLanguage procedure>)
<Result>: booleano
  • True si se inició la detección,
  • False en caso contrario. Para obtener más información sobre el error, utilice la función ErrorInfo.
<Group of Beacons>: beaconGroup Variable
Nombre de la beaconGroup Variable que describe el grupo de balizas a detectar.
<WLanguage procedure>: Nombre de Procedure
Nombre de la WLanguage Procedure ("callback") llamada cuando el dispositivo entra o sale del rango de transmisión de un grupo de Balizas.
Este procedimiento tiene el siguiente formato:
PROCEDURE <Procedure name>(<Group>, <Type>)
  • El parámetro <Grupo> es una variable de tipo beaconGroup que describe el grupo de balizas para el que el dispositivo acaba de entrar o salir del rango de transmisión.
  • El parámetro es una constante entera que corresponde a uno de los siguientes valores:
    bdbEnterEl dispositivo entró en el rango de transmisión de un grupo de faros.
    bdbLeaveEl dispositivo dejó el rango de transmisión de un grupo de faros.
Atención:
  • Este Procedure debe ser un Procedure global de proyecto. De lo contrario, se producirá un error fatal durante la llamada a la función.
  • Este Procedure no debe acceder a la interfaz de la aplicación. De hecho, como el Procedure puede ser llamado en Background, las ventanas no necesariamente se abren.
Observaciones

Usar un servicio de detección de móviles

La función BeaconDetectBackground activa un servicio de detección del móvil, no relacionado con WINDEV Mobile. Cuando este servicio está habilitado, está en pausa y solo detecta las entradas y salidas en/desde rangos.
Atención: Para reducir el consumo de batería, el dispositivo busca balizas cercanas en intervalos de tiempo de hasta varios minutos. Por lo tanto, puede transcurrir cierto tiempo entre el momento en que el dispositivo entra (o sale) del alcance de transmisión de un grupo de balizas y el momento en que la Notification aparece en la aplicación.
Para detener el servicio de detección de móviles, debe:
Atención: El cierre y la reanudación de la aplicación no tiene ningún efecto sobre el modo de funcionamiento del servicio de detección de móviles.

¿Cómo identificar los faros cercanos?

La detección de Beacon a través de BeaconDetectBackground es independiente de la vida útil de la aplicación (esta detección la realiza un servicio de dispositivo móvil que no es relacionado para WINDEV Mobile).
  • Si la aplicación está en Background , seguirá recibiendo las notificaciones de entrada y salida.
  • Si la aplicación se detiene y luego se reinicia en el mismo rango , no habrá Notification. Es necesario dejar el rango de transmisión para recibir una salida Notification. Asimismo, es necesario entrar en el rango para recibir una entrada Notification.
  • Si la aplicación se detiene , se iniciará automáticamente cuando se detecte un grupo de Beacons. En este caso, se ejecutan los siguientes procesos:
    • código de inicialización del proyecto,
    • procedimiento WLanguage ("callback") pasado como parámetro de la función BeaconDetectBackground.
    La primera ventana de aplicación no se abrirá.
Existen varias soluciones para get la lista exacta de Beacons cerca del dispositivo, y para determinar a qué distancia se encuentran:
  • Llamar BeaconDetectPrecise. Esta función consume mucha energía y para ahorrar la batería del dispositivo, le aconsejamos que la llame:
    • en el procedimiento WLanguage (callback) de la función BeaconDetectBackground.
    • al iniciar la aplicación.
    • en el Process para mover la aplicación en el primer plano.
  • Guarde el rango de transmisión donde se encuentra el dispositivo a través del WLanguage Procedure de BeaconDetectBackground. Este almacenamiento puede realizarse en un archivo.

Varios

  • Las detecciones de Active pueden ser listadas por BeaconListBackgroundDetection.
  • Si un grupo de Balizas con la misma información (UUID, mayor, menor) se añade varias veces a la lista de detecciones de Active, sólo se tendrá en cuenta la última adición.
AndroidWidget Android

Versión necesaria

Las funciones de gestión de balizas sólo están disponibles en Android 4.3 o posterior (nivel 18 de API).
Si se utiliza la función con una versión anterior del sistema, se produce un error fatal.
Para determinar la versión de Android en la que se está ejecutando la aplicación, utilice la función SysAndroidVersion.
AndroidWidget Android

Bluetooth de baja energía

El dispositivo debe ser compatible con la tecnología Bluetooth de baja energía (Bluetooth LE).
AndroidWidget Android

Permisos necesarios

La llamada a esta función modifica los permisos requeridos por la aplicación.
Permiso necesario: ACCESS_COARSE_LOCATION: Permite aplicar a get la posición aproximada del dispositivo.
Caso específico de Android 11: Esta función requiere la Permission ACCESS_BACKGROUND_LOCATION para acceder a la ubicación del dispositivo.
Esta Permission permite utilizar la función cuando la aplicación está en la Background.
Si la aplicación necesita utilizar la ubicación de Background:
  • Agregar manualmente el permiso "ACCESS_BACKGROUND_LOCATION" en el asistente de generación de la aplicación Android.
  • Solicitar explícitamente la ubicación de fondo Permission con PermissionRequest. Por ejemplo:
    PermissionRequest(permBackgroundLocation, Callback)
    INTERNAL PROCEDURE Callback(p is Permission)
    IF p.Granted THEN
    // Functions that require background location access can be used
    END
    END
Una ventana permite a los usuarios:
  • permitir el acceso a la ubicación del dispositivo mientras la aplicación está en la Background,
  • permitir el acceso a la ubicación sólo mientras la aplicación está en uso,
  • negar el acceso a la ubicación. El usuario puede cambiar estos permisos en cualquier momento en la configuración de Android.

Observaciones:
  • Siga las directrices de Google para las aplicaciones que requieren acceso a la ubicación de Background. Para obtener más información, consulte https://support.google.com/googleplay/android-developer/answer/9799150. Si no se cumplen estas condiciones (especialmente los requisitos de información del usuario), es posible que no se acepte la publicación de las aplicaciones en Google Play.
  • La ubicación de fondo Permission sólo debe solicitarse si se ha concedido la ubicación Permission. De lo contrario, PermissionRequest fallará.
  • Si la opción elegida por el usuario para la solicitud de acceso a la localización de Background es más restrictiva que la opción elegida para la solicitud de acceso a la localización, la aplicación se reiniciará automáticamente.
  • En los dispositivos con Android 10 o anterior, si se ha concedido la ubicación Permission a la aplicación, se concederá la ubicación de fondo Permission sin mostrar una ventana.
iPhone/iPadIOS WidgetMac Catalyst

Características específicas

  • Tienes la capacidad de detectar hasta 20 grupos. Se producirá un error si el número total de grupos a detectar supera este número.
  • Se requiere un acceso a la red para que la detección funcione correctamente.
  • Si la aplicación se inició en segundo plano, es importante no realizar procesos largos en el WLanguage Procedure (llamada Procedure). De hecho, el sistema iOS termina automáticamente la ejecución de la aplicación después de diez segundos.
  • La llamada a esta función modifica los permisos requeridos por la aplicación.
    Permisos necesarios:
    • La ubicación siempre utiliza description.
    • Descripción del uso de la localización cuando la aplicación está activa.
    • Ubicación siempre y cuando se usa description.
Componente: wd290android.aar
Versión mínima requerida
  • Versión 23
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 29/06/2023

Señalar un error o enviar una sugerencia | Ayuda local