Format des données de la pièce jointe

Le moyen le plus simple d'ajouter des rattachements de notifications de Nearby est d'utiliser le tableau de bord des balises Google. Vous pouvez également utiliser l'API Proximity Beacon et le format de données de pièce jointe décrit ci-dessous.

Les pièces jointes de la fonctionnalité de notifications à proximité doivent utiliser l'espace de noms com.google.nearby, et un type composé du code de langue à deux lettres et du suffixe facultatif -debug.

Les pièces jointes doivent être au format JSON. Exemple :

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

Le format JSON permet éventuellement un ciblage plus spécifique, comme illustré ci-dessous:

    {
      "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"]
        }
      ]
    }

Où :

  • title : titre du contenu. La longueur de title doit être inférieure à 40 caractères et inférieure à 50 caractères. Idéalement, cela devrait donner à l'utilisateur une incitation à l'action. Par exemple, Order with your phone, skip the line, Set up your thermostat ou Learn more about sea otters.
  • url : URL de l'application, du site Web ou du service.
  • ciblage : règles facultatives permettant de limiter la visibilité des notifications en fonction du contexte de l'appareil.

Formats d'URL

La fonctionnalité Notifications de proximité accepte trois formats d'URL:

URL Web

Une URL Web correspond exactement à cela, juste une URL normale. Lorsqu'une URL Web est reçue, l'utilisateur est invité à ouvrir l'URL dans le navigateur par défaut. Aucune configuration d'application spéciale n'est requise. Les URL Web doivent utiliser le protocole HTTPS et sont mises en forme comme une URL normale:

  https://www.example.com

Si votre URL Web ne déclenche pas de notification, les causes les plus probables sont les suivantes:

  • Utiliser HTTP au lieu de HTTPS
  • Vous n'êtes pas autorisé à créer un lien vers une plate-forme de téléchargement d'applications telle que play.google.com. La page Web doit être autonome, et proposer des informations ou des actions utiles directement sur la page de destination.

Intention d'application

Les URL d'intent d'application sont utilisées pour déclencher un intent dans une application. Lorsqu'une URL d'intent d'application est reçue, l'application associée répond aux paramètres contenus dans l'URL, à condition que le filtre d'intent d'application correspondant soit présent. Si l'application n'est pas installée, l'utilisateur est redirigé vers le Play Store pour l'installer. Une fois l'application installée, il peut la lancer et accéder à la fonctionnalité spécifiée par le développeur. Les URL d'intent de l'application sont au format suivant:

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

Pour en savoir plus sur la mise en forme des URL d'intent, consultez Intents Android avec Chrome. Notez que les extras d'intent ne sont pas transmis.

Vous pouvez également construire l'URL correctement en créant un intent, puis en utilisant intent.toUri(Intent.URI_INTENT_SCHEME), comme indiqué ci-dessous:

    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));

Intention d'application à forme libre

Cette option doit être utilisée pour les intents d'application qui ne peuvent pas correspondre au format, au chemin d'accès et au nom du package. N'utilisez cette option que si vous êtes sûr que le format de l'URL de votre intent est correct.

Vous pouvez choisir de renvoyer l'utilisateur vers une URL spécifiée au lieu du Play Store si l'application n'est pas installée. Pour ce faire, ajoutez un paramètre S.browser_fallback_url à l'intent:

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

Ciblage contextuel

Règles

La fonctionnalité Notifications de proximité accepte quatre règles de ciblage:

Date

dateStart et dateEnd permettent de spécifier la plage de dates dans laquelle le rattachement est visible, au format ISO 8601. L'exemple suivant montre une notification en janvier 2017 :

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

Heure de la journée

"timeOfDayStart" et "timeOfDayEnd" permettent de spécifier la plage quotidienne pendant laquelle le rattachement est visible, au format ISO 8601. L'exemple suivant montre une notification quotidienne de 9h à 17h:

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

Jour de la semaine

"anyOfDaysOfWeek" permet de spécifier les jours de la semaine pendant lesquels le rattachement est visible. Le format est ISO 8601, de 1(lundi) à 7(dimanche). L'exemple suivant montre une notification le samedi et le dimanche:

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

État d'installation de l'application

"anyOfAppInstallStates" permet de définir la visibilité des pièces jointes en fonction de l'état d'installation de l'application. Elle ne fonctionne que pour les URL d'intention d'application. L'exemple suivant montre une notification lorsque l'application n'est pas installée.

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

Combinaison de règles

Chaque pièce jointe peut être associée à plusieurs règles de ciblage. Les règles d'un même objet de ciblage sont reliées par une relation AND. L'exemple suivant montre une notification de 9h à 17h les samedis et dimanches.

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

Les règles des différents objets de ciblage sont regroupées par une relation OR. L'exemple suivant montre une notification de 9h à 17h du lundi au vendredi, plus toute la journée les samedis et dimanches.

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

Ajouter un filtre d'intent à votre application

Les applications doivent être configurées pour gérer le schéma, l'hôte et le chemin d'accès de l'URL donnée. Pour ce faire, vous devez ajouter un élément dans votre fichier AndroidManifest.xml pour déclarer un <intent-filter> correspondant au schéma, à l'hôte et au chemin d'accès, et le rendre consultable avec un filtre de catégorie, comme illustré ci-dessous:

  <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>

Pour en savoir plus, consultez Gérer les liens vers une application.