A maneira mais fácil de adicionar anexos do Nearby Notifications é usar Painel do Google Beacon. Como alternativa, use o API Nearby Beacon e o formato de dados de anexo descrito abaixo.
Os anexos do recurso "Notificações por perto" precisam usar o
o namespace com.google.nearby
e um tipo que consiste na linguagem de duas letras;
e o sufixo -debug
opcional.
Os anexos devem ser formatados usando JSON. Exemplo:
{
"title": "Example",
"url": "https://www.example.com"
}
O formato JSON pode permitir uma segmentação mais específica, conforme mostrado abaixo:
{
"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"]
}
]
}
Em que:
- title: título do conteúdo. O comprimento de
title
precisa ser menor de 40 caracteres e deve ter menos de 50 caracteres. O ideal é que isso dê uma call-to-action ao usuário. Por exemplo,Order with your phone, skip the line
,Set up your thermostat
ouLearn more about sea otters
. - url: o URL do app, site ou serviço.
- segmentação: regras opcionais para limitar a visibilidade de notificações com base no contexto do dispositivo.
Formatos de URL
O recurso Nearby Notifications é compatível com três formatos de URL:
URL da Web
Um URL da Web é exatamente isso, um URL normal. Quando um URL da Web é recebido, será solicitado que o usuário abra o URL no navegador padrão. Nenhum app especial é obrigatória. Os URLs da Web devem usar HTTPS e são formatados como um URL normal:
https://www.example.com
Caso seu URL da Web não esteja acionando uma notificação, as causas mais prováveis são:
- Usar HTTP em vez de HTTPS
- É proibido criar links para app stores, como play.google.com. A página da Web devem se destacar sozinhos e oferecer informações ou ações úteis página de destino diretamente.
Intenção do app
Os URLs de intent do app são usados para acionar uma intent em um app. Quando uma intent de app for recebido, o app associado responderá aos parâmetros contidos nas URL, desde que o filtro de intent do app correspondente esteja presente. Se o app não estiver instalado, o usuário será direcionado à Play Store para instalar o app. Depois o app é instalado, ele pode iniciá-lo e prosseguir para o recurso especificado pelo desenvolvedor. Os URLs de intent do app são formatados da seguinte maneira:
intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui;end;
Para mais detalhes sobre a formatação de URLs de intent, consulte Intents do Android com o Chrome. Os extras de intents não são transmitidos.
Você também pode construir o URL corretamente criando uma intent e usando
intent.toUri(Intent.URI_INTENT_SCHEME)
,
conforme mostrado aqui:
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));
Intenção do app em formato livre
Essa opção deve ser usada para intents de apps que não podem corresponder ao esquema, caminho e o formato do nome do pacote. Só use esta opção se tiver certeza de que o URL da sua intenção é estejam formatados corretamente.
Você pode optar por direcionar o usuário a um URL específico em vez da Play Store no o evento de que o aplicativo não está instalado, adicionando um S.browser_fallback_url à intent:
intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui; \
S.browser_fallback_url=http%3A%2F%2Fm.yoursite.com%2Fpath%2F%;end;
Segmentação por contexto
Regras
O recurso Nearby Notifications é compatível com quatro regras de segmentação:
Data
dateStart
e dateEnd
são usados para especificar o período no qual
o anexo estiver visível, no formato ISO 8601.
O exemplo a seguir mostra uma notificação durante janeiro de 2017:
{
"title": "January 2017",
"url": "https://www.example.com",
"targeting":[
{
"startDate": "2017-01-01",
"endDate": "2017-01-31"
}
]
}
Hora do dia
"timeOfDayStart" (horário de início do dia) e "timeOfDayEnd" são usados para especificar o período diário qual o anexo é visível, no formato ISO 8601. O exemplo a seguir mostra uma notificação diária das 9h às 17h:
{
"title": "Work time",
"url": "https://www.example.com",
"targeting":[
{
"startTimeOfDay": "9:00",
"endTimeOfDay": "17:00"
}
]
}
Dia da semana
"qualquerDiaDaSemana" é usado para especificar os dias da semana em que está visível. O formato é ISO 8601, de 1(segunda-feira) a 7(domingo). O exemplo a seguir mostra notificações no sábado e no domingo:
{
"title": "Weekends",
"url": "https://www.example.com",
"targeting":[
{
"anyOfDaysOfWeek": [6, 7]
}
]
}
Estado de instalação do app
"anyOfAppInstallStates" serve para definir a visibilidade dos anexos com base no app os estados de instalação. Isso só funciona para URL de intent de app. O seguinte mostra uma notificação quando o app não está instalado.
{
"title": "App not installed",
"url": "intent://host/path#Intent;package=com.example",
"targeting":[
{
"anyOfAppInstallStates": ["NOT_INSTALLED"]
}
]
}
Combinação de regras
Para cada anexo, pode haver várias regras de segmentação. As regras do objeto de segmentação são unidos por AND. O exemplo a seguir mostra uma notificação das 9h às 17h aos sábados e domingos.
{
"title": "Weekend and work time",
"url": "https://www.example.com",
"targeting":[
{
"startTimeOfDay": "9:00",
"endTimeOfDay": "17:00"
"anyOfDaysOfWeek": [6, 7]
}
]
}
As regras dos diferentes objetos de segmentação são agrupadas com base em OR. O seguinte mostra uma notificação das 9h às 17h diariamente de segunda a sexta-feira, o dia todo, aos sábados e domingos.
{
"title": "Weekend or work time",
"url": "https://www.example.com",
"targeting":[
{
"anyOfDaysOfWeek": [6, 7]
},
{
"startTimeOfDay": "9:00",
"endTimeOfDay": "17:00"
}
]
}
Adicionar um filtro de intent ao app
Os apps precisam ser configurados para processar o esquema, o host e o caminho do URL fornecido.
Para fazer isso, você deve adicionar um elemento em seu AndroidManifest.xml para declarar um
<intent-filter>
que
corresponde ao esquema, host e caminho e marque-o como navegável com uma categoria
filtro, conforme mostrado aqui:
<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 saber mais, consulte Como processar links de apps.