2012-09-04 36 views
7

有没有人设法让NSUserNotification声音名称与自定义声音一起工作? 我试着用aif和caf格式44100KHz 16位2秒的时间。通知显示在正确的时间,正确的标题和文本,但默认声音播放,而不是我的自定义声音。NSUserNotification与自定义声音名称

声音文件已正确复制到应用程序包中。 如果我试试这个声音正常工作:

NSSound* sound = [NSSound soundNamed:@"morse.aif"]; 
[sound play]; 

但是,当我用同样的声音在我的通知,默认的通知声音得到出场:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Insert code here to initialize your application 
    NSUserNotification* notification = [[NSUserNotification alloc]init]; 
    notification.title = @"Titolo"; 
    notification.deliveryDate = [NSDate dateWithTimeIntervalSinceNow:10]; 
    notification.soundName = @"morse.aif"; 
    [[NSUserNotificationCenter defaultUserNotificationCenter]scheduleNotification:notification]; 
} 

我试着用和不用的扩展,但没有成功。

notification.soundName = @"morse.aif"; 
notification.soundName = @"morse2.caf"; 
notification.soundName = @"morse";  

没有这些工作。

我的应用程序没有签名,也没有沙箱,但我认为这不是用户通知所必需的,除了声音问题以外,通知的工作效果很好。

+0

你知道了吗?我有同样的问题。在Apple Dev Forms中被问及被告知要提交一份错误报告,让他们“看着它”。真的希望有一种方法可以解决这个问题,因为我不能等待,并希望苹果公司研究它...... – kdbdallas

+0

经常发生,这个问题在一段时间后自行整理。也许有某种缓存系统存在。 –

+1

2014年7月在这里获得同样的东西。 – BergQuester

回答

8

在我看来,这个问题是区分大小写的。使用notification.soundName = @"Morse";完美适合我。正如你可以在NSSound documentationsoundNamed对声音的搜索文件夹看到的是,为了:

~/Library/Sounds 
/Library/Sounds 
/Network/Library/Sounds 
/System/Library/Sounds 

如果在最后一个,这可能是在那里你试图从因为他们是拉看声音系统偏好设置,你可以看到他们的名字

Sound names

因此,保持文件的情况下,和省略的延伸和预期它应该工作。

0

如果您有多个版本的应用程序二进制通知中心可能正在为您的声音文件搜索错误的二进制文件。

如果您确定删除该二进制文件的旧版本,应该修复该问题。

从苹果开发论坛:https://devforums.apple.com/message/708511

,如果你有你的应用程序二进制文件的多个版本漂浮可能发生这种情况。通知中心只罚款其中一个。如果它是没有声音的那个,那么它将不起作用。