Значок приложения не обновляется при получении push-уведомления
Я рассмотрел вопрос об обновлении значка приложения в полночь с параметрами: приложение не запускается или в фоновом режиме, номер значка может уменьшиться, а также значок значка приложения при получении уведомления и значок "Счетчик push-уведомлений не обновляется" и значок обновления, когда приложение закрыто, и многие другие. но у меня та же проблема, что и когда приложение находится в фоновом режиме и приходит push-уведомление, значок значка приложения не обновляется.
Я проверил все возможности для этого. Мой код:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
UIApplicationState appState = UIApplicationStateActive;
if ([application respondsToSelector:@selector(applicationState)]) {
appState = application.applicationState;
}
for (id key in userInfo) {
NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
}
NSLog(@"remote notification: %@",[userInfo description]);
[UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo valueForKey:@"aps"] valueForKey:@"badge"] integerValue];
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive)
{
NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@""
message:message
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alertView show];
}
}
да, он работает нормально, когда приложение находится на переднем плане, а затем показывает предупреждение хорошо. но когда приложение находится в фоновом режиме, ни одно событие не произошло, и значок значка приложения не обновился. Я также установил фоновый режим, как показано в ios7.1: проблема с обновлением значка push-уведомлений, и я также проверил, что значок значка приложения получен правильно и напечатан в NSLog, когда приложение находится на переднем плане. Мне нужно установить непрочитанные сообщения в виде значка, когда приложение работает в фоновом режиме и работает нормально, но оно должно обновляться при получении любого нового push-уведомления. Пожалуйста, предложите мне вариант.
2 ответа
Наконец эта проблема решена. Это правда, что ни одно действие не запускается, когда приложение находится в фоновом режиме. так didReceiveRemoteNotification
метод в appDelegate
также не срабатывает, когда приложение находится в фоновом режиме.
Значок значка приложения устанавливается iOS, когда на устройство поступает любое новое push-уведомление. Полезная нагрузка такая же, как и у @rahulPatel. Я мало что изменяю, так как BADGE_COUNT выбирается из базы данных, хотя это INTEGER, но считается, что строка и строка не воспринимаются iOS, поэтому значок значка моего приложения не обновляется при получении уведомления. Теперь мой код со стороны сервера становится таким:
$badges=(int)$cntmsg;
$body['aps'] = array(
'alert' => $message,
'sound' => 'default',
'badge' => $badges
//'msg_id'=> $msg_id
);
Таким образом, изменив счетчик сообщений как (int), он решил мою проблему. Благодарю.
Обычно во всех приложениях количество непрочитанных уведомлений сохраняется на сервере. Когда сервер отправляет push-уведомление определенному устройству, токен-сервер отправляет счетчик значков вместе с полезной нагрузкой.
Логика вашего сервера должна отслеживать правильное количество значков и отправлять их соответствующим образом.
{
"aps" :
{
"alert" : "Your notification message to show",
"badge" : BADGE_COUNT ,
"sound" : "sound.caf"
}
}