Значок приложения не обновляется при получении 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"
    }
}
Другие вопросы по тегам