Invocar Navigation Global desde otras aplicaciones

Es posible llamar a Verizon Connect Navigation Global Edition (NavGE) con otras aplicaciones para proporcionar orientación sobre la ruta a destinos aportados por dichas aplicaciones. Debido a que NavGE requiere de autenticación, la aplicación de llamada debe proporcionar información de autenticación antes de poder utilizarse. La autenticación adopta la forma de un token TDE y un nombre de usuario. Todos los datos se transmiten como pares de valor clave (KVP), pero el mecanismo depende del sistema operativo.

En lo que respecta a Android, la llamada se realiza con una intención explícita y los datos se transmiten como KVP (llamados datos “adicionales” en un sistema operativo Android) en ese momento. En cuanto a iOS, la mayoría de los datos se transmiten en la URL bajo un esquema de URL, en tanto que los datos adicionales se transmiten en la mesa de trabajo de iOS.

Datos de invocación

Tipo de comando

command=[login|navigate]

El comando login ejecuta Navigation o lo trae a un primer plano, y valida los datos KVP de autenticación.

El comando navigate ejecuta Navigation o lo trae a un primer plano, y usa los datos de KVP de ajuste de destinos y ruta opcional para calcular una ruta. Si se proporcionan, también valida los datos KVP de autenticación.

Especificación del banner

Los parámetros del banner le permiten reservar las partes superior o inferior (o ambas) de la pantalla para su personalización (por ejemplo, íconos de un sistema de cliente específico). De manera predeterminada, la aplicación Navigation llena la pantalla completa.

  • TopPadding = altura del banner superior en DIP (Unidad independiente del dispositivo).

  • BottomPadding = altura del banner inferior en DIP.

Autenticación

Autenticación TDE:

  • tdetoken = token tal como se recibe de una solicitud de autenticación de TDE.

  • tokenexpiry = la fecha de vencimiento de tdetoken (en formato ISO 8601, zona horaria UTC) tal como se recibe de la solicitud de autenticación de TDE.

  • user = nombre de usuario en formato de usuario de Fleet (company:driver) utilizado para adquirir el tdetoken.

Autenticación con token STSv4 de Verizon Connect Reveal

En lugar de un token TDE, Navigation puede aceptar un token STSv4 de Reveal.

  • externaltoken = valor de cadena que contiene el valor del token, de manera opcional con prefijo de identificador de región y el carácter -, por ejemplo, “UE-” para Europa. Si se omite el prefijo, se supone que corresponde a la región de EE. UU.

  • externaltokentype = VZCSMB para token Reveal/STSv4.

Destino

NavGE comprueba los parámetros de destino en el siguiente orden: site, locationid, latitude y longitude, address. Tan pronto se detecta el parámetro, el resto pueden ignorarse. Si no se detectan parámetros, NavGE informa un error.

Opción 1: los datos del sitio de la ubicación se encuentran en formato JSON.

  • site= Para Android, es una cadena JSON en formato de un Sitio TDE. Para iOS, esta es una clave que apunta a una cadena JSON de un sitio TDE en el tablero de iOS.

    site se utiliza con preferencia a latitude/longitude. Suele preferirse esto por dos motivos principales:

    • El enrutamiento a puntos geodésicos (latitude/longitude) puede producir resultados inesperados, ya que el mapa puede señalar la ruta equivocada cerca del punto.

    • Con un solo punto geodésico, la información de destino debe deducirse a través de una codificación geográfica inversa. De esta manera, es posible obtener un nombre de carretera equivocado, pero también resulta imposible determinar los números de desarrollo de forma confiable.

La especificación completa de un sitio TDE se encuentra fuera del alcance de este documento. Sin embargo, los elementos mínimos de sitio requeridos para utilizar con NavGE son los siguientes:

  • Un valor ID (0 excepto que los datos del sitio correspondan a un registro real de Fleet Site).

  • Punto de ubicación.

  • Un miembro del conjunto de direcciones con un número de calle (si se conoce) y un nombre de calle.

Opción 2: Id. del marcador del cliente.

  • locationid = Id. del marcador de un cliente. Se utiliza locationid para buscar el marcador y descargar su información, que luego se utiliza para generar una ruta a la ubicación.

Opción 3: latitud y longitud de la ubicación.

  • latitude = Debe proporcionarse junto con longitude.

  • longitude = Debe proporcionarse junto con latitude.

Opción 4: dirección textual de la ubicación.

  • address = Dirección textual.

Restricción de región

  • restrictedregions = los códigos de las regiones restringidas, cada uno separado por un punto y coma. Un código de región es el código de la subdivisión definida en ISO 3166-2; por ejemplo, US-CA es el código de California. US-CA es el único código de región admitido actualmente. Es posible que se agreguen otras regiones en el futuro.

La Junta de Recursos del Aire de California implementó regulaciones para controlar la cantidad de emisiones de gases de efecto invernadero de los vehículos motorizados en California. Como resultado, la mayoría de los camiones fabricados antes de 2010 no pueden operar legalmente en California.

El parámetro restrictedregions se puede utilizar para admitir la restricción de la región de California.

Es necesario especificar un parámetro de restricción de región en la solicitud de ruta si la restricción de región es aplicable al vehículo. Si se especifica una restricción de región, se obtiene el siguiente resultado:

  • El vehículo no puede ingresar a la región restringida, por lo que Navigation no genera una ruta desde fuera de la región restringida hacia la región restringida.

  • Navigation genera una ruta que evita pasar por la región restringida.

  • Los vehículos pueden navegar desde una región restringida hasta una no restringida. En este caso, se proporciona una advertencia al conductor.

Ajustes de ruta

  • hazmat = (opcional) Ofrece una lista de códigos de hazmat (materiales peligrosos) que corresponden a un ajuste de hazmat, separados por comas a fin de que se habiliten para la ruta. Para obtener más información, consulte Nueve clases de materiales peligrosos.

Dimensiones del vehículo

  • dimensionunits = (opcional) Unidad de medida preferida para la dimensión del vehículo. No distingue entre mayúsculas y minúsculas. Los valores válidos son 'm' y 'ft', para metros y pies, respectivamente.

  • length = (opcional) Extensión del vehículo. Para números decimales, ingrese un punto para un punto decimal (no hay coma disponible). Este valor se ignorará si falta 'dimensionunits' o si este no es válido. El rango de valor válido es 8 ft a 10 000 ft.

  • width = (opcional) Ancho del vehículo. Para números decimales, ingrese un punto para un punto decimal (no hay coma disponible). Este valor se ignorará si falta 'dimensionunits' o si este no es válido. El rango de valor válido es 2 ft a 500 ft.

  • height = (opcional) Altura del vehículo. Para números decimales, ingrese un punto para un punto decimal (no hay coma disponible). Este valor se ignorará si falta 'dimensionunits' o si este no es válido. El rango de valor válido es 2 ft a 100 ft.

  • weightunit = Unidad de medida de preferencia para el peso del vehículo. Los valores válidos son 'lb' y 'kg' para libras y kilogramos, respectivamente.

  • grossweight = Peso bruto del vehículo, que incluye el peso del vehículo y la carga. Para números decimales, ingrese un punto para un punto decimal (no hay coma disponible). Se ignorará este valor si 'weightunit' falta o no es válido. El rango de valor válido es 10 000 lb a 500 000 lb.

Comportamiento regresar a la aplicación

Navigation regresa a la aplicación de llamada en los siguientes casos:

  • Se completó la ruta al llegar a destino.

  • El usuario toca la flecha de retroceso en la pantalla Descripción general de la ruta.

Para habilitar esta funcionalidad en iOS, debe definirse la propiedad appId en la solicitud de navegación. Cuando Nav regresa a la aplicación de llamada, se abre una URL con el valor appId si el valor se encuentra en la lista compatible con Nav (valores admitidos: TelogisWorkplan). Por ejemplo, si appId=MyApp, Nav abre la URL MyApp://. La aplicación de llamada debería registrarse en iOS para abrir URL con ese patrón.

Para Android, no se necesitan medidas para habilitar esta funcionalidad. En los casos de arriba, Nav se envía a sí misma a un segundo plano.

Comportamiento de autenticación de la API

Navigation comprueba la presencia de datos de autenticación válidos cuando recibe una intención.

Para solicitudes de intención con command=login, se requieren datos de autenticación. Para solicitudes con command=navigate, el comportamiento de Navigation depende de los datos de la intención y del estado actual de la aplicación. En la siguiente tabla, se describen los posibles resultados:

Navigation ya está autenticada

La intención contiene datos de autenticación

Comprobar y utilizar nuevos datos de autenticación de intenciones

La intención omite los datos de autenticación

Mantener la autenticación existente de Navigation

Navigation no está autenticada

La intención contiene datos de autenticación

Comprobar y utilizar datos de la intención

La intención omite los datos de autenticación

Mostrar página de inicio de sesión

Si Navigation ya está autenticada y recibe una intención con datos de autenticación válidos, Navigation cambia al usuario especificado en la intención. Si no puede completarse el cambio de usuario, Navigation regresa a la página de inicio momentáneamente antes de regresar al usuario original.

Ejemplos de código

Android

La solicitud debería enviarse a NavGE mediante una intención de Android. NavGE se ubica en primer plano cuando se recibe la intención.

El nombre de paquete de NavGE es "com.telogis.nav6". Puede utilizarse para lanzar NavGE y aprobar parámetros de solicitud en NavGE.

Ejemplos de código

Los siguientes son ejemplos Java. Otra manera habitual de probar intenciones en Android es invocar al Administrador de actividades del dispositivo mediante el uso de adb.

  1. Solicitud de inicio de sesión:

    Intent intent = getPackageManager().getLaunchIntentForPackage("com.telogis.nav6");
    intent.PutExtra("command", "login");
    intent.PutExtra("user", "FleetName:Username");
    intent.PutExtra("tokenexpiry", "2020-09-29T18:00:00Z");
    intent.PutExtra("tdetoken", "Token");
    
    // Ejecutar NavGE y transmitir parámetros de solicitud 
    startActivity(launchIntent);

    A través del Administrador de actividades de ADB (línea de comando Linux/MacOS):

    adb shell 'am start -a android.intent.action.MAIN -n
    "com.telogis.nav6/telogis.navigation.MainActivity" -e command login -e user
    "examlcustmr:exampldrvr" -e tdetoken "tokendata" -e tokenexpiry "YYYY-MM-
    DThh:mm:ssZ"'

    A través del Administrador de actividades de ADB (línea de comando Windows):

    adb shell ""am start -a android.intent.action.MAIN -n
    "com.telogis.nav6/telogis.navigation.MainActivity" -e command login -e user
    "examplecustomer:exampledriver" -e tdetoken "tokendata" -e tokenexpiry "YYYY-MM-
    DThh:mm:ssZ" ""
  2. Solicitud de Navigation:

    Intent intent = getPackageManager().getLaunchIntentForPackage("com.telogis.nav6");
    double latitude = 43.645238
    double longitude = --79.364566
    string hazmatSettings = "1,2,3"
    intent.PutExtra("command", "navigate");
    
    // Especificación de banner opcional para un banner personalizado superior o inferior (o ambos); por ejemplo:
    int topBannerHeight = 50;
    int bottomBannerHeight = 50;
    intent.PutExtra("TopPadding", topBannerHeight);
    intent.PutExtra("BottomPadding", bottomBannerHeight);
    
    // Datos de autenticación opcionales
    intent.PutExtra("user", "FleetName:Username");
    intent.PutExtra("tdetoken", "Token");
    intent.PutExtra("tokenexpiry", "YYYY-MM-DDThh:mm:ssZ");
    
    // Fin de datos opcionales de autenticación
    intent.PutExtra("latitude", latitude);
    intent.PutExtra("longitude", longitude);
    intent.PutExtra("address", "Address");
    intent.PutExtra("hazmat", hazmatSettings);
    intent.PutExtra("dimensionunits", "m");
    intent.PutExtra("length", "27.4321");
    intent.PutExtra("width", "2.5908");
    intent.PutExtra("height", "4.1148");
    intent.PutExtra("weightunit", "lb");
    intent.PutExtra("grossweight", "79365");
    
    // Ejecutar NavGE y transmitir parámetros de solicitud
    startActivity(launchIntent);

    A través del Administrador de actividades de ADB (línea de comando Linux/MacOS):

    adb shell am start -a android.intent.action.VIEW -n
    com.telogis.nav6/telogis.navigation.MainActivity --es command navigate --es latitude
    43.651511 --es longitude -79.372205 --es hazmat 1,2,3 --es dimensionunits m --es
    length 27.4321 --es width 2.59082 --es height 4.11480 --es weightunit lb --es
    grossweight 79367

    A través del Administrador de actividades de ADB (línea de comando Windows):

    adb shell am start -a android.intent.action.VIEW -n
    com.telogis.nav6/telogis.navigation.MainActivity --es command navigate --es latitude
    43.651511 --es longitude -79.372205 --es hazmat 1,2,3 --es dimensionunits m --es
    length 27.4321 --es width 2.59082 --es height 4.11480 --es weightunit lb --es
    grossweight 79367

iOS

  1. Registrar el esquema de URL NavGE en la aplicación iOS:

    NavGE proporciona un esquema de URL TelogisNavigationGlobal://. Una aplicación de iOS puede transmitir una cadena de consulta a NavGE al ejecutar NavGE.

    Para comprobar si puede abrirse NavGE con el método canOpenURL, registre el esquema de la URL en info.plist de la aplicación iOS.

    <key>LSApplicationQueriesSchemes</key>
    <array>
    <string>TelogisNavigationGlobal</string>
    </array>
  2. Ejecutar NavGE y transmitir solicitud a NavGE con OpenUrl:

    Solicitud de inicio de sesión:

    string url = "TelogisNavigationGlobal://?" +
    "command=login" +
    "&user=FleetName:UserName" +
    "&tdetoken=Token" +
    "&tokenexpiry=TokenExpiry";
    
    // Ejecutar NavGE y transmitir parámetros de la solicitud
    UIApplication.SharedApplication.OpenUrl(url);

    Solicitud de Navigation:

    // Escribir los datos del sitio en la mesa de trabajo si hay un sitio asociado con la ubicación.
    String SiteData = …;
    String siteKeyInPasteBoard = "site";
    UIPasteboard.FromName pasteBoard = UIPasteboard.FromName(siteKey, true );
    pasteBoard.String = SiteData;
    
    string url = "TelogisNavigationGlobal://?" +
    "command=navigate" +
    "&latitude=Latitude" +
    "&longitude=Longitude" +
    "&address= Address" +
    "&site=" + siteKeyInPasteBoard // the name of the pasteboard of the site data.
    "&user=FleetName:UserName" + // optional, do not have to pass user
    credentials if the user has logged in previously.
    "&tdetoken=Token" +
    "&tokenexpiry=TokenExpiry" +
    "&hazmat=HazmatSettings" +
    "&dimensionunits=DimensionUnits" +
    "&length=Length" +
    "&width=Width" +
    "&height=Height" +
    "&weightunit=WeightUnit" +
    "&grossweight=GrossWeight" +
    
    
    // Ejecutar NavGE y transmitir parámetros de la solicitud
    UIApplication.SharedApplication.OpenUrl(url);

Intenciones generales de Navigation en Android

En la plataforma Android, Navigation también recibe intenciones implícitas de otras aplicaciones. A continuación, se describen los esquemas de intenciones y el comportamiento de Navigation para cada uno de ellos.

NavGE admite el esquema de Geo y el esquema de Navigation.

  1. Esquema geográfico

    geo:latitude,longitude

    Navegue a la ubicación con la longitud y latitud proporcionadas.

    Ejemplo: geo:43.780252,-79.411594

    geo:latitude,longitude?z=zoom

    Navegue a la ubicación con la latitud y la longitud proporcionadas con un determinado nivel de zoom.

    Ejemplo: geo:43.780252,-79.411594?z=11

    Nota: NavGE ignora el valor z=zoom.

    geo:0,0?q=latitude,longitude(label)

    Navegue hasta la ubicación en la longitud y latitud dadas con una etiqueta de cadena.

    Ejemplo: geo:0,0?q=43.780252,-79.411594(Treasure)

    Nota: NavGE intenta navegar a las coordenadas dadas, pero se ignora la cadena de etiqueta.

    geo:0,0?q=my+street+address

    Navegue hasta la ubicación de “mi dirección postal” (puede ser una dirección específica o una consulta de ubicación).

    Ejemplo: geo:0,0?q=20+Enterprise%2C+CA

    Nota: Todas las cadenas que se transmiten en la URI de Geo deben codificarse. Por ejemplo, la cadena “1st & Pike, Seattle” debería ser 1st%20%26%20Pike%2C%20Seattle. Los espacios en la cadena deben codificarse con un %20 o reemplazarse por el signo más (+).

  2. Esquema de Google Navigation

    Utilice esta intención para navegar a la dirección o coordenada específicas.

    • google.navigation:q=a+street+address

    • google.navigation:q=latitude,longitude

    • google.navigation:ll=latitude,longitude

Casos de uso específicos

Direcciones comúnmente desconocidas para NavGE

Los usuarios que navegan a áreas recientemente desarrolladas con direcciones que no pueden codificarse de manera geográfica deberían utilizar una definición del sitio. Una definición de sitio debería incluir lo siguiente:

  • Coordenadas de latitud y longitud, ingresadas en los campos “lat” y “lon”.

  • Información de la dirección, ingresada en el campo “name”.

En el siguiente ejemplo, se muestra un comando de navegación y una definición de sitio:

command = navigate
site = "{\"id\": 0,\"position\":
{\"lat\": 54.980771,\"lon\": -1.646463}
,\"name\":\"Address or name they want displayed to the driver\",\"addresses\": [
{\"city\": \"City name to display, if desired\"}
]}";

Este comando navega a la lat/lon proporcionadas. El valor de la clave “name” se muestra en la parte superior de la pantalla Descripción general de la ubicación de la aplicación NavGE.


¿Fue útil este artículo?


Usuarios a los que les pareció útil: 1 de 1