美文网首页
AVAudio设置APP播放音频,不影响其他APP音频

AVAudio设置APP播放音频,不影响其他APP音频

作者: LINGSHOW | 来源:发表于2020-07-17 13:57 被阅读0次
    一、事件背景

    iOS13版本后台杀进程厉害,影响用户体验,公司就要求看有没什么方案能解决。

    二、方案

    需要让APP后台一直在保活。保活的方案有两种。
    方案1、在后台一直播放一段无声音频,
    方案2、在后台实时定位。

    三、决策

    考虑到后台实时定位的方案,只有在用户开启的APP的定位权限才行。所以否决了方案2,采纳方案1。

    四、实施
    1. 在application: didFinishLaunchingWithOptions:方法中做如下处理
     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // 防止影响其他APP音频
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient withOptions:AVAudioSessionCategoryOptionMixWithOthers|AVAudioSessionCategoryOptionDefaultToSpeaker error:nil];
    }
    
    1. 在applicationDidEnterBackground:方法中处理如下:
    - (void)applicationDidEnterBackground:(UIApplication *)application {
        
            if (!_audioPlayer) {
                AVAudioSession *session = [AVAudioSession sharedInstance];
                [session setActive:YES error:nil];
                [session setCategory:AVAudioSessionCategoryAmbient error:nil];
    
                [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
                
                NSString *musicPath=[[NSBundle mainBundle] pathForResource:@"notVoice" ofType:@"mp3"];
                NSURL *url=[[NSURL alloc]initFileURLWithPath:musicPath];
                
                _audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
            }       
            [_audioPlayer prepareToPlay];
            _audioPlayer.numberOfLoops = -1;
            [_audioPlayer play];
    }
    
    1. 在applicationWillEnterForeground方法中暂定音频播放
    - (void)applicationWillEnterForeground:(UIApplication *)application {
        [_audioPlayer stop];
    }
    
    五、建议

    了解AVAudioSessionCategory各个值的含义

    参考文献

    1. AVAudioSession 的 AVAudioSessionCategory 和 AVAudioSessionCategoryOptions 相关
    2. iOS - app内播放音视频,不影响后台音乐播放
    3. iOS播放完音频继续播放其他APP音频

    相关文章

      网友评论

          本文标题:AVAudio设置APP播放音频,不影响其他APP音频

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