【发布时间】:2014-03-24 05:23:19
【问题描述】:
我在我的应用程序中为 APNS 使用 Urbanairship,一切顺利,但当我的应用程序未运行时,应用程序徽章编号未显示,但是当应用程序处于活动状态并收到推送时,徽章编号显示在应用程序图标上.
我的代码如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UAConfig *config = [UAConfig defaultConfig];
[UAirship takeOff:config];
// Request a custom set of notification types
[UAPush shared].notificationTypes = (UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound |
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeNewsstandContentAvailability);
return YES;
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSString *str = [NSString stringWithFormat: @"Error: %@", err];
NSLog(@"%@",str);
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSLog(@"Received notification: %@", userInfo);
//[self addMessageFromRemoteNotification:userInfo];
NSString* alertValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"];
NSLog(@"my message-- %@",alertValue);
int badgeValue= [alertValue intValue];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeValue];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
application.applicationIconBadgeNumber = 0;
}
编辑:我也试过 -
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
NSInteger badgeNumber = [application applicationIconBadgeNumber];
[application setApplicationIconBadgeNumber:++badgeNumber];
}
但仍然没有运气,我做错了什么?
【问题讨论】:
-
您检查您的服务器端是否正确设置了徽章值。?什么是日志打印
[alertValue intValue]? -
这是日志 - 收到通知:{ "_" = "eHa-4LMVEeOdIJDiugJkgA"; aps = { alert = "这是来自 MAdept 的测试推送";徽章 = 21; }; } 和 [alertValue intValue] 是 21。
-
尝试使用 put static number
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];这是怎么回事..? -
仍然没有运气,我认为问题不在这里,因为它显示在应用程序运行时收到推送并且我按下主页按钮而不点击推送警报。
-
除了你的问题,确保当你这样做
application.applicationIconBadgeNumber = 0;服务器也会重置计数。
标签: ios iphone objective-c apple-push-notifications urbanairship.com