带有自定义声音的UILocalNotification仅适用于iOS 6.1和iOS 7.1,而不适用于iOS 7.0

带有自定义声音的UILocalNotification仅适用于iOS 6.1和iOS 7.1,而不适用于iOS 7.0,ios,objective-c,ios7,uilocalnotification,Ios,Objective C,Ios7,Uilocalnotification,我开发了一个应用程序,用户可以从几个定制的通知声音中进行选择。当应用程序不在前台时,这些通知将通过简单的AVPlayer或UILocalNotification显示在应用程序中。当然,前台警报总是有效的。后台警报在我的一个测试人员的iPhone4S上不起作用 起初我以为是他的手机配置问题,但我们什么也找不到。当我开始深入研究这个问题时,我发现他运行的是iOS 7.0.4。我尝试在运行iOS 7而不是iOS 7.1的模拟器上运行该应用程序,但也没有任何带有UILocalNotification的声

我开发了一个应用程序,用户可以从几个定制的通知声音中进行选择。当应用程序不在前台时,这些通知将通过简单的AVPlayer或UILocalNotification显示在应用程序中。当然,前台警报总是有效的。后台警报在我的一个测试人员的iPhone4S上不起作用

起初我以为是他的手机配置问题,但我们什么也找不到。当我开始深入研究这个问题时,我发现他运行的是iOS 7.0.4。我尝试在运行iOS 7而不是iOS 7.1的模拟器上运行该应用程序,但也没有任何带有UILocalNotification的声音。当我在模拟器中尝试iOS 6.1时,再也没有出现任何问题。我运行iOS 7.1的硬件设备也没有重现该问题。无论是什么版本,信息和徽标总是显示出来,只是缺少了声音

然后我想问题可能与它没有在应用程序的前台线程中运行有关。performSelectorOnMainThread:withObject:waitUntilDone:也不起作用

以下是相关代码:

+ (void)minimizedAppAlarm:(Settings *)settings;
{
    UILocalNotification* notification = [[UILocalNotification alloc] init];
    notification.alertBody = NSLocalizedString(@"WAKE_UP", @"Wake up!");
    if (settings.playSound)
    {
        notification.soundName = @"somefile.mp3";
    }

    [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}

这似乎与使用以下呼叫设置徽章号码有关:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:number];
目前我不确定到底发生了什么,但当应用程序最小化时,我会从十倒计时到零,也许会在它阻止报警之前将徽章设置为零

我一直在运行我的应用程序,没有这些代码行,它在每个版本中都会触发后台通知。请注意,我一直在模拟器的较低版本上测试这个应用程序,在注意到任何更改之前,我确实需要执行以下操作

从主屏幕中删除应用程序 重置内容和设置 由于模拟器没有任何通知设置,我想如果我使用setApplicationBadgeNumber,7.0会将通知设置为静音。目前,我可以继续完成应用程序而不使用倒计时功能,但我将继续测试,因此我确信我只需要禁用iOS 7.0,或者如果我启动一个直接更改徽章编号的应用程序版本,则大多数版本上都存在问题