一段时间以来,我一直在努力解决似乎应该“正常工作”的事情。我通过 Urban Airship 设置了推送通知,除了在后台更新徽章外,一切正常。据我所知,只要徽章在有效负载中设置为整数,如果应用程序不在前台,它应该自行处理。
如果我在应用程序处于前台时捕获徽章更新,我可以正确设置它,但这不是我想在我的应用程序中使用徽章的原因。
这是我的设置didFinishLaunchingWithOptions:
UAConfig *config = [UAConfig defaultConfig];
// You can also programatically override the plist values:
// config.developmentAppKey = @"YourKey";
// etc.
// Call takeOff (which creates the UAirship singleton)
[UAirship takeOff:config];
[UAPush shared].notificationTypes = (UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeNewsstandContentAvailability);
[[UAPush shared] setPushEnabled:YES];
[[UAPush shared] setAutobadgeEnabled:YES];
[self performSelector:@selector(resetUABadge:)];
[[UAPush shared] handleNotification:[launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]
applicationState:application.applicationState];
应用程序启动时,resetUABadge 调用只是将所有内容设置回 0。无论 performSelector 是否存在,此问题都存在。
我不确定我是否缺少某些配置或什么,但推送通知的所有其他部分在应用程序后台/关闭(警报,声音)时工作,但徽章根本不会更新。