• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

objective-c - 推送通知角标(Badge)计数未更新

[复制链接]
菜鸟教程小白 发表于 2022-12-12 19:43:43 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

这是我的苹果推送通知代码,当应用程序正在运行并且通知到来时,当我在应用程序图标上单击主页按钮时,我正在增加角标(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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap