首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >APS :缺失的主题

APS :缺失的主题
EN

Stack Overflow用户
提问于 2016-10-31 21:54:37
回答 2查看 2.7K关注 0票数 2

我有一个需要推送功能的iOS应用程序,并为此创建了必要的dev和Prod证书,并将它们加载到通知提供程序(Node)上;

但是,在APN沙箱环境中,通知在生产设置上发送通知时,提供者会从APNs网关获得缺少的主题错误。

在检查prod证书时,我看到证书扩展项下列出的三个项目如下所料:

  1. app.bundle.id
  2. app.bundle.id.voip和
  3. app.bundle.id.complication

APSd登录电话,显示当应用程序向操作系统注册其通知设置时启用了相关主题(app.bundle.id)。所以,在我看来,应用程序端的设置很好。

根据苹果的文档,提供者发布的通知必须包含一个apn-topic头文件,应用程序支持多个主题。

我的理解是,voip和复杂节点是自动添加到证书扩展中的,并不一定意味着单独的主题。

问题:

  1. apn-主题标题是强制性的还是可选的?
  2. 以上设置是多主题还是单一主题?
  3. 是否每个通知提供程序都需要知道其支持的每个应用程序的绑定ID/主题,并使用该值将apn主题头发送到apn?

敬请指教。

EN

回答 2

Stack Overflow用户

发布于 2017-01-04 20:24:26

我在dev和prod之间也遇到了类似的问题,在我的例子中,与文档相关的标题中的问题是这样说的:

根据apns是初始的还是后续的POST操作的一部分,为apns使用的适当编码id-id过期和apns-折叠-id请求头不同,如下所示:第一次发送这些标头时,用增量索引对它们进行编码,以便在发送这些标头时将头名称添加到动态表中,然后将其编码为文字标题字段,而无需索引。

HTTP/2对APN的请求

因此,在PHP中,请求的头部如下所示:

代码语言:javascript
复制
 $headers[] = 'content-length: ' . strlen($data);
 $headers[] = 'apns-topic: ' . $message->topic;
 $headers[] = 'apns-expiration: ' . ($message->time_to_live ? (int)$message->time_to_live + time() : 0);

没有名字和钥匙。

我希望这能帮到别人

票数 1
EN

Stack Overflow用户

发布于 2017-02-15 12:00:03

使用传统证书,开发人员为其应用程序支持的每种功能提供了一个证书:常规推送通知、VoIP等。每个功能只配置一个主题,因此,当Notification使用遗留证书与APN网关接口时,主题规范是可选的。

通过新的http2接口和通用证书的引入,开发人员现在可以获得一个证书,该证书允许标准的push、VoIP push和watchkit通知(如果他们愿意的话)。这意味着同一个证书可以有多个主题(就像我的情况一样)。因此,当通知提供程序使用新的通用证书与APN网关接口时,必须在http报头中指定主题,并且需要匹配证书中的主题。

主题标题不再是可选的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40351170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档