[英]Titanium Appcelerator push notification callback called more than once
我已经能够注册移动设备并订阅Titanium中的频道。 当移动设备接收到2个推送通知并且用户单击其中之一时。
该回调被调用两次 。 我如何知道单击了哪个通知,或如何知道推送通知的总数?
var CloudPush = require('ti.cloudpush');
//CloudPush.singleCallback = true;
// Initialize the module
CloudPush.retrieveDeviceToken({
success : deviceTokenSuccess,
error : deviceTokenError
});
// Enable push notifications for this device
// Save the device token for subsequent API calls
function deviceTokenSuccess(e) {
//CloudPush.enabled = true;
deviceToken = e.deviceToken;
subscribeToChannel();
//sendTestNotification();
}
function deviceTokenError(e) {
//alert('Failed to register for push notifications! ' + e.error);
}
// Triggered when the push notifications is in the tray when the app is not running
CloudPush.addEventListener('trayClickLaunchedApp', function(evt) {
CloudPush.addEventListener('callback', function(evt) {
var title = JSON.parse(evt.payload);
});
});
// Triggered when the push notifications is in the tray when the app is running
CloudPush.addEventListener('trayClickFocusedApp', function(evt) {
CloudPush.addEventListener('callback', function(evt) {
var title = JSON.parse(evt.payload);
});
});
var Cloud = require("ti.cloud");
function subscribeToChannel() {
// Subscribes the device to the 'test' channel
// Specify the push type as either 'android' for Android or 'ios' for iOS
//alert(deviceToken+"ss");
Titanium.App.Properties.setString("token", deviceToken);
Cloud.PushNotifications.subscribeToken({
device_token : deviceToken,
channel : 'test',
type : Ti.Platform.name == 'android' ? 'android' : 'ios'
}, function(e) {
if (e.success) {
//alert('Subscribed');
} else {
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e)));
}
});
}
callback
被调用了两次,因为您正在内部实现回调函数:
CloudPush.addEventListener('trayClickLaunchedApp', function(evt) {
CloudPush.addEventListener('callback', function(evt) {
var title = JSON.parse(evt.payload);
});
和
CloudPush.addEventListener('trayClickFocusedApp', function(evt) {
CloudPush.addEventListener('callback', function(evt) {
var title = JSON.parse(evt.payload);
});
});
只需实现如下功能:
CloudPush.addEventListener('callback', function(evt) {
var title = JSON.parse(evt.payload);
});
CloudPush.addEventListener('trayClickLaunchedApp', function(evt) {
Ti.API.info('Tray Click Launched App (app was not running)');
});
CloudPush.addEventListener('trayClickFocusedApp', function(evt) {
Ti.API.info('Tray Click Focused App (app was already running)');
});
为此,我如何知道单击了哪个通知?
答 :您可以检查在回调函数中从Push Notification响应中获得的徽章编号,并以此为基础来处理它是单击还是处于挂起状态。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.