下面是我的代碼 - 添加新的標籤工作沒有重新初始化。請讓我知道任何建議。
用法:
- 初始化 - 呼叫registerForPushNotifications(arrTags)。
- 添加或刪除標籤 - 使用全套標籤 (少於任何要刪除的)調用registerTags(arrTags)。
- 註銷所有標籤 - 電話註銷()
代碼:
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();
});
}
});
}
...
感謝加里!這工作。問題,我是否需要重新註冊所有標籤或僅附加一個標籤?請參閱我的解決方案和建議的改進。 – Mike
通過測試,我發現所有標籤即使追加一個標籤也需要重新註冊。看我的解決方案。 – Mike