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

Wil*_*lly 4 iphone objective-c push-notification

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

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

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

当我试图在我的设备上运行它时,我得到的是:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
Run Code Online (Sandbox Code Playgroud)

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

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

请给我关于这个问题的建议.提前致谢.

Iva*_*hez 21

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

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

  • 我们遇到了部署问题,其中一个项目生成了多个目标,每个目标都有自己独特的应用ID和推送通知证书.然而某些目标收到所有推送通知,而其他目标没有收到 经过大量的讨论,我们意识到使用相同的证书签名请求来生成所有推送通知证书.使用唯一的证书签名请求重新创建所有文件就可以了.优秀答案@Ivan Sanchez (2认同)