Objective c 推送通知标记计数未更新
这是我的苹果推送通知代码,当应用程序运行并发出通知时,我会增加徽章数量,并在单击应用程序图标上的“主页”按钮时获得所需结果。但当我不运行我的应用程序时,通知来了,它不会自动增加徽章计数,并且只保留为1。值1来自服务器。谁能指出我哪里做错了。提前谢谢Objective c 推送通知标记计数未更新,objective-c,ios,ios4,apple-push-notifications,Objective C,Ios,Ios4,Apple Push Notifications,这是我的苹果推送通知代码,当应用程序运行并发出通知时,我会增加徽章数量,并在单击应用程序图标上的“主页”按钮时获得所需结果。但当我不运行我的应用程序时,通知来了,它不会自动增加徽章计数,并且只保留为1。值1来自服务器。谁能指出我哪里做错了。提前谢谢 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { userMe
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
userMessageCounter = @"0";
postType = 0;
joinedStreamChecker = 0;
OwnerValue = 0;
pushValue = 1;
badgeValue =0;
// Override point for customization after application launch.
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
[[UIApplication sharedApplication]
registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound)];
//[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
//(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
// [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeNewsstandContentAvailability | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)];
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone)
{
pushValue = 0;
NSLog(@"notification off");
}
return YES;
}
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken1 {
NSString *str = [NSString
stringWithFormat:@"%@",deviceToken1];
NSLog(@"%@",str);
self.deviceToken = [NSString stringWithFormat:@"%@",str];
NSLog(@"dev --- %@",self.deviceToken);
self.deviceToken = [self.deviceToken stringByReplacingOccurrencesOfString:@"<" withString:@""];
self.deviceToken = [self.deviceToken stringByReplacingOccurrencesOfString:@" " withString:@""];
self.deviceToken = [self.deviceToken stringByReplacingOccurrencesOfString:@">" withString:@""];
NSLog(@"dev --- %@",self.deviceToken);
}
- (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);
badgeValue= [alertValue intValue];
[UIApplication sharedApplication].applicationIconBadgeNumber += badgeValue;
//badgeValue = [UIApplication sharedApplication].applicationIconBadgeNumber;
//[UIApplication sharedApplication].applicationIconBadgeNumber=0;
//[[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeValue];
}
苹果不会为你记录你的数据。它只显示你告诉它的内容。因此,您必须将计数存储在服务器上,然后在发送警报时告诉苹果新的徽章号码。通常情况下,这是通过在启动应用程序phone home时通知服务器将未读通知数归零来实现的。可能重复的问题我没有得到答案,这就是为什么我在这里发布了这个问题。这不是它的工作原理。编辑原始问题或添加悬赏。在原来的一个你说它正在工作,无论如何?好的,我会从下次开始做谢谢。这是完全相同的问题的解决方案,我的服务器如何知道这个人读过或没有读到该邮件?这是你要弄清楚的。最简单的方法是在打开应用程序时将这两个值都设为0。我通过将代码放入应用程序中来实现这一点,并完成了[UIApplication sharedApplication]的启动;您还必须告诉服务器重置服务器值,以便下次通知从1开始。