当iOS上的phonegap应用程序处于后台时,哔声不起作用

我正在开发基于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");
}
点赞