4

我正在开发基于 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 根目录中使用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" />

任何如何解决此问题的建议将不胜感激:-)

4

1 回答 1

2

如果其他人有兴趣,这是我解决这个问题的方法:

我更新了本地通知phonegap 插件以用于 Cordova 2.x。我使用该插件来提供背景哔声和前景哔声的 phonegap,方法是在 www/ 中为 phonegap 放置与 beep.wav 相同的声音,在 iOS 项目 Resources 中将本地通知放置为 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");
}
于 2013-05-31T11:26:25.463 回答