Formato dei dati allegato

Il modo più semplice per aggiungere allegati di Notifiche nelle vicinanze è tramite Google Beacon Dashboard. In alternativa, puoi utilizzare l'API Proximity Beacon e il formato dei dati degli allegati descritti di seguito.

Gli allegati per la funzionalità Notifiche nelle vicinanze devono utilizzare lo spazio dei nomi com.google.nearby e un tipo composto dal codice lingua di due lettere e dal suffisso -debug facoltativo.

Gli allegati devono essere formattati utilizzando JSON. Ad esempio:

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

Il formato JSON consente facoltativamente un targeting più specifico, come mostrato di seguito:

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

Dove:

  • title: il titolo dei contenuti. La lunghezza di title deve essere inferiore a 40 caratteri e inferiore a 50 caratteri. In questo modo, l'utente dovrebbe essere in grado di inviare un invito all'azione. Ad esempio, Order with your phone, skip the line, Set up your thermostat o Learn more about sea otters.
  • url: l'URL dell'app, del sito web o del servizio.
  • targeting: regole facoltative per limitare la visibilità delle notifiche in base al contesto del dispositivo.

Formati URL

La funzionalità Notifiche nelle vicinanze supporta tre formati di URL:

URL web

Un URL web è esattamente un URL normale, Quando viene ricevuto un URL web, all'utente viene chiesto di aprire l'URL nel browser predefinito. Non è necessaria una configurazione speciale dell'app. Gli URL web devono utilizzare HTTPS e hanno il formato normale:

  https://www.example.com

Se l'URL web non attiva una notifica, le cause più probabili sono:

  • Utilizzo di HTTP anziché HTTPS
  • È proibito il collegamento a uno store come play.google.com. La pagina web deve essere autonoma e offrire informazioni o azioni utili direttamente nella pagina di destinazione.

Intenzione dell'app

Gli URL di intent dell'app vengono utilizzati per attivare un intent in un'app. Quando viene ricevuto un URL dell'intent dell'app, l'app associata risponde ai parametri contenuti nell'URL, a condizione che sia presente il filtro per intent dell'app corrispondente. Se l'app non è installata, l'utente viene indirizzato al Play Store per installarla. Dopo l'installazione, potrà avviare l'app e continuare con la funzionalità specificata dallo sviluppatore. Gli URL di intent dell'app hanno il seguente formato:

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

Per maggiori dettagli sulla formattazione degli URL degli intent, consulta Intent di Android con Chrome. Tieni presente che gli extra per intenzione non vengono superati.

Puoi anche creare correttamente l'URL creando un intent e poi utilizzando intent.toUri(Intent.URI_INTENT_SCHEME), come mostrato di seguito:

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

Intenzione di app in formato libero

Questa opzione deve essere utilizzata per gli intent dell'app che non possono corrispondere al formato di schema, percorso e nome del pacchetto. Utilizza questa opzione solo se hai la certezza che l'URL dell'intent sia formattato correttamente.

Nel caso in cui l'app non sia installata, puoi scegliere di indirizzare l'utente a un URL specificato anziché al Play Store aggiungendo un parametro S.browser_fallback_url all'intent:

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

Targeting contestuale

Regole

La funzionalità Notifiche nelle vicinanze supporta quattro regole di targeting:

Data

dateStart e dateEnd vengono utilizzati per specificare l'intervallo di date entro il quale è visibile l'allegato, in formato ISO 8601. L'esempio seguente mostra la notifica di gennaio 2017.

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

Ora del giorno

"timeOfDayStart" e "timeOfDayEnd" vengono utilizzati per specificare l'intervallo di tempo giornaliero entro il quale l'allegato è visibile, in formato ISO 8601. L'esempio seguente mostra una notifica giornaliera dalle 09:00 alle 17:00:

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

Giorno della settimana

"anyOfDaysOfWeek" viene utilizzato per specificare i giorni della settimana in cui l'allegato è visibile. Il formato è ISO 8601, da 1(lunedì) a 7(domenica). L'esempio seguente mostra la notifica del sabato e della domenica:

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

Stato di installazione dell'app

L'impostazione "anyOfAppInstallStates" consente di impostare la visibilità degli allegati in base agli stati di installazione dell'app. Funziona solo per l'URL Intenzione dell'app. L'esempio seguente mostra una notifica quando l'app non è installata.

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

Combinazione di regole

Per ogni collegamento possono essere presenti più regole di targeting. Le regole dello stesso oggetto di targeting vengono ANDed insieme. L'esempio seguente mostra una notifica dalle 09:00 alle 17:00 il sabato e la domenica.

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

Le regole di diversi oggetti di targeting sono ORed toerer. L'esempio seguente mostra una notifica ogni giorno dalle 09:00 alle 17:00, più sabato per tutte le giornate e domenica.

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

Aggiungere un filtro per intent alla tua app

Le app devono essere configurate per gestire lo schema, l'host e il percorso per l'URL specificato. A tale scopo, devi aggiungere un elemento nel file AndroidManifest.xml per dichiarare un elemento <intent-filter> che corrisponde allo schema, all'host e al percorso e contrassegnarlo come sfogliabile con un filtro di categoria, come mostrato di seguito:

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

Per scoprire di più, consulta Gestione dei link dell'app.