后台播放

//直接在appdelegate 里写上这几句代码就可以实现后台播放了


//后台播放

- (void)applicationWillResignActive:(UIApplication *)application{

    

    //开启后台处理多媒体事件

    [[UIApplicationsharedApplication] beginReceivingRemoteControlEvents];

    AVAudioSession * session=[AVAudioSessionsharedInstance];

    [session setActive:YESerror:nil];

    //后台播放

    [session setCategory:AVAudioSessionCategoryPlaybackerror:nil];

    //这样做,可以在按home键进入后台后,播放一段时间,几分钟吧。但是不能持续播放网络歌曲,若需要持续播放网络歌曲,还需要申请后台任务id,具体做法是:

    //一个后台任务标识符

    UIBackgroundTaskIdentifier taskID;

    taskID = [[UIApplicationsharedApplication] beginBackgroundTaskWithExpirationHandler:^{

        //如果系统觉得我们还是运行了太久,将执行这个程序块,并停止运行应用程序

        [[UIApplicationsharedApplication] endBackgroundTask:taskID];

    }];

    taskID=[AppDelegatebackgroundPlayerID:taskID];

    //其中的_bgTaskId是后台任务UIBackgroundTaskIdentifier _bgTaskId;

}

//实现一下backgroundPlayerID:这个方法:

+(UIBackgroundTaskIdentifier)backgroundPlayerID:(UIBackgroundTaskIdentifier)backTaskId

{

    //设置并激活音频会话类别

    AVAudioSession *session=[AVAudioSessionsharedInstance];

    [session setCategory:AVAudioSessionCategoryPlaybackerror:nil];

    [session setActive:YESerror:nil];

    //允许应用程序接收远程控制

    [[UIApplicationsharedApplication] beginReceivingRemoteControlEvents];

    //设置后台任务ID

    UIBackgroundTaskIdentifier newTaskId=UIBackgroundTaskInvalid;

    newTaskId=[[UIApplicationsharedApplication] beginBackgroundTaskWithExpirationHandler:nil];

    if(newTaskId!=UIBackgroundTaskInvalid&&backTaskId!=UIBackgroundTaskInvalid)

    {

        [[UIApplicationsharedApplication] endBackgroundTask:backTaskId];

    }

    return newTaskId;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值