Phonegap应用程序在IOS后台运行

时间:2014-07-15 10:17:37

标签: ios cordova hybrid

我有一个音乐Phonegap应用。播放音乐时,单击“主页”按钮,然后音乐停止。 无论如何,即使单击主页按钮,Phonegap仍然会正常运行吗?

提前感谢您的建议!!

我正在使用Phonegap构建,我的config.xml如下所示。

<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns = "http://www.w3.org/ns/widgets"
    xmlns:gap = "http://phonegap.com/ns/1.0"
    id        = "com.myMusic.myMusic"
    version   = "1.0.15">

  <name>MyMusic</name>

  <description>
    MyMusic
  </description>

  <gap:platform name="ios" />
  <gap:platform name="android" />

  <preference name="permissions"      value="none"/>

  <preference name="phonegap-version" value="3.1.0" />
  <gap:plugin name="de.appplant.cordova.plugin.background-mode" version="0.5.0" />
  <gap:plugin name="org.apache.cordova.camera" version="0.2.9" />
    <gap:plugin name="org.apache.cordova.media-capture" version="0.2.8" />
    <gap:plugin name="org.apache.cordova.battery-status" version="0.2.7" />
    <gap:plugin name="org.apache.cordova.device" version="0.2.8" />
    <gap:plugin name="org.apache.cordova.network-information" version="0.2.7" />
    <gap:plugin name="org.apache.cordova.dialogs" version="0.2.6"/>
    <gap:plugin name="org.apache.cordova.splashscreen" version="0.2.7" />
    <gap:plugin name="org.apache.cordova.geolocation" version="0.3.7" />
    <gap:plugin name="org.apache.cordova.file" version="1.0.1" />
    <gap:plugin name="org.apache.cordova.media" version="0.2.8" />
    <gap:plugin name="org.apache.cordova.inappbrowser" version="0.2.4" />

  <preference name="orientation"      value="portrait" />
  <preference name="target-device"    value="universal" />
  <preference name="fullscreen"       value="false" />
  <preference name="webviewbounce"    value="false" />
  <preference name="DisallowOverscroll" value="true" />

  <access origin="*" />


</widget>

2 个答案:

答案 0 :(得分:0)

做一个非常快速和简短的搜索,你会发现这个问题已经被问过了,所以已经这么多次了,并且有很好的答案。

但是,这应该可以解决您的问题:

info.plist文件中,添加Required background modes的新密钥。该密钥将有一系列选项。在该数组的Item 0中,将值设置为App plays audio

然后,修改~/PhoneGapLib/Classes/Sound.m文件(您可以使用Finder搜索Sound.m)。查找包含if ([resourceURL isFileURL]) {的行。在该行的下方,在if语句中添加以下内容:

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];

因此,该部分代码如下所示:

if ([resourceURL isFileURL]) {
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    audioFile.player = [[ AVAudioPlayer alloc ] initWithContentsOfURL:resourceURL error:&error];
} else {
    NSData* data = [NSData dataWithContentsOfURL:resourceURL];
    audioFile.player = [[ AVAudioPlayer alloc ] initWithData:data error:&error];
}

答案 1 :(得分:0)

This plugin似乎解决了这个问题。