Добавить значок Push-уведомления в UIButton [закрыто]


Я хочу добавить значок значка к UIButton в моем приложении, когда будет отправлено уведомление, и я не совсем уверен, как этого добиться. Он должен был бы соответствовать значку на значке трамплина, и как значок трамплина, так и значок на UIButton должны были бы исчезнуть, когда этот UIButton нажат в приложении.

Обновление:

У меня есть значок, чтобы появиться, но когда я открываю приложение значок сбрасывается обратно в ноль, когда приложение открывается, так что я в конечном итоге не вижу значок на кнопке. Я знаю, что значок работает, потому что я проверил его, сделав следующее:

[[UIApplication sharedApplication]setApplicationIconBadgeNumber:1];

Вот код значка:

NSString *badgeNumber = [NSString stringWithFormat:@"%d", [[UIApplication sharedApplication]applicationIconBadgeNumber]];

    JSCustomBadge *actionAlertBadge = [JSCustomBadge customBadgeWithString:badgeNumber];
    actionAlertBadge.frame = CGRectMake(188, 6, 30, 30);

    [self.view addSubview:actionAlertBadge];

    if ([badgeNumber isEqual:@"0"])
    {
        actionAlertBadge.hidden = YES;
    }

Как я могу сделать так, чтобы значок не сбрасывался при открытии приложения, а сбрасывался при нажатии этой кнопки в приложении?

У меня это работает, но все еще есть одна проблема. Если приложение не работает в фоновом режиме, значок отображается на значке трамплина и на UIButton. Когда кнопка нажата, открывается новый вид и значок сброс таким образом, когда пользователь возвращается к экрану с UIButton, значок больше не существует. Проблема в том, что когда приложение работает в фоновом режиме, значок не отображается на кнопке, а отображается на трамплине.

- (IBAction)gotoActionAlerts
{
    ActionAlertsViewController *actionAlerts = [[ActionAlertsViewController alloc]initWithStyle:UITableViewStylePlain];
    WebViewController *wvc = [[WebViewController alloc]init];
    [actionAlerts setWebViewController:wvc];
    actionAlerts.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [[UAPush shared] resetBadge];
    actionAlertBadge.hidden = YES;
    [self.navigationController pushViewController:actionAlerts animated:YES];
}  

In viewDidLoad

badgeNumber = [NSString stringWithFormat:@"%d", [[UIApplication sharedApplication]applicationIconBadgeNumber]];

    actionAlertBadge = [JSCustomBadge customBadgeWithString:badgeNumber];
    actionAlertBadge.frame = CGRectMake(83, 6, 30, 30);

    [self.view addSubview:actionAlertBadge];

    if ([badgeNumber isEqualToString:@"0"])
    {
       actionAlertBadge.hidden = YES;
    }
1 3

1 ответ:

Для значка на UIButton вы можете использовать некоторую пользовательскую библиотеку, доступную здесь,

И чтобы установить / получить значок приложения, вы можете использовать метод,

[UIApplication sharedApplication]setApplicationIconBadgeNumber:1]

EDIT

The issue I'm having is when the app is running in the background, the badge doesn't show on the button, but shows on the springboard.

Если ваше приложение находится в фоновом режиме значок будет отображаться на значке приложения, если вы используете push-уведомление, чем значение значка, установленное из полезной нагрузки,

{"aps": {"alert":"content test","badge":1,"sound":"default"}}

Или вы используете значение значка localnotification, установленное в свойстве applicationIconBadgeNumber UILocalNotification, т. е.

 notification.applicationIconBadgeNumber=1;

Итак, если ваше приложение в фоновом режиме у вас есть два метода делегирования для различных уведомлений,

Поэтому реализуйте методы делегирования локального уведомления didReceiveLocalNotification: и didReceiveRemoteNotification: для Push-уведомления.

Поэтому, пожалуйста, обратитесь к документу Apple перед реализацией.