【问题标题】:Phonegap app works in IOS backgroundPhonegap 应用在 IOS 后台运行
【发布时间】:2014-07-15 10:17:36
【问题描述】:

我有一个音乐 Phonegap 应用程序。播放音乐时,我单击主页按钮,然后音乐停止。 是不是即使点击了home键,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>

【问题讨论】:

  • 来自here 设置config.xml &lt;preference name="KeepRunning" value="true"/&gt;
  • @Neeku 我尝试使用名为 BackgroundMode 的 3-rd 方插件。但是,它似乎不起作用。
  • @JackHe:哦,我不清楚使用的平台是iOS。请在您的问题中更新。我们需要更详细的问题。喜欢您使用phonegap build 还是phonegap native 开发?哪个版本? Config.xml 文件代码?等等...谢谢,
  • @jeekonline 我正在使用 Phonegap 3.1 和 Phonegap 构建。我应该使用任何第三方插件吗?或更改 config.xml 中的任何选项?谢谢。
  • @JackHe :好的,你不需要去第三方插件。您可以在帖子中分享 config.xml 吗?因为,在我的应用程序中,当应用程序在后台运行时,背景声音会继续播放。

标签: ios cordova hybrid


【解决方案1】:

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

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

在您的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];
}

【讨论】:

  • 非常感谢。由于我使用的是Phonegap build,有没有Phonegap Build的解决方案?
  • 那是代表PhoneGap; Sound.m 是 PhoneGap 库中的一个文件。
  • 对不起尼库。我的意思是 Phonegap Build 解决方案。这意味着我只需要更新 js 或 config.xml 中的一些代码。目前,我还没有搭建IOS环境。 :(
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    相关资源
    最近更新 更多