【问题标题】:Set device volume - UILocalNotification - iphone in silent mode设置设备音量 - UILocalNotification - iphone处于静音模式
【发布时间】:2011-12-22 09:25:19
【问题描述】:

当应用程序在后台时生成 UILocalNotification 时,我如何设置设备的音量(在静音模式下)?我正在开发警报应用程序,因此也必须在静音模式下播放声音,并且我正在使用本地通知处理应用程序警报。

严重卡在这个问题上,无法在静音模式下播放闹钟。

请帮忙..

【问题讨论】:

  • 静音开关的存在是有原因的......
  • 但是闹钟也应该在静音模式下播放..
  • 我不同意这一点。设备应振动,但不应播放声音。我的意思是,如果静音模式实际上并不能保证您的设备将保持静音(除了查找我的 iphone 警报之类的东西),那么静音模式有什么好处?我发现当用户直接启动它时允许声音是可以讨论的(启动 vdeo播放或类似的东西),但仅此而已。 (不知道苹果是否这样做,但如果他们这样做,他们应该改变它)
  • 嗨,Ahti,这是应用程序要求的一部分,必须遵守。我同意你说的。
  • @Ahti 默认闹钟应用会播放声音,即使您已将 iPhone 触发为静音模式。他们是怎么做到的?

标签: iphone uilocalnotification


【解决方案1】:

这根本不可能。 UILocalNotification 弹窗和声音是由另一个系统进程生成的,并且该进程会观察设备静音模式,因此如果设备处于静音状态,它不会播放通知声音。

如果您希望您的闹钟应用即使在设备处于静音模式时也能播放闹钟声音,您必须直接从您的应用播放闹钟声音。为此,您需要让您的应用程序在后台运行,然后您必须在后台播放警报声音文件。后者可以通过在 info.plist 中指定“所需背景模式”属性的“音频”来完成(您必须将该属性添加到您的 plist 文件中)

现在,使用AVAudioPlayer,即使设备处于静音状态,也可以通过设置音频会话类别来播放声音,如下所示:

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

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您必须意识到,即使您的应用被终止,本地通知也会被触发。这使我得出结论,可能无法做到这一点。 但是你可以这样尝试:

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

    就在您激活音频会话之前。

    【讨论】:

    • 感谢万尼亚的回复。但是我们没有使用 AVAudioPlayer 播放通知,本地通知是从操作系统发生的。如果您认为这可行,您可以提供一些示例代码来提供帮助吗?
    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    相关资源
    最近更新 更多