從裝置使用 REST API

 

使用 REST Api 從行動裝置時,常見的模式是儲存 registrationId本機儲存體中的裝置相關聯的註冊。 這樣可讓您以單一更新呼叫更新標籤和通道資訊。

由於行動連線並非總是可靠,最好避免建立新的註冊不需要依靠儲存 registrationId 本機儲存體中。 這樣會讓裝置多次註冊,造成重覆通知。 達到此目的使用 建立註冊 ID建立或更新註冊 REST Api。

第一個 API 會傳回 registrationId 而不用實際建立註冊。 裝置時已安全地將識別碼存放在裝置儲存空間,可以呼叫 建立或更新註冊 應用程式開發介面。

重要

為了讓裝置本機儲存空間和中心一致,即使發生本機儲存空間資料遺失的事件,建議您每次未初始化本機儲存空間時,刪除所有具有目前通道的註冊 (也就是 ChannelURI、裝置權杖或 GCM registrationId)。

下列 Javascript 程式碼會建立 registrationId 使用 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(); };  

建立或更新作業 ("upsert") 是簡單 PUT 呼叫傳回的位置上。 您可以註冊 XML 內文建構的相同方式中所述 從後端使用 REST API 一節。

以下 Javascript 程式碼範例會示範 “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(); };