我正在从php job应用程序向iphone发送推送通知。我正在发送关于新工作的推送通知。当用户点击推送通知视图弹出时,用户可以重定向到设备中的特定作业。
我的意思是我想知道我是否可以使用推送通知发送任何自定义数据,例如jobId,其他内容....以便Iphone结束可以检索并显示特定的工作?
感谢。
答案 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);