Cordova 推送通知 - 注册标签
Posted
技术标签:
【中文标题】Cordova 推送通知 - 注册标签【英文标题】:Cordova Push Notification - Register Tags 【发布时间】:2017-04-19 01:05:40 【问题描述】:初次注册后如何注册额外的推送通知标签?以下代码成功注册标签(arrTags):
pushRegistration.on('registration', function (data)
...
if (platform == 'android' || platform == 'Android')
// Register for GCM notifications.
AzureDbSvc.client.push.register('gcm', handle,
mytemplate: body: data: message: "$(messageParam)" , tags: arrTags
);
...
既然标签已注册,我该如何注册其他标签?例如,如果 arrTags 最初包含 4 个标签,我将如何随后(稍后)注册第 5 个或第 6 个标签?
【问题讨论】:
【参考方案1】:您可以通过调用此函数AzureDbSvc.client.push.register()
使用标签更新注册,因为注册本身是暂时的。
另外,您可以尝试在后台管理注册,可以参考Registration Management
【讨论】:
谢谢加里!那行得通。问题,我需要重新注册所有标签还是只注册一个被附加的标签?请查看我的解决方案和建议的改进。 通过测试发现,即使附加单个标签,所有标签都需要重新注册。查看我的解决方案。【参考方案2】:以下是我的代码 - 添加新标签无需重新初始化即可工作。请让我知道任何建议。
用法:
-
初始化 - 调用 registerForPushNotifications(arrTags)。
添加或删除标签 - 使用完整的标签数组调用 registerTags(arrTags)
(减去任何要删除的内容)。
注销所有标签 - 调用 unregister()
代码:
appServices.factory('AzurePshNtfnSvc', function ($ionicPopup, MsgSvc)
var pushRegistration = null;
var regData = null;
...
/// Push Notification Registration ///
function registerForPushNotifications(arrTags)
pushRegistration = PushNotification.init(
android: senderID: 'YourID#' ,
ios: alert: 'true', badge: 'true', sound: 'true' ,
wns:
);
// Handle the registration event.
pushRegistration.on('registration', function (data)
regData = data;
registerTags(arrTags);
);
pushRegistration.on('notification', function (data)
alert('Push Received: ' + data.message);
MsgSvc.prepForPushNotification(data);
);
pushRegistration.on('error', handleError);
// Now I can call AzurePshNtfnSvc.registerTags from anywhere in the app
// and delete or add a tag.
function registerTags(arrTags)
// Get the native platform of the device.
var platform = device.platform;
// Get the handle returned during registration.
var handle = regData.registrationId;
// Set the device-specific message template.
if (platform == 'android' || platform == 'Android')
// Register for GCM notifications.
AzureDbSvc.client.push.register('gcm', handle,
mytemplate: body: data: message: "$(messageParam)" , tags: arrTags
// example: mytemplate: body: data: message: "$(messageParam)" ,
// tags: ["mynotificationtag", "anothertag"]
// site: https://github.com/Azure/azure-mobile-apps-cordova-client/issues/32
);
else if (device.platform === 'iOS')
// Register for notifications.
AzureDbSvc.client.push.register('apns', handle,
mytemplate: body: aps: alert: "$(messageParam)"
);
else if (device.platform === 'windows')
// Register for WNS notifications.
AzureDbSvc.client.push.register('wns', handle,
myTemplate:
body: '<toast><visual><binding template="ToastText01"><text id="1">$(messageParam)</text></binding></visual></toast>',
headers: 'X-WNS-Type': 'wns/toast'
);
// Unregister all tags, called when exiting app
function unregister()
return new Promise(function (resolve, reject)
if (pushRegistration == null)
return resolve();
else
pushRegistration.unregister(function ()
console.log('success');
resolve();
, function ()
console.log('error');
reject();
);
);
...
【讨论】:
以上是关于Cordova 推送通知 - 注册标签的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Cordova 推送插件向我的所有设备发送推送通知
使用 Telerik Appbuilder 注册推送 IOS 通知