2012-09-04 10 views
7

Hat es jemand geschafft, einen NSUserNotification soundName mit einem benutzerdefinierten Sound zu arbeiten? Ich versuchte mit aif und caf formatieren 44100KHz 16bit 2 Sekunden der Dauer. Die Benachrichtigung wird zur richtigen Zeit mit dem richtigen Titel und Text angezeigt, aber der Standardton wird anstelle meines benutzerdefinierten Sounds wiedergegeben.NSUserNotification mit benutzerdefiniertem SoundName

Die Sounddateien werden im Anwendungspaket korrekt kopiert. Wenn ich versuche, diese Geräusche arbeiten ok:

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

Aber wenn ich den gleichen Ton in meiner Anmeldung verwenden, wird die Standard-Benachrichtigung Sound gespielt:

- (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]; 
} 

Ich habe versucht, mit und ohne Verlängerung, aber ohne Erfolg.

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

keines dieser Arbeit.

Meine Anwendung ist nicht signiert und nicht sandboxed, aber ich denke nicht, dass dies für Benutzerbenachrichtigungen notwendig ist, und abgesehen von dem Soundproblem funktionieren die Benachrichtigungen großartig.

+0

Haben Sie das herausgefunden? Ich habe das gleiche Problem. In den Apple Dev Forms gefragt und wurde gebeten, einen Fehlerbericht zu erstellen, um sie dazu zu bringen, "hinein zu schauen". Ich hoffe wirklich, dass es einen Weg gibt, das herauszufinden, da ich nicht warten kann und hoffe, dass Apple es genauer betrachtet ... – kdbdallas

+0

Wie es oft passiert, hat sich das Problem nach einiger Zeit von selbst gelöst. Vielleicht gab es eine Art Caching-System. –

+1

Das gleiche hier im Juli 2014 zu bekommen. – BergQuester

Antwort

8

Es scheint mir, als ob dieses Problem die Groß- und Kleinschreibung betrifft. Die Verwendung von notification.soundName = @"Morse"; funktioniert perfekt für mich. Wie Sie in den NSSound documentation für soundNamed Die Suchordner für Sounds sind, um zu sehen:

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

Wenn man sich in den letzten ein, was wahrscheinlich ist, wo Sie versuchen, aus zu ziehen, da sie sind die Sounds in Systemeinstellungen können Sie ihre Namen

Sound names

Also den Fall der Datei, halten Sie sehen und die Erweiterung weglassen und es sollte wie erwartet funktionieren.

0

Wenn Sie mehrere Versionen Ihrer App haben, sucht das binäre Benachrichtigungscenter möglicherweise nach der falschen Binärdatei für Ihre Audiodateien.

Wenn Sie sicherstellen, dass alle alten Kopien der Binärdatei gelöscht werden, sollte das Problem behoben sein.

aus dem Apple Dev Forum: https://devforums.apple.com/message/708511

Dies kann passieren, wenn Sie mehrere Version Ihrer App binären haben im Umlauf. NotificationCenter bestraft nur einen von ihnen. Wenn es der ohne Ton ist, dann wird es nicht funktionieren.