如何为使用AWS SNS创建的远程推送通知设置APNS通知标识符?

时间:2018-08-25 22:05:44

标签: ios amazon-web-services apple-push-notifications amazon-sns

我在后端使用AWS SNS SDK向我的应用程序分发远程通知,并且我需要能够设置通知标识符,以便某些通知默认替换先前交付的副本,如{{3 }}:

  

如果在计划新通知时使用相同的标识符,则系统将使用该标识符删除先前计划的通知,并将其替换为新的标识符。

使用本地通知很容易,因为它们是在应用中安排的,您可以在安排通知时设置通知标识符。

但是,对于远程通知,我似乎找不到使用iOS developer docs(在.NET编写的Lambda中)设置通知标识符的任何方法。

根据API参考SNS SDK(很可能是通知标识符),但我看不到自己设置标识符的任何方法。

有人知道怎么做吗?还是SNS根本不允许这样做?

2 个答案:

答案 0 :(得分:0)

您可以自定义有效负载,如AWS所述:https://docs.aws.amazon.com/sns/latest/dg/mobile-push-send-custommessage.html

  

使用Amazon SNS控制台在消息中发送特定于平台的有效负载时,数据必须是键值对字符串,并且格式应为JSON,并带有引号转义。以下示例(包括格式和可读性空格)显示了GCM平台的示例自定义消息,该消息在消息主体内具有键值对,并格式化为JSON。

     

{“ GCM”:” {         “数据”:{            “ message”:“查看这些很棒的交易!”,            “ url”:“ www.amazon.com”         }}“}

您可以将ID添加为自定义字段。

编辑:如果需要添加标题,则可能需要通过Lambda函数代理请求:https://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html 这是此处显示如何使用Lambda添加响应标头的线程:Setting http response header from AWS lambda

答案 1 :(得分:0)

看来, AWS SNS完全不允许自定义通知标识符,也不允许自定义发送给APNS的HTTP标头

唯一的可行的远程推送通知解决方案是在到达Notification Service Extensioncheck delivered notifications whenever a new one arrives and replace any previous copies with the new version时替换掉它们。

它似乎一直工作,您可以选择在通知JSON中设置自定义有效负载属性或thread-id属性,以便在传递每个通知之前在设备上对其进行检查。