iOS后台持续播放音乐

作者: 幻想无极 | 来源:发表于2016-05-13 15:45 被阅读3703次

前言

需要实现像闹钟那样通知过后然后不进入app直接播放音乐的功能
持续后台播放,网络歌曲也可以,重点是持续播放,后台播放很简单,但是后台持续播放,则需要做一些处理,申请后台id,才能实现持续播放。

实现方式

1.开启后台模式


开启音乐后台.png

2.在Appdelegate.m的applicationWillResignActive:方法中激活后台播放

UIBackgroundTaskIdentifier _bgTaskId;
-(void)applicationWillResignActive:(UIApplication *)application
{
    //开启后台处理多媒体事件
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    AVAudioSession *session=[AVAudioSession sharedInstance];
    [session setActive:YES error:nil];
    //后台播放
    [session setCategory:AVAudioSessionCategoryPlayback error:nil];
    //这样做,可以在按home键进入后台后 ,播放一段时间,几分钟吧。但是不能持续播放网络歌曲,若需要持续播放网络歌曲,还需要申请后台任务id,具体做法是:
    _bgTaskId=[AppDelegate backgroundPlayerID:_bgTaskId];
}
//实现一下backgroundPlayerID:这个方法:
+(UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId
{
    //设置并激活音频会话类别
    AVAudioSession *session=[AVAudioSession sharedInstance];
    [session setCategory:AVAudioSessionCategoryPlayback error:nil];
    [session setActive:YES error:nil];
    //允许应用程序接收远程控制
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    //设置后台任务ID
    UIBackgroundTaskIdentifier newTaskId=UIBackgroundTaskInvalid;
    newTaskId=[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];
    if(newTaskId!=UIBackgroundTaskInvalid&&backTaskId!=UIBackgroundTaskInvalid)
    {
        [[UIApplication sharedApplication] endBackgroundTask:backTaskId];
    }
    return newTaskId;
}

3.处理中断事件,如电话,微信语音等。
原理是,在音乐播放被中断时,暂停播放,在中断完成后,开始播放

//处理中断事件的通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleInterreption:) name:AVAudioSessionInterruptionNotification object:[AVAudioSession sharedInstance]];
-->实现接收到中断通知时的方法
//处理中断事件
-(void)handleInterreption:(NSNotification *)sender
{
    if(_played)
    {
      [self.playView.player pause];
        _played=NO;
    }
    else
    {
        [self.playView.player play];
        _played=YES;
    }
}

继续研究,上面主要实现了音乐在app中开启播放然后推到后台继续播放,而我的需求是通知来到之后进行音乐的启动播放

参考链接

http://www.jianshu.com/p/ab300ea6e90c

补充

1.发现闹钟的原理并不是后台播放音乐,而是到了一个时间发出一个通知,这个通知每分钟重复一次,然后播放自定义通知音乐,需要在30s以内
2.如果是处理得比较好的,进入app界面内再次响铃然后程序退到后台掉用后台持续播放音乐
3.例子:火箭闹钟

相关文章

  • iOS 后台运行音乐必看文章

    iOS后台运行之后台播放音乐 必看参考文章:后台播放音乐 后台播放核心代码 电话中断后继续播放核心代码

  • iOS后台持续播放音乐

    之前在App Store上架了一个音乐播放器软件,用的是AVPlayer做的音乐播放器。很多用户反映没有后台播放,...

  • iOS后台持续播放音乐

    前言 需要实现像闹钟那样通知过后然后不进入app直接播放音乐的功能持续后台播放,网络歌曲也可以,重点是持续播放,后...

  • iOS后台持续播放音乐

    http://www.jianshu.com/p/ab300ea6e90c

  • iOS后台持续播放音乐以及来电打断等

    之前做的app需求后台播放音乐,并且音乐需要持续播放下去,做这个的时候碰到几个坑: 1、app进入后台后音乐播放一...

  • ios-后台播放视频、直播流

    关于ios-后台播放 后台播放的不是新的技术;后台播放在音乐播放器上得到了广泛的运用;想了解和实现的原因:看到B站...

  • Paper Collection - Background Ta

    1.IOS后台运行机制详解(一)2.IOS后台运行机制详解(二)3.IOS后台运行 之 后台播放音乐4.转载:IO...

  • iOS应用程序在后台保持运行实现方式

    在iOS系统上应用程序在后台如何长时间运行 播放音乐 声明Audio 获取GPS信号 iOS 长时间后台的两种方法...

  • iOS - 后台保活(后台持续运行代码)

    iOS有两种后台运行保活方式,第一种叫无声音乐保活(即在后台开启音频播放,只不过不需要播放出音量且不能影响其他音乐...

  • 后台相关

    1、后台播放2、锁屏界面展示,这个要真机上才可以 iOS模拟器中播放音乐退到后台还是有用的,但是真机不行,要做如下...

网友评论

  • 帅狗黑皮:不行啊 大兄弟 退后台就停止了
  • 5d47cda490f0:想问一下APP不是音乐播放器的后台音乐播放被拒问题如何解决呢?
    幻想无极:@七尺阳光 写下具体使用音乐的原因试试
  • 阿龍飛:你好:我试了---//处理中断事件不会恢复播放音乐啊
  • 来宝:我试的也不行
  • 萨达搜索到:我的也是收到一条推送,就播放推送过来的音频链接,流媒体,但是貌似也不行
    萨达搜索到:@紫霞大仙F 如果是.mp3 是可以的 但是 .amr 就不行
  • 6357a8a55db3:好像不起作用啊 avplayer 还是几分钟就停了

本文标题:iOS后台持续播放音乐

本文链接:https://www.haomeiwen.com/subject/xkcmrttx.html