Usando APIs REST do dispositivo

 

Ao usar as APIs REST de um dispositivo móvel, um padrão comum é armazenar o registrationIddos registros associados ao dispositivo no armazenamento local. Isso permite atualizar informações de canais e marcas com uma única chamada de atualização.

Como conexões móveis nem sempre são confiáveis, é melhor evitar a criação de um novo registro sem poder armazenar os registrationId no armazenamento local. Isso pode resultar em diversos registros do dispositivo, causando notificações duplicadas. Você pode fazer isso usando o Criar ID de registro e Criar ou atualizar registro APIs REST.

A primeira API retorna um registrationId sem realmente criar um registro. Quando a ID foi armazenada com segurança no armazenamento do dispositivo, o dispositivo pode chamar o Criar ou atualizar registro API.

Importante

Para manter o armazenamento local do dispositivo em sincronia com o hub, mesmo no caso de perda dos dados de armazenamento local, é recomendado excluir todos os registros com o canal atual (isto é, o ChannelURI, token do dispositivo ou GCM registrationId) sempre que o armazenamento local não for inicializado.

O código Javascript a seguir cria um registrationId usando jQuery:

var createRegistrationId = function() { var registrationPath = hub.hubPath + "/Registrations"; var serverUrl = hub.endpoint + registrationPath + "?api-version=2015-01"; var token = getSelfSignedToken(serverUrl,sasKeyValue, sasKeyName, 60); var deferred = $.Deferred(); $.ajax({ type : "POST", url : serverUrl, headers : { "Authorization" : token }, }).done(function(data, status, response) { var location = response.getResponseHeader("Content-Location"); deferred.resolve(location); }).fail(function(response, status, error) { console.log("Error: " + error); deferred.reject("Error: " + error); }); return deferred.promise(); };  

A operação de criação ou atualização ("upsert") é um simples PUT chamar no local retornado. Você pode construir o corpo XML do registro da mesma forma, conforme descrito na Usar APIs REST de um back-end seção.

O exemplo a seguir de código Javascript demonstra uma operação “upsert”:

var updateRegistration = function(location, registration) { var registrationPayload = buildCreatePayload(registration); var serverUrl = location; var token = getSelfSignedToken(serverUrl, sasKeyValue, sasKeyName, 60); var deferred = $.Deferred(); return $.ajax({ type : "PUT", url : serverUrl, headers : { "Content-Type" : "application/atom+xml", "Authorization" : token, }, data : registrationPayload }).done(function(data, status, response) { var location = response.getResponseHeader("Content-Location"); deferred.resolve(location); }).fail(function(response, status, error) { console.log("Error: " + error); deferred.reject("Error: " + error); }); return deferred.promise(); };