Идентификация сообщения push-уведомления

В моем проекте я хочу показывать события и предложения через push-уведомления, но проблема в том, что я могу показывать события или предложения, а не то и другое. Есть ли способ идентифицировать сообщение Push-уведомления. Вот код:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSString *message = nil;
    id alert = [userInfo objectForKey:@"alert"];

    if ([alert isKindOfClass:[NSString class]]) {
        message = alert;
    } else if ([alert isKindOfClass:[NSDictionary class]]) {
        message = [alert objectForKey:@"body"];
    }
    if (alert) {
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Title"
                                                            message:@"AThe message." delegate:self
                                                  cancelButtonTitle:@"button 1"
                                                  otherButtonTitles:@"button", nil];
        [alertView show];
    }

    NSString *contentsInfo = [userInfo objectForKey:@"contTag"];
    NSLog(@"Received contents info : %@", contentsInfo);

    NSString *nibName = [AppDelegate fetchNibWithViewControllerName:@"EventsViewController"];

    EventsViewController *evc = [[EventsViewController alloc] initWithNibName:nibName bundle:nil];

    evc.newEvent = YES;

    [self.navigationController pushViewController:evc animated:YES];

    [UIApplication sharedApplication].applicationIconBadgeNumber = [[[userInfo objectForKey:@"aps"] objectForKey: @"badgecount"] intValue];
}

person Joker    schedule 06.09.2012    source источник
comment
что вы подразумеваете под идентификацией сообщения Push-уведомления? Вы можете дифференцировать контент, добавив еще одно поле в полезную нагрузку, например. тип: событие ИЛИ тип: предложение ИЛИ вы также можете сократить сообщение предупреждения.   -  person msk    schedule 06.09.2012
comment
спасибо за быстрый ответ... не могли бы вы дать фактический код для этого, в приведенном выше коде я получаю только события. Если я получил сообщение типа НОВОЕ ПРЕДЛОЖЕНИЕ. Как я могу получить предложенияViewController.   -  person Joker    schedule 06.09.2012


Ответы (1)


alert всегда является NSDictionary с двумя ключами: body и show-view. Значение первого — это предупреждающее сообщение, а второго — Boolean (false или true). Если false, кнопка просмотра оповещения не отображается. По умолчанию отображается кнопка «Просмотр», которая, если пользователь коснется ее, запускает приложение.

проверьте документы

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

Пример:

{
   "aps":{
      "badge":1,
      "alert":"This is my special message!",
      "mycustomvar1":"123456",
      "mycustomvar2":"some text",
      "myspecialtext":"This is the best!",
      "url":"http://www.mywebsite.com"
   }
}
person Alexey Petushkov    schedule 06.09.2012
comment
Можете ли вы объяснить мне немного, например, я получаю сообщение ЭТО МОЕ НОВОЕ СОБЫТИЕ от APNS, так как я могу идентифицировать это сообщение ..... помогите мне, братан - person Joker; 06.09.2012
comment
есть по крайней мере два способа: 1) сообщение от APNS должно включать настраиваемое поле, указывающее тип сообщения - предложение или событие 2) если случай 1 невозможен, вы можете проанализировать текст сообщения и выполнить поиск строк, специфичных для типа, таких как предложение или событие - person Alexey Petushkov; 06.09.2012
comment
Предупреждение не всегда является NSDictionary, я попался на этом, иногда это может быть строка;) - person James Campbell; 17.12.2015