OStack程序员社区-中国程序员成长平台

标题: objective-c - 推送通知角标(Badge)计数未更新 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 19:43
标题: objective-c - 推送通知角标(Badge)计数未更新

这是我的苹果推送通知代码,当应用程序正在运行并且通知到来时,当我在应用程序图标上单击主页按钮时,我正在增加角标(Badge)计数并获得所需的结果。但是当我没有运行我的应用程序并且通知来时,它不会自动增加角标(Badge)计数并且仅保留为 1。值 1 来自服务器。任何人都可以指出我做错了什么。提前致谢。

- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)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] registerForRemoteNotificationTypesUIRemoteNotificationTypeNewsstandContentAvailability | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)];

    UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
    if (types == UIRemoteNotificationTypeNone) 
    {
        pushValue = 0;


        NSLog(@"notification off");
    }

    return YES;
}


- (void)applicationUIApplication *)app didRegisterForRemoteNotificationsWithDeviceTokenNSData *)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)applicationUIApplication *)app didFailToRegisterForRemoteNotificationsWithErrorNSError *)err { 

    NSString *str = [NSString stringWithFormat: @"Error: %@", err];
    NSLog(@"%@",str);    

}

- (void)applicationUIApplication *)application didReceiveRemoteNotificationNSDictionary *)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];


}



Best Answer-推荐答案


Apple 不会为您跟踪您的数据。它只显示你告诉它的内容。因此,您必须将计数存储在服务器上,然后在发送警报时告诉苹果新的角标(Badge)编号。通常这是通过在启动时让应用程序电话回家告诉您的服务器将未读通知计数清零来完成的。

关于objective-c - 推送通知角标(Badge)计数未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9742558/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4