2012-03-16 27 views
2

これはAppleのプッシュ通知のコードです。アプリケーションが実行されているときに、アプリのアイコンのホームボタンをクリックすると、バッジ数が増えて希望の結果が得られます。私のアプリケーションと通知を実行していないときに、それは自動増分バッジカウントをしていないと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]; 


} 
+0

[Push Notification Badges Coming]の複製が可能です。(http://stackoverflow.com/questions/9734451/push-notification-badges-not-coming) – jrturton

+0

私はここで質問を投稿した理由を知りませんでした。 –

+1

それはそれがどのように動作するかではありません。元の質問を編集するか、賞金を追加してください。とにかくそれが働いていると言う元のものでは? – jrturton

答えて

4

Appleはお客様のデータを追跡しません。それはあなたがそれを伝えるものだけを示しています。したがって、あなたはあなたのサーバーにカウントを格納してから、警告を送信するときにappleに新しいバッジ番号を伝えなければなりません。通常、これは、起動時にアプリのホームをホームにして、サーバに未読通知の数をゼロにするよう通知することによって行われます。

+0

私のサーバーは、その人がそのメッセージを読んだり読んだりしていることを知ることができますか? –

+2

これはあなたが把握するためのものです。簡単な方法は、アプリを開くときに両方とも0にすることです。 – coneybeare

+0

iamは、アプリケーションにコードを挿入することで、[UIApplication sharedApplication] .applicationIconBadgeNumber = 0; –

関連する問題