前面已经讲过如何基于push notification自定义sound,但是还是存在几个问题:
- IOS app在前台运行的时候,如何播放sound?因为这个时候push notification是不起作用的。
- 如果用户改成了mute(静音)状态,如何保证push notification sound可以播放?
下面我们就来探讨这些问题。
问题一:我们可以采用media plugin来播放声音 ---- 如果此时IOS app正在前台运行,不能够接收push notification的话。
安装plugin:
cordova plugin add cordova-plugin-media
实现mediaPlayer:
.factory('mediaPlayer',function($cordovaMedia){ var src = "src/sound.mp3"; console.log(src); return { play:function(){ if (media !== undefined) { media.stop(); media.release(); } media = $cordovaMedia.newMedia(src); var iOSPlayOptions = { numberOfLoops: 1, playAudioWhenScreenIsLocked : false } media.play(iOSPlayOptions); // iOS only! media.play(); // Android } }; })
在run方法里面调用:
mediaPlayer.play();
里面的关键点是"playAudioWhenScreenIsLocked : false",即使系统是mute状态的,仍然可以播放声音。
问题二:
暂时还没有解决方案。