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

vik*_*kas 52 php iphone apple-push-notifications

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

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

谢谢.

typ*_*ror 120

无论您使用何种语言和库,推送通知有效负载都是JSON有效负载:

{
    "aps": {
         "badge": 10,
         "alert": "Hello world!",
         "sound": "cat.caf"
    }
}
Run Code Online (Sandbox Code Playgroud)

aps令牌是苹果APN数据.您也可以将自定义数据添加到您的有效负载:

{
    "aps": {
         "badge": 10,
         "alert": "Hello world!",
         "sound": "cat.caf"
    },
    "job_id": 1
}
Run Code Online (Sandbox Code Playgroud)

当您在应用程序中收到通知时,请在通知字典中检查您的参数:

- (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];
    }
}
Run Code Online (Sandbox Code Playgroud)

请记住,有效负载的总大小为256 字节,当然还包括您的自定义参数.所以你可能不得不(有降低可读性的风险)调用你的自定义参数"ji"而不是"job_id"来挤压字节.

所有这些都记录在iOS文档的" 本地和推送通知编程指南"中.肯定会推荐一个读取,因为它比最初的声音更复杂(至少,这是我的想法).

  • 从iOS 8开始,有效负载大小从256字节增加到2KB :) (12认同)

Arf*_*een 8

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