我有推送通知,其中包含徽章,声音和提醒功能。 如果程序没有运行 - 一切都很好。但是当程序 运行时 - 我需要阻止所有不是由程序生成的声音,警报和徽章,因为我有一个与我的服务器的实时连接并在APNS向我发送通知之前接收所有事件mac设备。 我找到了隐藏警报的方法,但我找不到任何方法来接管dockTile的图标徽章。 如果我这样做:
-(void)application:(NSApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[[NSApp dockTile] setBadgeLabel:nil];
}
没有任何事情发生,APNS设置的徽章仍然存在。我在badgeLabel或dockTileNumber属性上尝试了KVO,如here所示,但observeValueForKeyPath:ofObject:change:context:永远不会被调用。 APNS如何设置badgeLabel?也许我做错了什么并且在程序运行时有正确的方法来禁用警报/声音/徽章?
答案 0 :(得分:1)
由于我没有找到任何正确的解决方案,我将接受我的解决方法:
-(void)application:(NSApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[application dockTile].badgeLabel = @" ";
[application dockTile].badgeLabel = @"";
}
可能会通过NSUserNotificationCenterDelegate
委托方法userNotificationCenter:shouldPresentNotification:
禁用提醒:
-(BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification
{
//apple push notification alert will contain userInfo with aps payload, so disable here
if (notification.userInfo[@"aps"])
return NO;
return YES;
}
我还没有找到任何禁用声音的方法。