使用本地通知插件的多个通知 - Phonegap

时间:2015-07-09 08:15:15

标签: android cordova notifications localnotification

Katzer Local notification plugin

我可以设置和使用单一通知。

According to the description可以使用

设置多个通知
 cordova.plugins.notification.local.schedule([{
    id: 1,
    text: "Multi Notification 1",
    sound: isAndroid ? 'file://sound.mp3' : 'file://beep.caf',
    data: { secret:key }
},{
    id: 2,
    title: "Local Notification Example",
    text: "Multi Notification 2",
    icon: "http://sciactive.com/pnotify/includes/github-icon.png"
}]);

但我的通知是动态的,它的总数也是动态的。例如,假设total是保存通知总数的变量。 total可以是1或10或30等。

现在如何为它构建数组?我试过这个

for(i=0;i<total;i++)
{
    // ......... calculate bhhour,vmin,vsec etc. ............. //

    time_for_noti=new Date(year,month-1,parseInt(i),vhour,vmin,vsec);

    arr[i]=' id: app_'+i+' , title: ' +i+' - '+time_for_noti+',text: app alarm.,sound: null,at  :    '+time_for_noti+'  ';

}

然后

cordova.plugins.notification.local.schedule(arr);

应用程序挂起一段时间,比如15-20秒,然后崩溃。然后我尝试了括号&#39; {}&#39;字符串之前和之后。

for(i=0;i<total;i++)
{
    // ......... calculate bhhour,vmin,vsec etc. ............. //

    time_for_noti=new Date(year,month-1,parseInt(i),vhour,vmin,vsec);

    arr[i]='{ id: app_'+i+' , title: ' +i+' - '+time_for_noti+',text: app alarm.,sound: null,at  :    '+time_for_noti+'  }';

}

同样的结果。应用程序在计划行执行后10-15秒后崩溃。我也尝试手动制作一个巨大的字符串,如

ex='[{ id:........} , {..........}]';

然后

cordova.plugins.notification.local.schedule(ex);

在此行执行后,它立即崩溃了应用程序。我知道这是一个愚蠢的想法,但绝望的时候。

我做错了什么?如何动态发出此多重警报,总共20-40通知?我错过了什么?

3 个答案:

答案 0 :(得分:0)

我认为数组中的每个元素都需要是一个对象,而不是一个字符串。你尝试过这样的事吗?

arr[i]={ id: i, text: "Multi Notification " + i };

也就是说,用大括号替换对象周围的引号。

我自己无法尝试,因为我使用的Meteor版本似乎没有同样的方式。

答案 1 :(得分:0)

无需添加多个通知。 我已经发出1次通知的声音,直到用户点击它为止。 并提供更多警报功能,我会在触发通知时将应用程序带到前台。

看看https://github.com/vasani-arpit/cordova-plugin-local-notifications/blob/master/README.md。它是从Katzer Local notification plugin分叉的,所以所有的语法都是一样的。

答案 2 :(得分:0)

这是我的解决方案,它运作良好:

var notiflist = [];
for(var i = 0; i < data.length; i++) {
   notiflist[i] = { id: i, title: data[i].Title, text: data[i].TextPush };
} 
cordova.plugins.notification.local.schedule(notiflist);