我正在开发基于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不会振动,但是当应用程序处于前台时蜂鸣声会起作用,但在后台时则不会.
>我的应用程序正在使用Phonegap 2.5.0
>我正在使用最新的Xcode v4.6.2和最新的iOS 6.3.1 SDK
>我在/ www root中使用了beep.wav
>我的应用程序的.plist设置“位置”和“音频”的“UIBackgroundModes”
>我的config.xml包含以下设置:
< plugin name =“Notification”value =“CDVNotification”/>
< plugin name =“Media”value =“CDVSound”/>
< preference name =“MediaPlaybackRequiresUserAction”value =“false”/>
< preference name =“AllowInlineMediaPlayback”value =“true”/>
任何建议如何解决这个问题将非常感激:-)
最佳答案 如果有其他人感兴趣,这是我如何解决这个问题:
我更新了Local Notifications phonegap插件,用于Cordova 2.x.我使用插件通过在www / 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");
}