在 Cordova/Phonegap 上使用 iOS 徽章的 Azure 推送通知
Posted
技术标签:
【中文标题】在 Cordova/Phonegap 上使用 iOS 徽章的 Azure 推送通知【英文标题】:Azure Push Notifications with iOS Badges on Cordova/Phonegap 【发布时间】:2015-08-13 03:30:05 【问题描述】:我有以下代码可以使用 Azure 通知中心发送推送通知。当新项目插入数据库时,此代码会向使用该标签注册的设备发送推送通知。
我将 Ionic/Phonegap 用于 ios 应用程序和 ngCordova 推送插件。我想为 iOS 设备添加徽章计数,但我似乎找不到这样做的方法。我试过使用 push.apns.send 功能,但无法让它工作。
Azure 移动服务
function insert(item, user, request)
// Execute the request and send notifications.
request.execute(
success: function()
// Create a template-based payload.
var payload = ' "message" : "This is my message" ';
push.send("My Tag", payload,
success: function(pushResponse)
// Send the default response.
request.respond();
,
error: function (pushResponse)
console.log("Error Sending push:", pushResponse);
// Send the an error response.
request.respond(500, error: pushResponse );
);
);
电话隔断
var iosConfig =
"badge": true,
"sound": true,
"alert": true
;
$cordovaPush.register(iosConfig).then(function (deviceToken)
var hub = new NotificationHub(mobileClient);
// This is a template registration.
var template = "\"aps\":\"alert\":\"$(message)\"";
// Register for notifications.
// (deviceId, ["tag1","tag2"], templateName, templateBody, expiration)
hub.apns.register(deviceToken, myTags, "myTemplate", template, null).done(function ()
// Registered with hub!
).fail(function (error)
alert("Failed registering with hub: " + error);
);
, function (err)
alert("Registration error: " + err)
);
我已经搜索了几十篇文章/教程,但没有一篇有用。任何帮助将不胜感激。
【问题讨论】:
我认为问题可能是Phonegap代码中的模板注册。我将不得不进一步调查以确保。 【参考方案1】:我终于明白了。问题是模板注册需要包含徽章。以下是有效的:
Azure 移动服务
function insert(item, user, request)
// Execute the request and send notifications.
request.execute(
success: function()
// Create a template-based payload.
var payload = ' "message" : "' + originalMessage + '", "badge" : "100" ';
push.send("My Tag", payload,
success: function(pushResponse)
// Send the default response.
request.respond();
,
error: function (pushResponse)
console.log("Error Sending push:", pushResponse);
// Send the an error response.
request.respond(500, error: pushResponse );
);
);
电话隔断
var iosConfig =
"badge": true,
"sound": true,
"alert": true
;
$cordovaPush.register(iosConfig).then(function (deviceToken)
var hub = new NotificationHub(mobileClient);
// This is a template registration.
var template = "\"aps\":\"alert\":\"$(message)\",\"badge\":\"#(badge)\" ";
// Register for notifications.
// (deviceId, ["tag1","tag2"], templateName, templateBody, expiration)
hub.apns.register(deviceToken, myTags, "myTemplate", template, null).done(function ()
// Registered with hub!
).fail(function (error)
alert("Failed registering with hub: " + error);
);
, function (err)
alert("Registration error: " + err)
);
【讨论】:
以上是关于在 Cordova/Phonegap 上使用 iOS 徽章的 Azure 推送通知的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 上调试 Cordova (PhoneGap) 代码
Ionic / Cordova / Phonegap:有没有办法在iOS和Android上禁用表情符号键盘?
Cordova/Phonegap IOS 键盘滚动问题,显示白色背景
Cordova/PhoneGap:childBrowser UI 图像低分辨率/大块(iOS)