是否可以从我的应用程序控制本地通知的音量?

时间:2013-04-07 19:03:04

标签: objective-c cocoa-touch uilocalnotification

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

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

2 个答案:

答案 0 :(得分:3)

很遗憾没有(公共)API可让您控制通知音量。

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

因此,您有两种选择:

  1. 告诉您的用户必须全局调整所有人的音量 通知或将手机置于静音模式。
  2. 自己处理通知并播放声音 直接从您的应用程序(要实现这一点,您将需要保持您的应用程序运行 背景)。
  3. 以下是后一种解决方案的摘录:

    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_URLYOUR_DESIRED_VOLUME替换为适当的值。

    还值得一提的是这个讨论:
    Sounds in UILocalNotification louder than AVAudioPlayer at max volume

答案 1 :(得分:3)

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

这种方式与使用选项选择闹钟声音相同。但只是不断变化。