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

Objective c 是否可以从我的应用程序控制本地通知的数量?,objective-c,cocoa-touch,uilocalnotification,Objective C,Cocoa Touch,Uilocalnotification,我有一个应用程序,使用重复间隔定期通知我的用户。现在,我的应用程序用户要求我允许他们以不同于其他人的方式控制通知量。(大多低于设备的当前水平) 我想知道是否有办法做到这一点 不幸的是,没有(公共)API可以控制通知音量 UILocalNotification弹出窗口和声音都由系统进程管理。该过程使用用户的音量首选项,在播放声音之前还检查设备是否处于静音模式等。这在某种程度上是连贯的 因此,您有两个选择: audioPlayer = [[AVAudioPlayer alloc] initWithC

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


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

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

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

因此,您有两个选择:

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:YOUR_SOUND_URL error:&error];
[audioPlayer setVolume:YOUR_DESIRED_VOLUME];
if (audioPlayer == nil)
{
    NSLog([error description]);             
}
else 
{
    [audioPlayer play];
}
  • 告诉您的用户必须全局调整所有用户的音量 通知或将手机置于静音模式
  • 自己处理通知并播放声音 从你的应用程序开始(要实现这一点,你需要让你的应用程序在 背景)
  • 下面是后一种解决方案的一个片段:

    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:YOUR_SOUND_URL error:&error];
    [audioPlayer setVolume:YOUR_DESIRED_VOLUME];
    if (audioPlayer == nil)
    {
        NSLog([error description]);             
    }
    else 
    {
        [audioPlayer play];
    }
    
    注意:用适当的值替换
    您的声音\u URL
    您的所需音量


    同样值得一提的是以下讨论:

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


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

    它没有显示用户如何能够根据需要调整音量系统不是调整音量以遵守声音限制(保护)并保证用户体验均匀吗?很好!这就是我的想法,但是,用户是否能够在
    UILocalNotification.soundName=@“xxx.wav”中选择声音文件?@user1949873我不明白你的问题。用户不选择声音文件。他在你的应用程序中选择了一个级别,你通过编程设置soundName。我知道他会选择该级别,这会导致代码指向不同音量的不同声音文件。如果你能给我看一下这个代码,我会把它标记为正确答案。。。这只是
    notif.soundName
    本身的一个if条件,还是在
    soundName
    中?@user1949873实际上,您让用户选择一个级别。然后,选择与级别匹配的声音名称,并使用
    AVAudioPlayer
    播放。感谢您编写如此详细的答案。但我唯一不能理解的是,即使应用程序被用户明确杀死,你打算如何在后台保持应用程序的活动状态?