首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIWebView:当应用程序进入后台时,iOS 6中的HTML5音频暂停

UIWebView:当应用程序进入后台时,iOS 6中的HTML5音频暂停
EN

Stack Overflow用户
提问于 2012-07-23 23:50:24
回答 4查看 20.6K关注 0票数 27

日安,

我的应用是一个音乐播放应用。我用Javascript控制<audio>-Tag。到目前为止,播放、暂停、下一步和上一步按钮都正常工作。当我在iOS 5中待机时,音乐仍在播放,但自动播放下一首歌曲不起作用。当它不处于待机状态时,它可以工作。而在iOS 6中,只要按下按钮,音乐就会淡出。

锁定屏幕上的播放/暂停按钮在iOS 5中可用,但在iOS 6中不起作用。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-14 05:00:18

从iOS 6开始,您必须在创建UIWebView之前将音频会话类别设置为“播放”。这就是您要做的全部工作。没有必要使会话处于活动状态。

这也应该用于html视频,因为如果你不配置会话,当振铃器开关关闭时,你的视频将被静音。

代码语言:javascript
复制
#import <AVFoundation/AVFoundation.h>

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
BOOL ok;
NSError *setCategoryError = nil;
ok = [audioSession setCategory:AVAudioSessionCategoryPlayback
                         error:&setCategoryError];
if (!ok) {
  NSLog(@"%s setCategoryError=%@", __PRETTY_FUNCTION__, setCategoryError);
}

确保您的目标链接到AVFoundation框架。

如果使用Cordova,您需要修改的文件是platforms/ios/MyApp/Classes/AppDelegate.m,并且最终将如下所示:

代码语言:javascript
复制
#import "AppDelegate.h"
#import "MainViewController.h"
#import <AVFoundation/AVFoundation.h>

@implementation AppDelegate

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    BOOL ok;
    NSError *setCategoryError = nil;
    ok = [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];
    if (!ok) {
        NSLog(@"%s setCategoryError=%@", __PRETTY_FUNCTION__, setCategoryError);
    }

    self.viewController = [[MainViewController alloc] init];
    return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

@end

此外,正如注释中所提到的,您需要按照this answer中的说明链接AVFoundation框架

  • 使用xcode open ./platforms/ios/MyApp.xcworkspace/
  • 项目导航器>目标我的应用程序>底部的General
  • Scroll打开项目以查找链接的框架和库
票数 73
EN

Stack Overflow用户

发布于 2015-02-05 09:51:10

这个插件会让你的应用忽略静音开关。它基本上与其他答案中的代码相同,但它被很好地包装在一个插件中,这样你就不需要做任何手动的目标c编辑。

https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio

运行以下命令将其添加到您的项目中:

代码语言:javascript
复制
cordova plugin add https://github.com/EddyVerbruggen/cordova-plugin-backgroundaudio.git
票数 1
EN

Stack Overflow用户

发布于 2016-03-04 11:39:31

Swift语法:

在AppDelegate中:

代码语言:javascript
复制
import AVFoundation

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
  do{
      let audio = AVAudioSession.sharedInstance()
      try audio.setCategory(AVAudioSessionCategoryPlayback)
  }catch let error as NSError{
     print(error)
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11616001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档