你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
从设备使用 REST API
从移动设备使用 REST API 时,一种常见模式是在本地存储中存储与设备关联的注册的 registrationId。 它使你能够通过单个更新调用来更新标记和通道信息。
由于移动连接并非始终可靠,因此,在未能将 registrationId 存储在本地存储中时,最好避免创建新注册。 这可能会导致设备多次注册,从而导致重复通知。 可以使用 创建注册 ID 和 创建或更新注册 REST API 来实现此目的。
第一个 API 返回 registrationId,而无需实际创建注册。 当 ID 安全地存储在设备存储中时,设备可以调用 创建或更新注册 API。
重要
要使设备本地存储与该中心保持同步(即使在本地存储数据丢失的情况下),建议你在每次本地存储未初始化时,删除包含当前通道的所有注册(即,ChannelURI、设备令牌或 GCM registrationId)。
以下 Javascript 代码使用 jQuery 创建 registrationId:
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 调用。 可以按照 从后端使用 REST API 部分中所述的相同方式构造注册 XML 正文。
以下 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();
};