我正在使用Cordova 3.5.0-0.2.6创建一个Android应用程序,并使用PushPlugin 2.2.1来推送通知。

当应用程序在后台运行时,一切运行良好,并在我的droid通知栏中获取了通知,但是在前台运行时,收到通知时则什么也没有发生。想要使其播放声音甚至显示弹出警报以使用户知道他有新的通知。从插件的github页面(https://github.com/phonegap-build/PushPlugin)复制了示例代码,但是它不起作用。代码的相应部分是这样的:

case 'message':
        // if this flag is set, this notification happened while we were in the foreground.
        // you might want to play a sound to get the user's attention, throw up a dialog, etc.
        if (e.foreground)
        {
            // on Android soundname is outside the payload.
            // On Amazon FireOS all custom attributes are contained within payload
            var soundfile = e.soundname || e.payload.sound;
            // if the notification contains a soundname, play it.
            // playing a sound also requires the org.apache.cordova.media plugin
            var my_media = new Media("/android_asset/www/"+ soundfile);
            my_media.play();
        }
        else
        {   // otherwise we were launched because the user touched a notification in the notification tray.
            window.location = 'iframe.html?url=' + e.payload.url;
            if (e.coldstart) {
                //$("#app-status-ul").append('<li>--COLDSTART NOTIFICATION--' + '</li>');
            } else{
                //$("#app-status-ul").append('<li>--BACKGROUND NOTIFICATION--' + '</li>');
            }
        }


不知道应该将beep.wav文件放在哪里,我将其放置在www文件夹中,但我100%确信这是放置文件的地方。

有人遇到过这个问题吗?知道我这里可能会缺少什么吗?

谢谢,

卢西亚诺

最佳答案

但是当它在前台时,它没有任何通知


这是PushPlugin的默认行为。仅当应用程序在后台或关闭时,它才会创建通知和相关的声音。




  想要使其播放声音甚至显示弹出警报以使用户知道他有新的通知。


最简单的解决方案是使用Cordova Plugin Dialogs。您要做的就是:

switch( e.event )
{
    case 'message':
        if (e.foreground) {
            navigator.notification.beep(1);
        }
.
.
}


请注意,此提示音将是用户在其设备上配置的消息音。




  不确定应将beep.wav文件放置在何处,我将其放置在www文件夹中


也不确定,但我认为它也是www目录。

另请参阅:Android won't play push sound while app not running

10-04 17:11