Iphone - 多个应用程序,不同的应用程序 ID,相同的令牌

Posted

技术标签:

【中文标题】Iphone - 多个应用程序,不同的应用程序 ID,相同的令牌【英文标题】:Iphone - Multiple Apps, Different App ID, Same Token 【发布时间】:2011-09-29 09:05:00 【问题描述】:

据我了解,如果设备上安装了多个具有不同 App ID 的应用程序,则为每个应用程序生成的推送通知令牌应该是唯一的。

就我而言,我有几个使用不同的配置文件编译的应用程序,每个应用程序都基于不同的应用程序 ID(尽管其中一些具有相同的 Bundle Seed ID,有些则没有)。

对于每个应用程序,我生成了开发推送通知 SSL 并导出 SSL 以生成 PEM。接下来我下载配置文件并将其应用到 XCode。

当我尝试在我的设备上运行它时,我得到了什么:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

在所有应用程序上都是一个相同的设备令牌。我想知道这是为什么?

当我尝试通过我的服务器推送通知时,没有收到任何错误消息。但通知从未发送到已安装的设备。

请给我有关问题的建议。提前致谢。

【问题讨论】:

单设备令牌正确。我开发了几个应用程序,它们使用同一台服务器进行推送,即使在同一台设备上也能正确获取消息。我认为这是一种魔法...... 【参考方案1】:

设备令牌对于每个应用程序都不是唯一的,无论是生产环境还是开发环境。您可能想知道,如果所有应用程序的设备令牌都相同,那么推送通知怎么可能路由到正确的设备和正确的应用程序?答案是应用程序的唯一捆绑 ID。 App Store 上的每个应用程序都有一个唯一标识符,例如:com.mycompanyname.dummyapp。当应用程序为自己注册推送通知时,应用程序包 ID 和设备令牌都会在 Apple 的服务器上注册。

Willy,您可能要检查的最后一件事是,配置推送通知的第一步是从钥匙串管理器创建 CertificateSigningRequest.certSigningRequest 文件。如果您有 2 个应用程序,则必须执行此步骤两次,因此您最终会得到 2 个不同的文件,这些文件将在 Apple 的门户中用于创建 SSL.cer 文件。您的问题可能是您使用相同的 .certSigningRequest 来创建不同的 SSL.cer 文件,而不是使用不同的文件。

【讨论】:

我们在部署时遇到问题,其中一个项目生成多个目标,每个目标都有自己唯一的应用 ID 和推送通知证书。然而,某些目标收到了所有推送通知,而其他目标则没有收到。经过一番摸索,我们意识到使用相同的证书签名请求来生成所有推送通知证书。重新创建具有唯一证书签名请求的所有文件就可以了。很好的答案@Ivan Sanchez ios 7 处理设备令牌的方式不同(每个应用程序都是唯一的):***.com/a/20111644/289319【参考方案2】:

对于开发配置文件,设备令牌将与该设备上使用开发配置文件的所有其他应用相同。

据我所知,在生产环境(App Store)中,每个应用程序的设备令牌都是唯一的。但我不是 100% 确定。

至于为什么推送通知没有发送到您的设备,没有更多细节很难回答。

【讨论】:

在我的服务器上,我收到了来自苹果服务器的回复消息,例如 "aps":"alert":"message","badge":0,"sound":"default"。是不是说明消息已经成功发送到设备了? 如果您使用版本 2 的 APS 格式,Apple 将在关闭连接之前提供带有错误代码的有效负载。您可以在 Apple 的开发者文档中了解更多信息。 令牌不一定对每个应用程序都是唯一的。见***.com/questions/2338267/…

以上是关于Iphone - 多个应用程序,不同的应用程序 ID,相同的令牌的主要内容,如果未能解决你的问题,请参考以下文章

iPhone:多个 UIPickerViews

iphone:uitextfield,具有相同委托的多个文本字段?

如何为 iPhone 应用程序创建多个主题/皮肤? [关闭]

一个用户,一个 iCloud 帐户,多个设备 [关闭]

XCode iPhone 多个目标 - 创建了第二个不同名称的可执行文件,但我的第二个“可执行文件”的“路径”是错误的

如何在 iPhone 应用程序内的 MKMapView 中显示和连接多个位置与带有注释的路线?