当我收到PN时,我正在尝试更新我的应用程序的徽章图标(已关闭)。
我已尝试将代码添加到我的应用关闭时无效。它在应用程序在前台运行时有效。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
//Accept push notification when app is not open
if (remoteNotif) {
[application setApplicationIconBadgeNumber:100];
return YES;
}
}
-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
[[UIApplication sharedApplication] setApplicationIconBadgeNumber: 30];
}
答案 0 :(得分:3)
如果您的应用已关闭或在后台,则推送通知不会将其唤醒。您需要执行此服务器端并在通知有效负载中包含要在图标上看到的号码:
{
"aps" : {
"alert" : "Your notification message",
"badge" : 1
}
}
上的Apple文档
答案 1 :(得分:0)
applicationIconBadgeNumber = 1
或0
中didFinishLaunchingWithOptions:
方法中的,如下方...
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
查看UILocalNotification
的另一个答案来自此链接ios-badge-number-live-update
答案 2 :(得分:0)
由于推送通知由iOS而非您的应用处理,因此您无法在收到推送通知时更改应用徽章。
但您可以在推送通知的有效负载中发送徽章编号,但您必须执行计算服务器端。
有效载荷可能如下所示:
{
"aps" : {
"alert" : "You got your emails.",
"badge" : 1
}
}
现在,应用程序应用程序徽章图标将显示1。