web-dev-qa-db-ja.com

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

アクションボタンやその他のボタンはありません。

40
Patrick Perini

そして、ここに答えがありました。

Freenodeの#macdevに改めて感謝します。

enter image description here

ボタンを表示するには、選択範囲を「アラート」にする必要があります。

26
Patrick Perini

前の回答ですでに述べたように、通知タイプは、アクションボタンが表示されることを警告するように設定する必要があります。アプリのデフォルトの通知スタイルをアラートに設定する場合は、info.plistでキーNSUserNotificationAlertStyleを値alertで定義する必要があります。

詳細については、Appleの info.plistキーリファレンス を参照してください。

NSUserNotificationAlertStyle通知スタイルをbannersalerts、またはnoneのいずれにするかを指定します。デフォルト値はbannersで、これが推奨されるスタイルです。

49
kurthardin.dev

他の回答の反対の例として、iTunesを使用できます。バナーにアラートスタイルを設定しても、「スキップ」ボタンが表示されます。だから私は検索を続け、 this github repo where Indragie Karunaratne NSUserNotificationプライベートヘッダーにいくつかの便利な追加プロパティを提供することを発見しました。 NSUserNotification_Private.hファイルでプロパティの完全なリストを確認できますが、実際にはバナー通知スタイルでボタンを表示します。

@property BOOL _showsButtons; // @dynamic _showsButtons;

この行をコードに追加するだけです

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

通知アクションボタンはアラートスタイルに依存しなくなります。

18
PARTISAN

pARTISANの応答に基づく魔法のコマンドは次のとおりです。

notification.set_showsButtons_(True)

チャチン:)

1
amohr