Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 推送通知标记计数未更新_Objective C_Ios_Ios4_Apple Push Notifications - Fatal编程技术网

Objective c 推送通知标记计数未更新

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

这是我的苹果推送通知代码,当应用程序运行并发出通知时,我会增加徽章数量,并在单击应用程序图标上的“主页”按钮时获得所需结果。但当我不运行我的应用程序时,通知来了,它不会自动增加徽章计数,并且只保留为1。值1来自服务器。谁能指出我哪里做错了。提前谢谢

- (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开始。