SNS:如何为 APNS voip 创建平台应用程序?

Posted

技术标签:

【中文标题】SNS:如何为 APNS voip 创建平台应用程序?【英文标题】:SNS: How to create platform application for APNS voip? 【发布时间】:2021-07-01 15:45:17 【问题描述】:

我正在尝试以编程方式为 APNS 创建一个平台应用程序来执行 voip 推送通知。我正在使用 voip 证书并这样做:

var attributes = new Dictionary<string, string>
            
                 "PlatformCredential", password ,
                 "PlatformPrincipal", $"-----BEGIN CERTIFICATE-----\n apnsCertificate \n-----END CERTIFICATE-----" 
            ;

var request = new CreatePlatformApplicationRequest  Attributes = attributes, Name = "ApnsPlatform", Platform = "APNS" ;
var response = _amazonSnsClient.CreatePlatformApplication(request);

但是,我收到此错误消息,提示我无法将 VoIP 证书用于应用程序 ios 生产:

Amazon.SimpleNotificationService.Model.InvalidParameterException: Invalid parameter: Attributes Reason: You provided a certificate of type VoIP, which cannot be used to create an application of type iOS Production. Please select an application of type VoIP or provide a certificate of type iOS Production

所以,我一直在想我需要将上述方法中的“平台”属性设置为“APNS_VOIP”/“VOIP”/“VoIP”之类的东西(我尝试了一些),但仅限 SNS 文档指定 APNS 和 APNS_SANDBOX。我有一种感觉,我在这里遗漏了一些明显的东西,但是搜索了很多却没有找到任何东西。

【问题讨论】:

【参考方案1】:

结果证明设置“Platform = APNS_VOIP”是正确的方法!尝试了这么多东西,我想我累了,错过了不同的错误消息。

如果输入无效的平台类型,则错误表示它无效或未知,但对于 APNS_VOIP,它反而表示凭据有问题。就我而言,我不明白上述“PlatformCredential”属性中的密码也需要用 BEGIN/END 关键字括起来,但这里是“RSA PRIVATE KEY”,如下所示:

 "PlatformCredential", $"-----BEGIN RSA PRIVATE KEY-----\n password \n-----END RSA PRIVATE KEY-----" 

然后我可以为 VoIP 创建一个平台应用程序。

【讨论】:

以上是关于SNS:如何为 APNS voip 创建平台应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

Ios Voip Apns 推送通知延迟 4 分钟

iOS 应用创建APNS 和 VOIP的pem证书流程

iOS 应用创建APNS 和 VOIP的pem证书流程

我需要 APNS 证书和 VOIP 证书吗?

AWS SNS 推送通知说明

AWS SNS 从 Apple APNS 的 .p12 文件中获取证书和私钥