Ios 带有AVPlayer的应用程序启动后播放mp4中断iPod音乐

Ios 带有AVPlayer的应用程序启动后播放mp4中断iPod音乐,ios,avplayer,audiosession,interruption,Ios,Avplayer,Audiosession,Interruption,我的应用程序使用AVPlayer播放mp4,当我的应用程序完成启动时,它会中断iPod音乐,尽管我已将音频会话设置为允许与其他应用程序混合 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { AudioSessionInitialize(NULL, NULL, NULL, NULL); AudioSessio

我的应用程序使用AVPlayer播放mp4,当我的应用程序完成启动时,它会中断iPod音乐,尽管我已将音频会话设置为允许与其他应用程序混合

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    AudioSessionSetActive(true);
    UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
    AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
    UInt32 allowMixWithOthers = true;
    AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixWithOthers), &allowMixWithOthers);
视图控制器出现后,我重新启动iPod音乐,我的应用程序工作正常,不会中断,我的应用程序也不会再中断音乐

有人知道这个问题能否解决吗?我还检查了
myapp info.plist
,找不到阻止中断iPod的属性

所有AudioSession方法都不返回错误

以下是iPhoneConfigureUtility中的日志:

Aug 20 10:55:54 nova-teki-iPhone audiotest[3510] <Warning>: AudioSessionInitialize status = 0
Aug 20 10:55:55 nova-teki-iPhone kernel[0] <Debug>: ALS: kIOHIDDisplayBrightnessSliderPositionKey=69% (0xb226)
Aug 20 10:55:55 nova-teki-iPhone audiotest[3510] <Warning>: AudioSessionSetActive status = 0
Aug 20 10:55:55 nova-teki-iPhone audiotest[3510] <Warning>: kAudioSessionProperty_AudioCategory status = 0
Aug 20 10:55:55 nova-teki-iPhone audiotest[3510] <Warning>: kAudioSessionProperty_OverrideCategoryMixWithOthers status = 0
Aug 20 10:55:56 nova-teki-iPhone audiotest[3510] <Error>: [10:55:56.005] FigSubtitleSampleCreateFromPropertyList signalled err=50 (kFigCFBadPropertyListErr) (NULL or bad plist) at /SourceCache/EmbeddedCoreMedia/EmbeddedCoreMedia-1033.6/BuildSystem/XcodeProjects/MediaToolbox/../../../Sources/../Prototypes/ClosedCaptions/FigCaptionCommand.c line 762
Aug 20 10:55:56 nova-teki-iPhone audiotest[3510] <Warning>: Application windows are expected to have a root view controller at the end of application launch

最后,我找出了问题所在

AudioSessionInitialize(NULL, NULL, NULL, NULL);  
UInt32 sessionCategory = kAudioSessionCategory_AmbientSound;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory);
UInt32 allowMixWithOthers = true;
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixWithOthers), &allowMixWithOthers);
AudioSessionSetActive(true);

AudioSessionSetActive必须在AudioSessionSetProperty之后调用,它现在可以正常工作。

在iOS 6/7中,您可以使用AudioSession,因为AudioSessionSetProperty已被弃用

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];

我假设那些AudioSessionSetProperty方法返回YES?谢谢您的回复,@AdamB。我检查了所有方法的状态,它们都是kAudioSessionNoError。谢谢@AdamB,我在测试后发现了什么问题。很好。感谢您为其他人添加答案。很好,仍然在iOS 14中工作,谢谢。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:nil];