Добавить значок 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 ответ:
Для значка на 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 перед реализацией.