无声推送通知有效负载

问题描述 投票:22回答:2

我只是想问一下如何确定在静音推动中要采取的行动:

这是我发给客户的aps:

aps
{
content-available: 1
}

我现在的问题是当我添加类型:“Order_Update”以确定静默推送是针对订单更新它显示警报通知

ios swift push-notification
2个回答
66
投票

它有几个选择!让我们花一点时间来了解所有不同的有效载荷及其使用情况。


简单的有效负载

显示在通知中心:是

唤醒应用程序执行后台任务:否

{
    "aps" : {
        "alert" : "You received simple notification!",
        "badge" : 1,
        "sound" : "default"
    }
}

带有自定义通知声音的有效载荷

显示在通知中心:是

唤醒应用程序执行后台任务:否

Step 1:在您的应用包中添加自定义通知声音文件(仅限.wav或.aiff扩展名。例如notification.wav)。

Step 2:如下所示配置您的有效负载以播放您的自定义声音

{
    "aps" : {
        "alert" : "It's a custom notification sound!",
        "badge" : 1,
        "sound" : "notification.wav"
    }
}

自定义有效负载通知

显示在通知中心:是

唤醒应用程序执行后台任务:否

{
    "aps" : {
        "alert" : "It's a notification with custom payload!",
        "badge" : 1,
        "content-available" : 0         
    },
    "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
    },

}

在这里,data字典随时随地保存自定义信息。它还将显示为正常通知,并显示警告消息“这是带有自定义有效负载的通知!”。


正常的无声通知

它不会作为通知栏显示警报;它只会通知您的应用程序有一些新数据可用,提示应用程序获取新内容。

显示在通知中心:否

唤醒应用程序执行后台任务:是的

{
    "content-available" : 1
}

自定义有效负载的静默通知

这里有魔术显示通知警报以及在后台唤醒您的应用程序的任务! (注意:仅当它在后台运行且未被用户明确杀死时。)只需在有效负载中添加额外参数"content-available" : 1即可。

显示在通知中心:是

唤醒app执行后台任务:是的

{
    "aps" : {
        "alert" : "Notification with custom payload!",
        "badge" : 1,
        "content-available" : 1
    },
     "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
     }
}

根据您的应用程序要求使用任何这些有效负载。对于background app refresh,请参阅Apple's documentation。我希望这能为您提供所有必要的信息。快乐编码:)


0
投票

据我所知,您需要有效负载内的额外数据,因此您可以确定推送通知类型是什么,或需要处理哪些操作。

为此编辑您的有效负载:

 $body = array(
    'content-available' => 1,
    'sound' => ''
    );  

$payload = array();
$payload['aps'] = $body;
$payload['action'] = 'order_update';

然后在你的iOS代码中:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{


    NSString *action = userInfo["action"];


    if([userInfo[@"aps"][@"content-available"] intValue]== 1 && [action isEqualToString:@"order_update") //order update notification
    {
        //handle Your Action here
        return;
    }


}

希望这能解决你的问题!

© www.soinside.com 2019 - 2024. All rights reserved.