Подтвердить что ты не робот

NSUserNotification не показывает кнопку действия

Я использую этот код:

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

И я получаю непременно

enter image description here

Нет кнопки действий или другой кнопки.

4b9b3361

Ответ 1

И вот был ответ.

Еще раз спасибо #macdev на freenode.

enter image description here

Выбор должен быть "Оповещения", чтобы иметь кнопки.

Ответ 2

Как уже указывалось в предыдущем ответе, тип уведомления должен быть настроен на предупреждение для кнопки действия, которая будет показана. Если вы хотите настроить стиль уведомлений по умолчанию для своего приложения, вам необходимо определить ключ NSUserNotificationAlertStyle в файле info.plist со значением alert.

Подробнее см. ссылку Apple info.plist:

NSUserNotificationAlertStyle Указывает, должен ли стиль уведомления быть баннеров, предупреждений или none. Значением по умолчанию являются баннеры, которые являются рекомендуемым стилем.

Ответ 3

В качестве противоположного примера для других ответов мы можем использовать iTunes - он все еще показывает кнопку "Пропустить", даже когда мы настраиваем стиль оповещения на баннеры. Поэтому я продолжил поиск и нашел это github repo, где Indragie Karunaratne предоставляет некоторые полезные дополнительные свойства в частных заголовках NSUserNotification. Вы можете проверить полный список свойств в файле NSUserNotification_Private.h, но фактическая для отображения кнопок в стиле уведомления баннера

@property BOOL _showsButtons; // @dynamic _showsButtons;

чтобы вы могли просто добавить эту строку к вашему коду

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

и ваша кнопка уведомления будет независима от стиля предупреждения.

Ответ 4

магическая команда, основанная на ответе PARTISAN:

notification.set_showsButtons_(True)

cha -ching:)