2012-07-26 11 views
39

Używam tego kodu:NSUserNotification nie pokazuje przycisk działania

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    // Insert code here to initialize your application 
    NSUserNotification *notification = [[NSUserNotification alloc] init]; 
    [notification setTitle: @"Title"]; 
    [notification setSubtitle: @"Subtitle"]; 
    [notification setInformativeText: @"Informative Text"]; 

    [notification setHasActionButton: YES]; 
    [notification setActionButtonTitle: @"Action Button"]; 
    [notification setOtherButtonTitle: @"Other Button"]; 

    [notification setSoundName: NSUserNotificationDefaultSoundName]; 

    [notification setDeliveryDate: [NSDate dateWithTimeIntervalSinceNow: 10]]; 
    [[NSUserNotificationCenter defaultUserNotificationCenter] scheduleNotification: notification]; 
} 

A ja dostaję, bez wątpienia,

enter image description here

Nie przycisk akcji, lub inny przycisk.

Odpowiedz

26

I oto była odpowiedź.

Jeszcze raz dziękuję #macdev na freenode.

enter image description here

Wybór musi być "Alerty" mieć przyciski.

+1

Jak dostałeś się do tego ekranu? – Dorian

48

Jak już wspomniano w poprzedniej odpowiedzi, typ powiadomienia musi być ustawiony, aby ostrzegać o wyświetleniu przycisku czynności. Jeśli chcesz ustawić domyślny styl powiadamiania swojej aplikacji, aby ostrzec, musisz zdefiniować klucz NSUserNotificationAlertStyle w info.plist z wartością alert.

Zobacz Apple info.plist keys reference więcej szczegółów:

NSUserNotificationAlertStyle Określa, czy styl Zawiadomienie powinno być banery, alarmy lub brak. Wartością domyślną są banery, co jest zalecanym stylem.

+1

Czy wiesz, że coś takiego jest dostępne na iOS? –

+0

Nie wierzę, że można to skonfigurować dla UILocalNotifications w iOS przy użyciu bieżących interfejsów API. –

+5

Aplikacja musi być podpisana, aby umożliwić dostęp do przycisków. – RichS

17

W przeciwieństwie do innych odpowiedzi, możemy użyć iTunes - nadal wyświetla się przycisk "Pomiń", nawet jeśli ustawimy styl alertu na banery. Kontynuowałem więc wyszukiwanie i znalazłem this github repo gdzie Indragie Karunaratne dostarczają pewnych użytecznych dodatkowych właściwości w prywatnych nagłówkach NSUserNotification. można sprawdzić pełną listę właściwości w NSUserNotification_Private.h pliku , ale rzeczywista do pokazywania przycisków w notyfikacji banner stylu jest

@property BOOL _showsButtons; // @dynamic _showsButtons; 

więc można po prostu dodać tę linię do Ciebie kod

[notification setValue:@YES forKey:@"_showsButtons"]; 

, a przycisk powiadomienia zostanie uniezależniony od stylu alertu.

+0

Niestety, to nie działa w El Capitan. ( –

+2

działa dla mnie w El Capitan .. – Dorian

+0

jak dodać selektor dla przycisku w powiadomieniu? –

1

magiczne polecenie na podstawie odpowiedzi partyzant jest:

notification.set_showsButtons_(True) 

cha-ching :)

+0

Działa doskonale w PyObjC – kgutwin