美文网首页
应用支持后台播放控制

应用支持后台播放控制

作者: xiao小马哥 | 来源:发表于2017-03-02 18:11 被阅读110次

    1.支持后台播放

    要想让我们的应用支持在后台播放,需要在info.plist文件里面添加两个key,如下:

    B2ACF2D4-ABD8-40AB-A119-C1CD7DE46FFA.png

    为了方便复制key如下:
    Required background modes :
    App plays audio or streams audio/video using AirPlay
    App downloads content in response to push notifications

    也可以在Capabilities中开启 Background Modes
    勾选如下:


    B0494591-490F-41B4-8714-A14BC4407B2A.png

    在播放的时候调用如下方法:

        //设置后台播放模式
        AVAudioSession *audioSession=[AVAudioSession sharedInstance];
        [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
    

    此时播放音频时我们点击HOME键回到主页面,会发现音频不会停,已经实现后台播放的功能。

    2.后台播放控制

    在appDelegate中,我们需要先注册应用支持响应后台控制:

    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
    

    并实现remoteControlReceivedWithEvent:方法
    -(void)remoteControlReceivedWithEvent:(UIEvent *)event
    这个方法的参数event有一个subtype的属性,这是一个枚举值,是用户点击这些控制键后传递给我们的消息,我们可以根据这些消息在app内做逻辑处理。枚举如下,其中只有100之后的在音频控制中对我们有效:

    typedef NS_ENUM(NSInteger, UIEventSubtype) {
     // available in iPhone OS 3.0
     UIEventSubtypeNone                              = 0,
    
    // for UIEventTypeMotion, available in iPhone OS 3.0
    UIEventSubtypeMotionShake                       = 1,
    
    // for UIEventTypeRemoteControl, available in iOS 4.0
    UIEventSubtypeRemoteControlPlay                 = 100,
     // 点击播放按钮
    UIEventSubtypeRemoteControlPause                = 101,
    // 点击暂停按钮
    UIEventSubtypeRemoteControlStop                 = 102,
    // 点击停止按钮
    UIEventSubtypeRemoteControlTogglePlayPause      = 103,
    // //点击播放与暂停开关按钮(iphone抽屉中使用这个)
    UIEventSubtypeRemoteControlNextTrack            = 104,
    // //点击下一曲按钮或者耳机中间按钮两下
    UIEventSubtypeRemoteControlPreviousTrack        = 105,
    // 点击上一曲按钮或者耳机中间按钮三下 
    UIEventSubtypeRemoteControlBeginSeekingBackward = 106,
    //快退开始 点击耳机中间按钮三下不放开
    UIEventSubtypeRemoteControlEndSeekingBackward   = 107,
    //快退结束 耳机快退控制松开后
    UIEventSubtypeRemoteControlBeginSeekingForward  = 108,
    //开始快进 耳机中间按钮两下不放开
    UIEventSubtypeRemoteControlEndSeekingForward    = 109,
    //快进结束 耳机快进操作松开后
    };
    

    3.设置后台信息显示及锁屏界面

    设置锁屏界面显示信息的原理是通过设置一个系统的字典,当音频开始播放时,系统会自动从这个字典中读取要显示的信息,如果需要动态显示,我们只需要不断更新这个字典即可。首先需要添加<MediaPlayer/MediaPlayer.h>这个头文件。

    代码示例如下:

    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    
    //设置歌曲题目
    
    [dict setObject:@"题目" forKey:MPMediaItemPropertyTitle];
    
    //设置歌手名
    
    [dict setObject:@"歌手" forKey:MPMediaItemPropertyArtist];
    
    //设置专辑名
    
    [dict setObject:@"专辑" forKey:MPMediaItemPropertyAlbumTitle];
    
    //设置显示的图片
    
    UIImage *newImage = [UIImage imageNamed:@"43.png"];
    
    [dict setObject:[[MPMediaItemArtwork alloc] initWithImage:newImage]
    
             forKey:MPMediaItemPropertyArtwork];
    
    //设置歌曲时长
    
    [dict setObject:[NSNumber numberWithDouble:300] forKey:MPMediaItemPropertyPlaybackDuration];
    
    //设置已经播放时长
    
    [dict setObject:[NSNumber numberWithDouble:150] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime]; 
    
    //更新字典
    
    [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];
    

    相关文章

      网友评论

          本文标题:应用支持后台播放控制

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