Formato de datos de archivos adjuntos

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

Los archivos adjuntos de la función Notificaciones de Nearby deben usar el Espacio de nombres com.google.nearby y un tipo que consta del lenguaje de dos letras y el sufijo opcional -debug.

Los archivos adjuntos deben formatearse con JSON. Por ejemplo:

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

De manera opcional, el formato JSON permite una segmentació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: Es el título del contenido. La longitud de title debe ser menor debe tener más de 40 caracteres y debe tener menos de 50. Idealmente, esto debería brindar 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 de la aplicación, el sitio web o el servicio.
  • segmentació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, una URL normal. Cuando se recibe una URL web, el se le solicita al usuario que abra la URL en el navegador predeterminado. Ninguna app especial configuración predeterminada. Las URLs deben usar HTTPS y tienen el formato URL normal:

  https://www.example.com

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

  • Cómo usar HTTP en lugar de HTTPS
  • Se prohíbe vincular a tiendas de aplicaciones, como play.google.com. La página web debe mantenerse por sí solo y ofrecer información o acciones útiles directamente desde la página de destino.

Intent de aplicación

Las URLs de intents de apps se usan para activar un intent en una app. Cuando el intent de una app una URL, la app asociada responde a los parámetros contenidos en URL, siempre que esté presente el filtro de intents de la app correspondiente. Si la aplicación no está instalada, se dirige al usuario a Play Store para que la instale. Después del la app está instalada, pueden iniciarla y continuar con la función especificadas por el desarrollador. Las URLs de intents de apps tienen el siguiente formato:

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

Para obtener más información sobre cómo dar formato a las URLs de intents, consulta Intents de Android con Chrome. Ten en cuenta que no se pasan los extras del intent.

También puedes construir la URL correctamente creando un intent y, luego, usando 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 debe usarse para intents de app que no pueden coincidir con el esquema, la ruta de acceso y el formato del nombre del paquete. Utiliza esta opción solo si estás seguro de que la URL del intent es formateado correctamente.

Puedes enviar al usuario a una URL específica en lugar de enviarla a Play Store en el evento de que la aplicación no está instalada agregando un 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;

Segmentación contextual

Reglas

Notificaciones de Nearby admite cuatro reglas de segmentación:

Fecha

dateStart y dateEnd se utilizan para especificar el período dentro del cual de que el archivo adjunto sea 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 el archivo adjunto está visible en formato ISO 8601. En el siguiente ejemplo, se muestran notificaciones diarias de 9 a.m. a 5 p.m.:

    {
      "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 que el archivo adjunto esté visible. El formato es ISO 8601, del 1(lunes) a 7(domingo). En el siguiente ejemplo, se muestran notificaciones para los sábados y domingos:

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

Estado de instalación de la app

"anyOfAppInstallStates" es para establecer la visibilidad de los archivos adjuntos según la configuración estados de instalación. Solo funciona para la URL de Intención de la app. Lo siguiente En este 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 segmentación. Las reglas de mismo objeto de segmentación se unen mediante el operador Y. El siguiente ejemplo muestra una notificación los sábados y domingos de 9 a.m. a 5 p.m.

    {
      "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 segmentación se agrupan con OR. Lo siguiente ejemplo muestra una notificación de 9 a.m. a 5 p.m. todos los días de lunes a viernes, y todo el día 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 dada. Para ello, debes agregar un elemento en tu AndroidManifest.xml para declarar un <intent-filter> coincide con el esquema, el host y la ruta de acceso, y lo marca como explorable con una categoría filtro, como se muestra a continuación:

  <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 Controla los vínculos de la app.