ios7.1:推送通知标记更新问题

ios7.1:推送通知标记更新问题,ios,push-notification,ios7.1,Ios,Push Notification,Ios7.1,我在当前的一个项目中设置了推送通知。我已遵循推送通知所需的所有说明。在[tag:ios7]中工作正常,但在7.1中,当我的应用程序处于后台模式时,我在badge update中遇到了问题 我的代码如下:- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [[UIApplication sharedApplication]

我在当前的一个项目中设置了推送通知。我已遵循推送通知所需的所有说明。在[tag:ios7]中工作正常,但在
7.1
中,当我的应用程序处于后台模式时,我在badge update中遇到了问题

我的代码如下:-

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

}


- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
    NSLog(@"Failed to get token, error: %@", error);
}


- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    NSString *str = [NSString
                     stringWithFormat:@"%@",deviceToken];
    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);
}
首先,当我的应用程序返回后台时,
didReceiveEmotonification
没有被调用,所以我做了一些搜索并放入:-

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
并将背景模式设置为:-

当我的设备与xcode连接并且我运行应用程序测试推送通知时,但当我拔下设备(iOS7.1)时,所有这些都可以正常工作。然后推送通知到达,但标记未更新。否则,该徽章将在后台更新,并调用所有方法。但同样的事情是,我在另一台设备上测试这个应用程序时,使用的是
iOS7
,运行良好

我不明白我的错误在哪里,我在代码中哪里做错了。是否存在任何错误或我认为不存在的问题,请帮助我解决此问题。

尝试:

int badge = [UIApplication sharedApplication].applicationIconBadgeNumber;
[UIApplication sharedApplication].applicationIconBadgeNumber = 0; // try 0 or -1
[UIApplication sharedApplication].applicationIconBadgeNumber = badge + [[[userInfo objectForKey:@"aps"] objectForKey: @"badge"] intValue];

我最近有这个问题,我必须做一些演员:

NSDictionary *apsData = [userInfo objectForKey:@"aps"];
NSInteger badgeNumber = (NSInteger)[[apsData  objectForKey: @"badge"] intValue];

[UIApplication sharedApplication].applicationIconBadgeNumber = 
            [UIApplication sharedApplication].applicationIconBadgeNumber + badgeNumber;
我使用
PHP
将数据发送到苹果服务器,所以我也在那里做了一个转换:

$playload = array('aps'=>array(
                         'message'=> 'some message',
                         'badge'=> (int)$badge 
                 )
);

您的服务器是否在
apn
中发送徽章?正如我在上面的问题中提到的,我正在从我这边设置徽章。但是您正在使用远程通知。。。管理徽章的是服务器端,而不是设备上的您。请注意,语法可能有点不正确,但您得到了一点我也这么做,但这个问题只在iphone4和4s中发现,在iphone5和5s中运行良好。您将其命名为
NSInteger
?是iPhone机型还是iOS版本造成了差异
$playload = array('aps'=>array(
                         'message'=> 'some message',
                         'badge'=> (int)$badge 
                 )
);