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

时间:2013-05-24 12:53:14

标签: ios geolocation notifications cordova background-process

我正在研究基于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和最新的SDK for 6.3.1
  • 我在/ 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”/>

如何解决这个问题的任何建议都将非常感激: - )

1 个答案:

答案 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");
}