我在后端使用AWS SNS SDK向我的应用程序分发远程通知,并且我需要能够设置通知标识符,以便某些通知默认替换先前交付的副本,如{{3 }}:
如果在计划新通知时使用相同的标识符,则系统将使用该标识符删除先前计划的通知,并将其替换为新的标识符。
使用本地通知很容易,因为它们是在应用中安排的,您可以在安排通知时设置通知标识符。
但是,对于远程通知,我似乎找不到使用iOS developer docs(在.NET编写的Lambda中)设置通知标识符的任何方法。
根据API参考SNS SDK(很可能是通知标识符),但我看不到自己设置标识符的任何方法。
有人知道怎么做吗?还是SNS根本不允许这样做?
答案 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 Extension至check delivered notifications whenever a new one arrives and replace any previous copies with the new version时替换掉它们。
它似乎一直工作,您可以选择在通知JSON中设置自定义有效负载属性或thread-id
属性,以便在传递每个通知之前在设备上对其进行检查。