发送自定义数据的Apple推送通知

时间:2011-11-15 09:32:57

标签: php iphone apple-push-notifications

我正在从php job应用程序向iphone发送推送通知。我正在发送关于新工作的推送通知。当用户点击推送通知视图弹出时,用户可以重定向到设备中的特定作业。

我的意思是我想知道我是否可以使用推送通知发送任何自定义数据,例如jobId,其他内容....以便Iphone结束可以检索并显示特定的工作?

感谢。

3 个答案:

答案 0 :(得分:119)

无论您使用何种语言和库,推送通知有效负载都是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 bytes ,当然还包括您的自定义参数。所以你可能不得不(有降低可读性的风险)调用你的自定义参数“ji”而不是“job_id”来挤压字节。

所有这些都记录在iOS文档中的Local and Push Notification Programming Guide中。肯定会推荐一个阅读,因为它比最初的声音更复杂(至少,这就是我的想法)。

答案 1 :(得分:8)

是的,您可以发送自定义数据,请检查apns-php library是否有所有推送通知需求:

答案 2 :(得分:-1)

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

爪哇:

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