首页 > 学院 > 开发设计 > 正文

后台播放

2019-11-06 09:58:51
字体:
来源:转载
供稿:网友

//直接在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;

}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表