Push-уведомление Apple с отправкой пользовательских данных - PullRequest
52 голосов
/ 15 ноября 2011

Я отправляю push-уведомления из приложения php на iphone. Я отправляю push-уведомления о новых вакансиях. Возможно ли, что когда пользователь щелкает по представлению всплывающего уведомления, пользователь перенаправляет на конкретное задание на устройстве.

Я имею в виду, я хотел знать, могу ли я отправлять какие-либо пользовательские данные с push-уведомлением, например jobId, что-то еще .... так, чтобы конец Iphone мог получать и показывать конкретную работу?

Спасибо.

Ответы [ 3 ]

120 голосов
/ 15 ноября 2011

Независимо от языка и библиотеки, которую вы используете, полезная нагрузка push-уведомлений является полезной нагрузкой JSON:

{
    "aps": {
         "badge": 10,
         "alert": "Hello world!",
         "sound": "cat.caf"
    }
}

Маркер aps представляет собой данные Apple APN.Вы также можете добавить пользовательские данные в свою полезную нагрузку:

{
    "aps": {
         "badge": 10,
         "alert": "Hello world!",
         "sound": "cat.caf"
    },
    "job_id": 1
}

Когда вы получите уведомление в приложении, проверьте ваш параметр в словаре уведомлений:

- (void)handleBackgroundNotification:(NSDictionary *)notification
{
    NSDictionary *aps = (NSDictionary *)[notification objectForKey:@"aps"];
    NSMutableString *alert = [NSMutableString stringWithString:@""];
    if ([aps objectForKey:@"alert"])
    {
        [alert appendString:(NSString *)[aps objectForKey:@"alert"]];
    }
    if ([notification objectForKey:@"job_id"])
    {
        // do something with job id
        int jobID = [[notification objectForKey:@"job_id"] intValue];
    }
}

Имейте в видучто общий размер полезной нагрузки составляет 256 байт , и это включает, конечно, ваши пользовательские параметры.Поэтому вам, возможно, придется (рискуя снизить читабельность) вызвать свой пользовательский параметр «ji» вместо «job_id», чтобы сжать байты.

Все это описано в Руководство по программированию локальных и push-уведомлений в документации по iOS.Определенно рекомендую прочитать, потому что это сложнее, чем кажется на первый взгляд (по крайней мере, я так думал).

8 голосов
/ 15 ноября 2011

Да, вы можете отправлять пользовательские данные, проверьте apns-php library для всех потребностей push-уведомлений:

0 голосов
/ 19 мая 2015

Мы можем добавить несколько пользовательских данных, но, если я использую sub_action в качестве имени, мой iPhone не сможет получать push-сообщения

Java:

PayLoad payLoad = new PayLoad();
payLoad.addCustomDictionary("action", action_type);
payLoad.addCustomDictionary("subaction", sub_action_type);
...