苹果推送通知与发送自定义数据


Apple Push Notification with Sending Custom Data

我正在从php工作申请发送推送通知到iphone。我正在发送有关新工作的推送通知。是否有可能当用户点击推送通知弹出的视图时,用户重定向到设备中的特定作业。

我的意思是我想知道我可以发送任何自定义数据与推送通知,如jobId,其他....以便Iphone端可以检索并显示特定的作业?

谢谢。

无论使用哪种语言和库,推送通知有效负载都是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"来压缩字节。

所有这些都记录在iOS文档中的本地和推送通知编程指南中。我绝对推荐你读一下,因为它比最初听起来要复杂得多(至少我是这么认为的)。

可以发送自定义数据,检查apns-php库中的所有推送通知需求:

我们可以添加多个自定义数据,但是,如果我使用sub_action作为名称,我的iPhone无法接收推送消息

Java:

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