Android上使用appcelerator钛的多个预定安卓通知

时间:2012-03-30 04:02:12

标签: javascript android notifications titanium titanium-mobile


大家好!
这个问题已经困扰了好几天,我无法提出解决方案 我知道如何使用Titanium在Android上进行单个预定通知 但是,如果我需要多个预定通知,则会出现问题 当我试图发出第二个通知时,第一个仍在进行中的通知会立即弹出 并且第二个通知从未被解雇 我真的想知道是否有办法在Android上使用Titanium创建多个预定通知,或者实现预定通知的方法比我现在使用的更好。

感谢您阅读!

我使用此处找到的代码来形成我的实现 https://github.com/appcelerator-developer-relations/Forging-Titanium/tree/master/ep-013/notify

这是我用来为通知创建服务的功能。

var notifyId=0;
var notify=function(message,interval){
var intent = Ti.Android.createServiceIntent({
    url : 'NotificationService.js'
});

intent.putExtra('message', message || 'You have a notification!');
intent.putExtra('notifyId',notifyId+'');
notifyId++;
if (interval) {
    intent.putExtra('interval', interval);
}

Ti.Android.startService(intent);

}

这是我的NotificationService.js文件中的代码。

var NOTIFICATION_PROPERTY = 'notificationCount';

var service = Ti.Android.currentService;//maybe problem is here
var serviceIntent = service.getIntent();
var serviceMessage = serviceIntent.hasExtra('message') ? serviceIntent.getStringExtra('message') : 'you have a notification!';
var notifyId=serviceIntent.hasExtra('notifyId')?serviceIntent.getStringExtra('notifyId'):'1';
if (serviceIntent.hasExtra('interval') && !Ti.App.Properties.hasProperty('notificationCount')) {
    Ti.App.Properties.setInt(NOTIFICATION_PROPERTY,0);
} else{
if (Ti.App.Properties.hasProperty(NOTIFICATION_PROPERTY)) {
Ti.App.Properties.removeProperty(NOTIFICATION_PROPERTY);
}

var activity = Ti.Android.currentActivity;
var intent = Ti.Android.createIntent({
    action : Ti.Android.ACTION_MAIN,

    className:'com.fishtruck.Activity',
    flags : Ti.Android.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Ti.Android.FLAG_ACTIVITY_SINGLE_TOP
});
intent.addCategory(Titanium.Android.CATEGORY_LAUNCHER);

var pending = Ti.Android.createPendingIntent({
    activity : activity,
    intent : intent,
    type : Ti.Android.PENDING_INTENT_FOR_ACTIVITY,
    flags : Ti.Android.FLAG_ACTIVITY_NO_HISTORY
});

var notification = Ti.Android.createNotification({
    contentIntent : pending,
    contentTitle : 'test',
    contentText : serviceMessage,
    tickerText : serviceMessage,
    when : new Date().getTime(),
    icon : Ti.App.Android.R.drawable.appicon,
    flags : Titanium.Android.ACTION_DEFAULT | Titanium.Android.FLAG_AUTO_CANCEL | Titanium.Android.FLAG_SHOW_LIGHTS
});

Ti.Android.NotificationManager.notify(parseInt(notifyId), notification);

Ti.Android.stopService(serviceIntent);
}

1 个答案:

答案 0 :(得分:2)

我在Ti.Android.stopService(intent);

之前有一个Ti.Android.startService(intent);

首次发布时,它什么也没做。在秒,它阻止发射第一个。

我不认为这是一个很好的解决方案,但可能有效