我正在研究基于phonegap的导航应用的iOS版本。我的应用程序使用GPS跟踪用户在步行路线周围的位置,并在用户到达有新的指示信息的位置时使用音频(navigator.notification.beep)和触觉(navigator.notification.vibrate)反馈提醒用户。
当我的应用程序在前台运行时,声音蜂鸣声和振动都会在到达地理位置时触发,但是当应用程序在后台暂停时,可以通过按电源按钮关闭屏幕或按下主屏幕按钮返回跳板,只有振动起作用 - 发出哔哔声。我已经添加了调试,所以我可以在日志文件中看到应用程序在后台调用navigator.notification.beep()但是没有发出哔声。我在运行iOS 6.3.1的iPhone 4S和运行iOS 5.1.1的iPad 2上测试了我的应用程序。显然iPad不会振动但是应用程序在前台时会发出蜂鸣声,但在后台时则不会。
我的config.xml包含以下设置:
< plugin name =“Notification”value =“CDVNotification”/>
< plugin name =“Media”value =“CDVSound”/>
< preference name =“MediaPlaybackRequiresUserAction”value =“false”/>
< preference name =“AllowInlineMediaPlayback”value =“true”/>
如何解决这个问题的任何建议都将非常感激: - )
答案 0 :(得分:2)
如果有其他人感兴趣,以下是我如何解决这个问题:
我更新了Local Notifications phonegap插件,以便与Cordova 2.x一起使用。我使用插件通过在www / as beep.wav中为phonegap发出相同的声音来提供前景蜂鸣声的背景蜂鸣声和phonegap,就像iOS项目资源中的本地通知beep.caf一样。
function doBeep(){
cordova.require('cordova/plugin/localnotification').add(
function(){
console.log("Successfully added local notification");
},
function(){
console.error("Error adding local notification");
},{
date: new Date(new Date().getTime()),
repeat:'',
message: '', // No message so just beep
hasAction: true,
badge: 0,
id: '1',
background:'background',
foreground:'running',
sound: 'beep.caf'
}
);
}
function running(){
console.log("Running in the foreground so use a phonegap notification");
navigator.notification.beep();
}
function background(){
console.log("Running in the background so an iOS local notification will be used");
}