美文网首页
iOS远程控制事件

iOS远程控制事件

作者: 奶茶大叔 | 来源:发表于2020-09-08 15:33 被阅读0次

最近开发收到一个产品需求 :需要在用户看直播的时候,APP退到后台,锁屏界面增加远程控件、通知远程栏控件
虽然项目用的是TXLiteAVSDK,然后去官网查看文档得到这个结论:


image.png

虽然无法实现,但是还是在TXVodPlayer点播功能下试了试

1.首先需要设置项目

image.png

2.didFinishLaunchingWithOptions 方法加载

AVAudioSession *session = [AVAudioSession sharedInstance];
    if (@available(iOS 10.0, *)) {
        [session setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionAllowAirPlay error:nil];
    } else {
        [session setCategory:AVAudioSessionCategoryPlayback  error:nil];
    }
    NSError *error;
    [session setActive:YES error:&error];
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

3.在需要播放的controller或者View里重写canBecomeFirstResponder,并主动调用

- (BOOL)canBecomeFirstResponder
{
    return YES;
}

4.配置远程空间播放信息

- (void)configNowPlayingInfoCenter
{
    if (NSClassFromString(@"MPNowPlayingInfoCenter")) {
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
        //设置曲目
        [dict setObject:self.playerStatus.playModel.title forKey:MPMediaItemPropertyTitle];
        //设置歌手名
        [dict setObject:self.playerStatus.playModel.nickname forKey:MPMediaItemPropertyArtist];
        //设置歌曲时长
       [dict setObject:[NSNumber numberWithDouble:self.playerStatus.playModel.live_time.doubleValue]  forKey:MPMediaItemPropertyPlaybackDuration];
        UIImage *img = [UIImage imageNamed:@"program_placeholder_large"];
MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:img];
          [dict setObject:artwork forKey:MPMediaItemPropertyArtwork];
          [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];
}

5.接收远程控制事件

iOS11之前

- (void)remoteControlReceivedWithEvent:(UIEvent *)event
{
    switch (event.subtype) {
        case UIEventSubtypeRemoteControlPlay:
        case UIEventSubtypeRemoteControlPause:
            
            break;
        case UIEventSubtypeRemoteControlNextTrack:
         
            break;
        case UIEventSubtypeRemoteControlPreviousTrack:
           
            break;
        default:
            break;
    }
}

iOS11之后

 //远程事件监听
    if(@available (iOS 11.0 ,*)){
        MPRemoteCommandCenter* commandCenter = [MPRemoteCommandCenter sharedCommandCenter];
        [commandCenter.playCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
            
            return MPRemoteCommandHandlerStatusSuccess;
        }];
        
        [commandCenter.pauseCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus(MPRemoteCommandEvent * _Nonnull event) {
            
            return MPRemoteCommandHandlerStatusSuccess;
        }];
    }

相关文章

  • iOS事件响应原理

    iOS中事件可以分: 触摸事件 加速计事件 远程控制事件

  • iOS 事件的传递响应机制

    iOS 中的事件 触摸事件 加速计事件 远程控制事件 iOS 中的触摸事件1、触摸事件发生,操作系统iOS会将此类...

  • iOS事件的响应者链

    iOS 事件响应者链 1 iOS中的事件 触摸事件 加速计事件 远程控制事件 在iOS中不是任何对象都能处理事件,...

  • iOS事件

    概述 iOS中事件有触摸事件、加速计事件、远程控制事件,下面以触摸事件为例研究下iOS事件相关的内容 UIResp...

  • 事件、事件响应链、手势分析

    一.事件 1.iOS三大事件包含触摸事件,设备移动事件,远程控制事件 2.iOS规定只有继承UIResponder...

  • iOS---事件传递和响应机制

    iOS 中的事件 触摸事件 加速计事件 远程控制事件 响应者对象(UIResponder) 只有继承 UIResp...

  • iOS事件处理机制

    事件类型 iOS的事件可以分为三类:触摸事件,加速计事件,远程控制事件 iOS中不是任何对象都能处理对象,只有继承...

  • iOS 点击事件传递及响应

    1.iOS中的事件 iOS中的事件可以分为3大类型: 触摸事件加速计事件远程控制事件这里我们只讨论iOS中的触摸事...

  • iOS事件传递与响应原理

    iOS 中的事件可以分为3大类:触摸事件、加速计事件、远程控制事件,本文仅以 iOS 中的触摸事件为例进行讨论,主...

  • 事件传递

    iOS的事件可以分为三类:触摸事件,加速计事件,远程控制事件 iOS中不是任何对象都能处理对象,只有继承了UIRe...

网友评论

      本文标题:iOS远程控制事件

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