4

我有一个应用程序使用重复间隔定期通知我的用户。现在我的应用用户要求我允许他们以不同于其他人的方式控制通知的音量。(大多低于设备的当前级别)。

我想知道是否有办法做到这一点?

4

2 回答 2

3

不幸的是,没有(公共)API 可以让您控制通知音量。

弹出窗口和声音都由UILocalNotification系统进程管理。该过程使用用户的音量偏好,它还在播放声音之前检查设备是否处于静音模式等。这在某种程度上是连贯的。

所以,你有两个选择:

  1. 告诉您的用户必须全局调整所有通知的音量或将手机置于静音模式。
  2. 自己处理通知并直接从您的应用程序中播放声音(为此,您需要让您的应用程序在后台运行)。

这是后一种解决方案的片段:

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:YOUR_SOUND_URL error:&error];
[audioPlayer setVolume:YOUR_DESIRED_VOLUME];
if (audioPlayer == nil)
{
    NSLog([error description]);             
}
else 
{
    [audioPlayer play];
}

注意:将YOUR_SOUND_URL和替换YOUR_DESIRED_VOLUME为适当的值。

另外值得一提的是这个讨论:
UILocalNotification 中的声音比最大音量时的 AVAudioPlayer 响亮

于 2013-04-07T19:13:57.197 回答
3

为不同的音量使用不同的声音文件。例如五个文件alarm1.aiff、alarm2.aiff ... alarm5.aiff。用户在应用程序的首选项中选择一个音量(1 到 5)级别,然后通知将使用相应的文件。

这种方式与使用选项选择警报声音相同。但只是音量不同。

于 2013-04-07T19:16:47.700 回答