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

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

我在后端使用AWS SNS SDK向我的应用程序发送远程通知,我需要能够设置通知标识符,以便某些通知默认替换以前提供的副本,如iOS developer docs中所述:

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

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

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

根据API参考,SNS returns a response with a message ID(可能是通知标识符),但我看不到任何方式自己设置标识符。

有谁知道怎么做?或者SNS根本不允许这样做?

ios amazon-web-services apple-push-notifications amazon-sns
2个回答
0
投票

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

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

{“GCM”:“{”data“:{”message“:”查看这些令人敬畏的优惠!“,”网址“:”www.amazon.com“}}”}

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

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


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属性,以便在发送每个通知之前在设备上进行检查。

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