首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS推送证书因"No“原因失败

iOS推送证书因"No“原因失败
EN

Stack Overflow用户
提问于 2013-05-07 11:30:56
回答 1查看 179关注 0票数 0

我们的应用程序现在正在使用iOS推送通知的生产证书。

我们已经经历了几轮推送工作,然后他们就停止工作了。通常,“停止工作”与某些服务器故障有关。然而,我们使用的服务器说,我们仍然在起诉我制作证书时生成的同一个p12s,但他们从苹果得到了一个错误代码8,这意味着它是一个无效的令牌。

我重新生成了证书,并“脏”了配置文件/标识符,在服务器上重新加载了p12s,一切都很正常……一段时间。然后他们神奇地开始得到“错误代码8”,我们不得不从头开始。

今天,我注意到我们的应用程序的前一个版本仍然可以正常工作,但当前的版本不能。它们都是使用相同的配置配置文件和/或企业分发配置文件构建的,都使用相同的证书作为应用程序ID,都加载到TestFlight (仅供参考),并在其中具有相同的推送相关代码。

奇怪的是,当我使用旧版本时,我得到了一个4xxxxx……设备令牌(始终是同一个令牌),当我使用新的构建时,我总是得到一个5xxxxx……来自Apple的设备令牌(始终是同一个)。

我知道之前的版本是5xxxx...设备令牌,因为我在相当一致的基础上检查它。

然而,我注意到我们的一些测试人员注册的设备令牌比他们所说的设备更多,所以这个问题可能已经持续了很长一段时间,我错误地认为这是另一个问题。

是什么原因导致设备令牌具有一致但不同的数字?

设备令牌的结构是什么?

有人知道为什么完全相同的配置文件/标识符会突然停止对完全相同的推送证书的工作吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-05-07 18:44:55

设备令牌很少更改。据我所知,只有在升级iOS版本或从备份中恢复设备时,它们才会发生变化。因此,对于不同的构建,您为同一设备获得不同令牌的事实可能意味着其中一个构建使用沙盒证书,另一个使用生产证书。我能想到的唯一其他解释是,为了测试旧版本,您从备份中恢复了设备,从而更改了其设备令牌。

从您的问题描述来看,您的数据库似乎包含沙箱设备令牌和生产设备令牌的混合。他们不能很好地融合。沙箱令牌在生产环境中无效,反之亦然。

您应该清除数据库并开始从用户收集设备令牌,或者应该找到导致无效令牌响应的所有令牌并将其删除。

来自苹果的Technical Note

最常见的问题是设备令牌无效。如果令牌来自沙箱环境,例如当您在内部测试开发构建时,您不能将其发送到生产推送服务。每个推送环境将为相同的设备或计算机发出不同的令牌。如果您确实将设备令牌发送到错误的环境,推送服务会将其视为无效令牌并丢弃通知。

注意:建议您为每个推送环境运行一个单独的提供程序实例,以避免将设备令牌发送到错误环境的问题。

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

https://stackoverflow.com/questions/16410758

复制
相关文章

相似问题

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