【问题标题】:iOS: Playing audio in silent mode [duplicate]iOS:以静音模式播放音频[重复]
【发布时间】:2012-04-12 09:52:19
【问题描述】:

即使用户的静音/静音开关设置为静音/振动,让我的应用播放音频的“正确”方法是什么?

一些背景: 我实际上是在调试阶段让它工作的,但是当我将我的应用程序提交给 Apple 然后从应用程序商店下载它时,音频在静音模式下被禁用!这是我在调试阶段的工作方式:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                        sizeof(sessionCategory), &sessionCategory);

音频播放使用:

NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mp3"];  
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];  
theAudio.delegate = self;
[theAudio play];

【问题讨论】:

  • 为什么要让应用在用户不想听到的时候播放声音?您确定这是您的用户想要的吗?
  • 我知道有一条规则是“你不应该在静音模式下播放音频,这是一种糟糕的用户体验”,但我的应用程序有点例外,因为它的唯一目的是发出声音,而“糟糕的用户体验”实际上来自于用户点击“播放”,期望听到声音,却一无所获,却没有意识到他们的静音开关设置为静音。
  • 也许检测到静音状态并通知用户他们在取消静音之前不会听到声音。无论如何,这更符合 Apple 的 HIG。
  • @Hyperbole 这是个好主意,感谢您的建议。

标签: iphone objective-c ipad ipod


【解决方案1】:

我认为它做同样的事情,但你有没有尝试过像这样通过 AVFoundation 设置设置?

 [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
    [[AVAudioSession sharedInstance] setActive: YES error: nil];

【讨论】:

  • 这同样有效,但我想不能保证它在调试阶段之后也不会失败。
猜你喜欢
  • 1970-01-01
  • 2015-12-17
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
相关资源
最近更新 更多