A implementação do servidor é opcional. Use o serviço de código da instância se quiser realizar estas operações:
- Veja informações sobre instâncias de apps. Verifique os tokens do aplicativo ou veja mais informações sobre a instância do aplicativo que criou o token.
- Crie mapas de relacionamento para instâncias de apps. Crie relações entre instâncias de aplicativos e entidades, como tópicos do FCM ou do GCM.
- Crie tokens de registro para tokens de APNs. Essa API permite importar em massa tokens de APNs existentes, mapeando-os para tokens de registro válidos para o FCM ou o GCM.
- Gerenciar tokens de registro para assinaturas de push. Para aplicativos da Web implementados usando a API Push, importe suas assinaturas de push existentes, mapeando-as para tokens de registro válidos para o FCM.
Receber informações sobre instâncias de apps
Para receber informações sobre uma instância de app, chame o serviço de ID da instância nesse endpoint fornecendo o token da instância do app, conforme mostrado:
https://iid.googleapis.com/iid/info/IID_TOKEN
Parâmetros
Authorization
: key=YOUR_API_KEY. Defina esse parâmetro no cabeçalho.- [opcional] booleano
details
: defina esse parâmetro de consulta comotrue
para receber informações de assinatura de tópico do FCM ou GCM (se houver) associadas a esse token. Quando não especificado, o padrão éfalse
.
Resultados
Se a chamada for bem-sucedida, a chamada retornará o status HTTP 200 e um objeto JSON contendo:
application
: nome do pacote associado ao token.authorizedEntity
: projectId autorizado a enviar para o token.applicationVersion
: versão do aplicativo.appSigner
: impressão digitalsha1
da assinatura aplicada ao pacote. Indica qual parte assinou o app, por exemplo,Play Store
.platform
: retornaANDROID
,IOS
ouCHROME
para indicar a plataforma do dispositivo a que o token pertence.
Se a sinalização details
estiver definida:
rel
: relações associadas ao token. Por exemplo, uma lista de assinaturas de tópicos.
Exemplo de solicitação GET
https://iid.googleapis.com/iid/info/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA?Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
Exemplo de resultado
HTTP 200 OK
{
"application":"com.iid.example",
"authorizedEntity":"123456782354",
"platform":"Android",
"appSigner":"1a2bc3d4e5"
"rel":{
"topics":{
"topicname1":{"addDate":"2015-07-30"},
"topicname2":{"addDate":"2015-07-30"},
"topicname3":{"addDate":"2015-07-30"},
"topicname4":{"addDate":"2015-07-30"}
}
}
}
Criar mapas de relacionamento para instâncias de apps
A API Instance ID permite criar mapas de relacionamento para instâncias de apps. Por exemplo, é possível mapear um token de registro para um tópico do Google Cloud Messaging, inscrevendo a instância do app no tópico. A API fornece métodos para criar essas relações individualmente e em massa.
Criar um mapeamento de relação para uma instância de app
Com um token de registro e um relacionamento compatível, é possível criar um mapeamento. Por exemplo, você pode assinar uma instância de app em um tópico do Google Cloud Messaging chamando o serviço de ID da instância nesse endpoint, fornecendo o token da instância do app, conforme mostrado:
https://iid.googleapis.com/iid/v1/IID_TOKEN/rel/topics/TOPIC_NAME
Parâmetros
Authorization
: key=YOUR_API_KEY. Defina esse parâmetro no cabeçalho.
Resultados
Se for bem-sucedida, a chamada retornará o status HTTP 200.
Exemplo de solicitação POST
https://iid.googleapis.com/iid/v1/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA/rel/topics/movies
Content-Type:application/json
Content-Length: 0
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
Exemplo de resultado
HTTP 200 OK
{}
Gerenciar mapas de relacionamento para várias instâncias de app
Com os métodos em lote do serviço de código de instância, é possível executar o gerenciamento em lote de instâncias de aplicativos. Por exemplo, é possível adicionar ou remover instâncias de apps em massa para um tópico do FCM ou do GCM. Para atualizar até 1.000 instâncias de apps por chamada de API, chame o serviço de código de instância nesse endpoint, fornecendo os tokens de instância do app no corpo do JSON:
https://iid.googleapis.com/iid/v1:batchAdd
https://iid.googleapis.com/iid/v1:batchRemove
Parâmetros
Authorization
: key=YOUR_API_KEY. Defina esse parâmetro no cabeçalho.to
: o nome do tópico.registration_tokens
: a matriz de tokens IID das instâncias de apps que você quer adicionar ou remover.
Resultados
Se for bem-sucedida, a chamada retornará o status HTTP 200. Resultados vazios indicam uma assinatura bem-sucedida do token. Para assinaturas com falha, o resultado contém um destes códigos de erro:
- NOT_FOUND — o token de registro foi excluído ou o aplicativo foi desinstalado.
- INVALID_ARGUMENT: o token de registro fornecido não é válido para o ID de remetente.
- INTERNO - O servidor de back-end falhou por razões desconhecidas. Tente fazer a solicitação novamente.
- TOO_MANY_TOPICS: número excessivo de tópicos por instância do aplicativo.
- RESOURCE_EXHAUSTED: excesso de solicitações de assinatura ou cancelamento de assinatura em um curto período. Tente novamente com espera exponencial.
Exemplo de solicitação POST
https://iid.googleapis.com/iid/v1:batchAdd
Content-Type:application/json
Authorization:key=API_KEY
{
"to": "/topics/movies",
"registration_tokens": ["nKctODamlM4:CKrh_PC8kIb7O...", "1uoasi24:9jsjwuw...", "798aywu:cba420..."],
}
Exemplo de resultado
HTTP 200 OK
{
"results":[
{},
{"error":"NOT_FOUND"},
{},
]
}
Criar tokens de registro para tokens de APNs
Usando o método batchImport
do serviço de ID da instância, é possível importar em massa tokens de APNs do iOS existentes para o Google Cloud Messaging ou o Firebase Cloud Messaging, mapeando-os para tokens de registro válidos. Chame o serviço de ID da instância nesse endpoint fornecendo uma lista de tokens de APNs no corpo JSON:
https://iid.googleapis.com/iid/v1:batchImport
O corpo da resposta contém uma matriz de tokens de registro de ID de instância prontos para serem usados para enviar mensagens FCM ou GCM para o token de dispositivo de APNs correspondente.
Parâmetros
Authorization
: key=YOUR_API_KEY. Defina esse parâmetro no cabeçalho.application
: ID do pacote do app.sandbox
: booleano para indicar o ambiente de sandbox (TRUE) ou a produção (FALSE).apns_tokens
: a matriz de tokens de APNs para as instâncias de apps que você quer adicionar ou remover. Máximo de 100 tokens por solicitação.
Resultados
Em caso de sucesso, a chamada retorna o status HTTP 200 e um corpo de resultado JSON. Para cada token de APNs fornecido na solicitação, a lista de resultados inclui:
- O token de APNs.
- Status. OK ou uma mensagem de erro descrevendo a falha.
- Para obter resultados bem-sucedidos, o token de registro que o FCM ou o GCM mapeia para o token de APNs.
Exemplo de solicitação POST
https://iid.googleapis.com/iid/v1:batchImport
{
"application": "com.google.FCMTestApp",
"sandbox":false,
"apns_tokens":[
"368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
"76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86"
]
}
}
Exemplo de resultado
HTTP 200 OK
{
"results":[
{
"apns_token": "368dde283db539abc4a6419b1795b6131194703b816e4f624ffa12",
"status": "OK",
"registration_token":"nKctODamlM4:CKrh_PC8kIb7O...clJONHoA"
},
{
"apns_token": "76b39c2b2ceaadee8400b8868c2f45325ab9831c1998ed70859d86",
"status":"Internal Server Error"
},
]
}
Gerenciar tokens de registro para assinaturas de push
Com os métodos da Web do serviço de código de instância, é possível importar assinaturas de push para o Firebase Cloud Messaging. Também é possível atualizá-los e excluí-los.
Ao importar uma assinatura de push, você recebe um token de registro. Esse token permite usar recursos do FCM, como mensagens de tópicos e mensagens de grupos de dispositivos, para segmentar notificações para seus apps da Web.
Importar assinaturas de push
É possível importar assinaturas de push usando o endpoint da Web do InstanceID:
https://iid.googleapis.com/v1/web/iid
A solicitação precisa conter um cabeçalho de autorização definido como um token de acesso do OAuth 2.0, um cabeçalho de chave criptográfica definido como sua chave do servidor de aplicativos e o objeto PushSubscription
no corpo da solicitação.
O corpo da resposta contém um token de registro pronto para ser usado para enviar mensagens FCM ou GCM à instância do app da Web correspondente sem precisar criptografar o payload.
Fazer upload do par de chaves VAPID no console
Para importar chaves, você precisa ter acesso de proprietário ao projeto do Firebase. Importe suas chaves pública e privada existentes no formato codificado seguro de URL base64:
- Abra a guia Cloud Messaging do painel Configurações do Console do Firebase e role até a seção Configuração da Web.
- Na guia Certificados de push da Web, localize e selecione o texto do link "Importar um par de chaves existente".
- Na caixa de diálogo Importar um par de chaves, insira suas chaves públicas e privadas nos campos correspondentes e clique em Importar. O console exibe a string de chave pública e a data adicionada.
Recuperar um token OAuth2: usar credenciais para produzir tokens de acesso
Para criar um token de acesso para a solicitação, será necessário produzir o token de acesso e adicioná-lo à solicitação HTTP.
node.js
function getAccessToken() {
return admin.credential.applicationDefault().getAccessToken()
.then(accessToken => {
return accessToken.access_token;
})
.catch(err => {
console.error('Unable to get access token');
console.error(err);
});
}
Python
def _get_access_token():
"""Retrieve a valid access token that can be used to authorize requests.
:return: Access token.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service-account.json', SCOPES)
access_token_info = credentials.get_access_token()
return access_token_info.access_token
Java
private static String getAccessToken() throws IOException {
GoogleCredentials googleCredentials = GoogleCredentials
.fromStream(new FileInputStream("service-account.json"))
.createScoped(Arrays.asList(SCOPES));
googleCredentials.refreshAccessToken();
return googleCredentials.getAccessToken().getTokenValue();
}
Para autorizar o acesso ao FCM, solicite o escopo https://www.googleapis.com/auth/firebase.messaging
.
Parâmetros
- Autorização:
Bearer <access_token>
. Defina esse parâmetro no cabeçalho. - Chave criptográfica:
p256ecdsa=APPLICATION_PUBLIC_KEY
. Defina esse parâmetro no cabeçalho. - Corpo da solicitação:
PushSubscription.toJson()
. Transmita a assinatura de push para o corpo HTTP sem analisá-la. O conteúdo corresponde à codificação W3C dePushSubscription
.
Resposta
Se for bem-sucedida, a chamada retornará o status HTTP 200 OK e um corpo de resultado JSON contendo o token IID.
Exemplo de solicitação POST
https://iid.googleapis.com/v1/web/iid
Content-Type:application/json
Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
Crypto-Key:p256ecdsa=BFv5XHxdkZgpQzCb-...8uI42kf4A4USEIMo
{
"endpoint": "https://fcm.googleapis.com/fcm/send/dS4xerbSlqU:APb...aRs4QP",
"keys": {
"auth": "7cdY...xxjwz46Q",
"p256dh": "BH7xPjScJe...z9lbIZDmOV_c"
}
}
Exemplo de resultado
HTTP 200 OK
{
"token":"KctODamlM4:CKrh_PC...cl"
}
Atualizar assinaturas de push
É possível atualizar a assinatura de push associada ao token de registro usando o seguinte endpoint:
https://iid.googleapis.com/v1/web/iid/REGISTRATION_TOKEN:refresh
Parâmetros
- Autorização:
Bearer <access_token>
. Defina esse parâmetro no cabeçalho. - Chave criptográfica:
p256ecdsa=APPLICATION_PUBLIC_KEY
. Defina esse parâmetro no cabeçalho. - Corpo da solicitação:
PushSubscription.toJson()
. Transmita a assinatura de push para o corpo HTTP sem analisá-la. O conteúdo corresponde à codificação W3C dePushSubscription
.
Resultados
Em caso de sucesso, a chamada retorna o status HTTP 200 e um token de registro. Pode ser o mesmo token transmitido na solicitação ou um novo token.
HTTP 200 OK
{
"token":"KctODamlM4:CKrh_PC...cl"
}
Exemplo de solicitação POST
https://iid.googleapis.com/v1/web/iid/KctODamlM4:CKrh_PC...cl:refresh
Content-Type:application/json
Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
Crypto-Key:p256ecdsa=BFv5XHxdkZgpQzCb-...8uI42kf4A4USEIMo
{
"endpoint": "https://fcm.googleapis.com/fcm/send/dS4xerbSlqU:APb...aRs4QP",
"keys": {
"auth": "7cdY...xxjwz46Q"",
"p256dh": "BH7xPjScJe...z9lbIZDmOV_c"
}
}
Exemplo de resultado
HTTP 200 OK
{
"token":"KctODamlM4:CI2k_HHw...3P1"
}
Excluir assinaturas de push
Uma solicitação DELETE
remove os detalhes da assinatura de push do banco de dados do FCM. Você ainda pode receber mensagens no seu aplicativo da Web usando o protocolo Push API.
Para excluir uma assinatura de push, envie uma solicitação DELETE
para:
https://iid.googleapis.com/v1/web/iid/REGISTRATION_TOKEN
Exemplo de solicitação DELETE
https://iid.googleapis.com/v1/web/iid/KctODamlM4:CI2k_HHw...3P1
Authorization:Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
Exemplo de resultado
HTTP 200 OK {}
Respostas de erro
As chamadas para a API Instance ID Server retornam os seguintes códigos de erro HTTP:
HTTP status 400 (Bad request)
: os parâmetros da solicitação estão ausentes ou são inválidos. Verifique as mensagens de erro para ver informações detalhadas.HTTP status 401 (Unauthorized)
- o cabeçalho de autorização é inválido.HTTP status 403 (Forbidden)
: o cabeçalho de autorização não corresponde aoauthorizedEntity
.HTTP status 404 (Not found)
: caminho HTTP ou token IID inválido não encontrado. Verifique as mensagens de erro para ver informações detalhadas.HTTP status 503 (Service unavailable)
- o serviço está indisponível. Tente fazer a solicitação novamente com espera exponencial.