Alertas geolocalizadas (Geotriggers) con ArGIS y Android Raúl Jiménez Ortega Carlos Henche Gómez [email protected] [email protected] Objetivos y expectativas para hoy Como en 1h no da para ver todo sobre GeoTriggers… los objetivos son: • Conocer qué son y qué ventajas ofrecen • Entender mejor en qué contextos se pueden usar y qué posibilidades de configuración ofrecen • Aprender qué herramientas existen para facilitar el desarrollo y depuración • Entender un poco cómo funcionan a bajo nivel • Conocer las herramientas de desarrollo y depuración • Facilitar algunos recursos para los autodidactas Autor: Pete Prodoehl Entender el contexto Dónde y para qué se usan Location-aware Apps (Aplicaciones conscientes del contexto) Aplicaciones en domótica Activa, desactiva, reconfigura, … NASA HQ PHOTO Maurizio Pesce Dispositivos Wearables Notificaciones de tu bolsillo a tu muñeca … ¡o a tus ojos! Android Android Wear Geotriggers en dispositivos Android Android & Mirror API Geotrigger SDK + Android / Android Wear / Mirror API Qué son y cómo funcionan Visión a alto y bajo nivel Geotrigger Service: Geo-fences o Geo-vallas Perímetros virtuales de un área geográfica real - Wikipedia ofertas Arquitectura: Geotriggers en ArcGIS Online Ofertas, cine App 1 POST /location/update (App ID , Location, Tags, GCM_Project_ID, Device ID) Geotrigger Service GEOM TAGS geom1 tag1 callbackURL geom2 ofertas, cine push oAuth Credentials, Push Certificates … Notification App X API REST Push Server … ACTION GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates Geotrigger tools Trabajando y depurando aplicaciones con geotriggers Geotrigger Tools: Editor Herramienta Open Source para crear triggers App 1 POST /trigger/create Geotrigger Editor (App ID, Feature) Geotrigger Service GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates … App X API REST GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates Geotrigger Tools: Editor Herramienta Open Source para crear triggers App 1 POST /trigger/create Geotrigger Editor (App ID, Feature) Geotrigger Service GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates … Response App X API REST GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates Geotrigger Tools: Faker Herramienta Open Source para falsificar localizaciones App 1 Geotrigger Faker POST /location/update Geotrigger Service GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates … App X API REST GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates Geotrigger Tools: Faker Herramienta Open Source para falsificar localizaciones App 1 Geotrigger Faker POST /location/update Geotrigger Service GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates … Response App X API REST GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates Trigger Callbacks - Ejemplo Info https://developers.arcgis.com/geotrigger-service/api-reference/trigger-callback/ Debugger: http://desarrolladores.esri.es/code/geotriggers/callback.php Geotrigger Tools: Pre-requisitos 1.- Creamos una cuenta developers.arcgis.com 3.- Registramos nuestra aplicación developers.arcgis.com/en/applications/#/<hash>/register/ 2.- Creamos una app developers.arcgis.com/en/applications Geotrigger Tools - Geotrigger Editor Un vistazo rápido Parámetros de un trigger • Etiquetas: filtrar/clasificar las alertas • Condition: geometría y dirección (entrar/salir) • Action: - Push (móvil): mensaje, icono, sonido, url, profile… - Change the tracking profile - Callback URL (server) • Rate Limit: intervalo mínimo de tiempo para volver a desencadenar la acción (Push ,…) • Times: número máximo por dispositivo • Time: días de la semana y horas • Otros: properties, geoformat, sound, … Notificaciones Activa la música que te interesa y te avisaremos de lo conciertos Rock Indie Techno Hiphop …. Parámetros de un trigger • Etiquetas: filtrar/clasificar las alertas • Condition: geometría y dirección (entrar/salir) • Action: - Push (móvil): mensaje, icono, sonido, url, profile… - Change the tracking profile - Callback URL (server) • Rate Limit: intervalo mínimo de tiempo para volver a desencadenar la acción (Push ,…) • Times: número máximo por dispositivo • Time: días de la semana y horas • Otros: properties, geoformat, sound, … Profiles (Perfiles de configuración) ROUGH MODE (Modo áspero): 1. Consumo mínimo de batería 2. Menor precisión, usa triangulación. 3. Precisión aproximada: 500metros (en función del nº de antenas) FINE MODE (Modo fino) 1. Alto consumo de batería (usa siempre GPS, aproximadamente cada 5 segs) 2. Recomendado para cortos periodos de tiempo o dispositivos con alimentación 3. Precisión aproximada: 40 metros ADAPTATIVE MODE (Modo adaptativo) 1. Recomendado en mayoría de los casos 2. Se adapta al contexto (proximidad a las geofences, velocidad de desplaz., etc) 3. Precisión aproximada: 100m sin GPS. Funciona bien en ciudades (usa wifi) 4. Almacenar polígonos cercanos y usa geofencing nativo (GPS cdo está cerca) Configurando las notificaciones PUSH Android y developers.arcgis.com Configurar GCM en ArcGIS Online (1/4) 1. Creamos un proyecto 2. Activamos la API de GCM console.developers.google.com /project/<project_id>/apiui/api Configurar GCM en ArcGIS Online (2/4) 4. Seleccionamos clave de servidor /project/<project_id>/apiui/credential 3. Creamos una clave pública /project/<project_id>/apiui/credential Configurar GCM en ArcGIS Online (3/4) 5. Dejamos las opciones por defecto 6. Copiamos la clave /project/<project_id>/apiui/credential /project/<project_id>/apiui/credential Configurar GCM en ArcGIS Online (4/4) https://developers.arcgis.com/en/applications/#/<hash>/settings/ Configurando nuestro proyecto Android Studio & Eclipse Documentación y códigos github.com/esri?query=geotrigger developers.arcgis.com GeotriggerActivity.java GeotriggerActivity.java developers.arcgis.com/en/applications/#/<hash>/licensing GeotriggerActivity.java console.developers.google.com/project/<project_id> Notificando a Android Wear Usando NotificationCompat Enviando una notificación personalizada Capturando la notificación PUSH “data={ \”title \” : \” Titulo de la not \”, …. }” Notificando a Google Glass Usando Mirror API y PHP tag2 Enviando una notificación personalizada tag2 App 1 POST /location/update (App ID , Location, Tags, GCM_Project_ID, Device ID) POST callback_url Callback Payload (JSON) Geotrigger Service GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates … Mirror App X API REST GEOM TAGS … ACTION geom1 tag1 callbackURL geom2 tag2 push oAuth Credentials, Push Certificates Cómo comunicarse con la Mirror API https://github.com/googleglass/mirror-quickstart-php http://desarrolladores.esri.es http://geodevelopers.org Conclusiones Y para terminar, recordad… Aspectos a destacar 1. Geotriggers es un servicio de ArcGIS Online Ready to use 2. Geotrigger SDK 1. Te abstrae del hardware y S.O. 2. Se preocupa del problema de la batería por ti 3. Cuenta gratuita de desarrolladores = 600 geotriggers / mes 4. Hay 3 tipos de acciones: Push, Callbacks y cambio de Profile Otros recursos 1. Vídeos / proceedings (esri.com/events/recent-proceedings) 1. Geotrigger Service: Get Started, Overview, Use Cases & the API 2. Geotrigger Service: iOS & Android Tips and Tricks 3. Lessons Learned while Beta Testing the ESRI Geotrigger SDK 2. Esri Geotrigger Service FAQ 3. http://desarrolladores.esri.es -> Máquina virtual 4. Github FeatureService2Geotrigger