Formato de datos de archivos adjuntos

La forma más fácil de agregar archivos adjuntos de Notificaciones de Nearby es mediante el Panel de Beacons de Google. Como alternativa, puedes usar la API de Proximity Beacon y el formato de datos de archivos adjuntos que se describe a continuación.

Los adjuntos de la función Notificaciones de Nearby deben usar el espacio de nombres com.google.nearby, un tipo que consta del código de idioma de dos letras y el sufijo opcional -debug.

Los archivos adjuntos deben tener el formato JSON. Por ejemplo:

    {
      "title": "Example",
      "url": "https://www.example.com"
    }

El formato JSON permite una orientación más específica, como se muestra a continuación:

    {
      "title": "Example",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startDate": "2017-01-01",
          "endDate": "2017-01-31",
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00",
          "anyOfDaysOfWeek": [1, 2, 3, 4, 5, 6, 7],
          "anyOfAppInstallStates": ["INSTALLED", "NOT_INSTALLED"]
        }
      ]
    }

Aquí:

  • title: el título del contenido. La longitud de title debe ser inferior a 40 caracteres y debe ser inferior a 50 caracteres. Idealmente, esto debería darle al usuario un llamado a la acción. Por ejemplo, Order with your phone, skip the line, Set up your thermostat o Learn more about sea otters.
  • url: La URL para la aplicación, el sitio web o el servicio.
  • orientación: Reglas opcionales para limitar la visibilidad de las notificaciones según el contexto del dispositivo.

Formatos de URL

Notificaciones de Nearby admite tres formatos de URL:

URL web

Una URL web es exactamente eso, solo una URL normal. Cuando se recibe una URL web, se le solicita al usuario que la abra en el navegador predeterminado. No se requiere una configuración especial de la app. Las URL web deben usar HTTPS y tienen el formato de una URL normal:

  https://www.example.com

Si la URL web no activa una notificación, las causas más probables son las siguientes:

  • Usa HTTP en lugar de HTTPS
  • Está prohibido establecer un vínculo con la tienda de aplicaciones, como play.google.com. La página web debe ser independiente y ofrecer información útil o acciones directamente en la página de destino.

Intención de aplicación

Las URL de intents de una app se usan para activar un intent en una app. Cuando se recibe una URL de intent de app, la app asociada responde a los parámetros incluidos en la URL, siempre que esté presente el filtro de intents de la app correspondiente. Si la app no está instalada, se dirige al usuario a Play Store para que la instale. Una vez instalada, puede iniciarla y continuar con la función especificada por el desarrollador. Las URL de intents de apps tienen el siguiente formato:

  intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui;end;

Para obtener más detalles sobre el formato de las URL de intents, consulta Intents de Android con Chrome. Ten en cuenta que los extras de intents no se pasan.

También puedes crear la URL de forma correcta si creas un intent y, luego, usas intent.toUri(Intent.URI_INTENT_SCHEME), como se muestra aquí:

    Intent intent = new Intent()
        .setData(new Uri.Builder()
            .scheme("yourscheme")
            .authority("host")
            .appendPath("path")
            .build())
        .setPackage("com.yourapp.ui");
    Log.i(TAG, "Use this intent url: " + intent.toUri(Intent.URI_INTENT_SCHEME));

Intent de aplicación de formato libre

Esta opción se debe usar para los intents de la app que no pueden coincidir con el esquema, la ruta de acceso y el formato del nombre del paquete. Usa esta opción solo si estás seguro de que la URL del intent tiene el formato correcto.

Puedes optar por enviar un usuario a una URL especificada en lugar de Play Store en caso de que la aplicación no esté instalada. Para ello, agrega un parámetro S.browser_fallback_url al intent:

intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui; \
  S.browser_fallback_url=http%3A%2F%2Fm.yoursite.com%2Fpath%2F%;end;

Orientación contextual

Reglas

Notificaciones de Nearby admite cuatro reglas de orientación:

Fecha

dateStart y dateEnd se usan para especificar el período en el que el archivo adjunto es visible, en formato ISO 8601. En el siguiente ejemplo, se muestra una notificación durante enero de 2017:

    {
      "title": "January 2017",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startDate": "2017-01-01",
          "endDate": "2017-01-31"
        }
      ]
    }

Hora del día

“timeOfDayStart” y “timeOfDayEnd” se usan para especificar el intervalo de tiempo diario dentro del cual el adjunto puede verse, en formato ISO 8601. En el siguiente ejemplo, se muestran notificaciones de 9:00 a.m. a 5:00 p.m. todos los días.

    {
      "title": "Work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
        }
      ]
    }

Día de la semana

“anyOfDaysOfWeek” se usa para especificar los días de la semana en los que el adjunto es visible. El formato es ISO 8601, del 1(lunes) al 7(domingo). El siguiente ejemplo muestra una notificación los sábados y domingos:

    {
      "title": "Weekends",
      "url": "https://www.example.com",
      "targeting":[
        {
          "anyOfDaysOfWeek": [6, 7]
        }
      ]
    }

Estado de instalación de la app

“anyOfAppInstallStates” se usa para establecer la visibilidad de los adjuntos según los estados de instalación de la app. Solo funciona para URL de intents de app. En el siguiente ejemplo, se muestra una notificación cuando la app no está instalada.

    {
      "title": "App not installed",
      "url": "intent://host/path#Intent;package=com.example",
      "targeting":[
        {
          "anyOfAppInstallStates": ["NOT_INSTALLED"]
        }
      ]
    }

Combinación de reglas

Para cada archivo adjunto, puede haber varias reglas de orientación. Las reglas del mismo objeto de orientación son AND en conjunto. En el siguiente ejemplo, se muestra una notificación de 9:00 a.m. a 5:00 p.m. los sábados y domingos.

    {
      "title": "Weekend and work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
          "anyOfDaysOfWeek": [6, 7]
        }
      ]
    }

Las reglas de los diferentes objetos de orientación son exclusivas de OR. En el siguiente ejemplo, se muestra una notificación que se realiza de lunes a viernes, de 9:00 a.m. a 5:00 p.m., y los días sábados y domingos.

    {
      "title": "Weekend or work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "anyOfDaysOfWeek": [6, 7]
        },
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
        }
      ]
    }

Cómo agregar un filtro de intents a tu app

Las apps deben configurarse para controlar el esquema, el host y la ruta de acceso de la URL especificada. Para ello, debes agregar un elemento en tu AndroidManifest.xml a fin de declarar un <intent-filter> que coincida con el esquema, el host y la ruta, y marcarlo como explorable con un filtro de categoría, como se muestra aquí:

  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
     <!-- both categories below are required -->
     <category android:name="android.intent.category.BROWSABLE"/>
     <category android:name="android.intent.category.DEFAULT"/>
    <data android:host="host"
          android:pathPrefix="/path"
          android:scheme="yourscheme"/>
  </intent-filter>

Para obtener más información, consulta cómo administrar vínculos de apps.