gpt4 book ai didi

ios - 观察 AVAudioSession 不触发通知

转载 作者:行者123 更新时间:2023-11-29 00:07:38 24 4
gpt4 key购买 nike

在我目前正在构建的应用程序中,我需要根据 [AVAudioSession sharedInstance] 的当前类别处理一些事情。这个类别会在运行时发生变化,我试图通过观察 NotificationCenter 中的 AVAudioSessionRouteChangeNotification 来跟踪变化。

但是,无论我尝试什么,通知都没有被触发(或者至少我的选择器方法没有收到任何东西)。

一些测试示例代码;

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionRouteDidChange:) name:AVAudioSessionRouteChangeNotification object:nil];
return YES;
}
- (void)sessionRouteDidChange:(NSNotification *)notification
{
NSLog(@"SESSION ROUTE CHANGED");
}

ViewController.m

- (void)changeAudioCategory:(AVAudioSessionCategory)category{
[[AVAudioSession sharedInstance] setActive:NO error:nil];
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *setCategoryError = nil;
BOOL success = [audioSession setCategory:category error:&setCategoryError];
if (!success) {
NSLog(@"ERROR");
}
[audioSession setActive:YES error:nil];

/* Logging the current category */
NSLog(@"AVAUDIOSESSION CATEGORY %@", audioSession.category);
}

我希望我在 AppDelegate 中设置的观察者在此方法中更改类别时向 sessionRouteDidChange 发送通知,但没有任何反应。

我尝试过的;

  • 在多个 iOS 版本和 iPhone 机型上进行了测试,但均无效
  • 双重和三次检查我没有在任何地方移除观察者

关于我遗漏的任何想法?

最佳答案

更改类别不是路线更改,因此不会发布通知。你要的是KVO observe 类别 属性。

当您更改音频路由时,例如,当您插入耳机时,路由会发生变化。

关于ios - 观察 AVAudioSession 不触发通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47571688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com