通过带有开发SSL证书的xcode在设备中推送通知测试

use*_*539 2 xcode objective-c push-notification apple-push-notifications ios

我的应用程序已经在应用程序商店中,推送通知处于活动状态并正常工作(使用生产证书).现在我需要在应用程序中添加徽章(在它们只是警报之前)(已经在服务器端实现).因此,对于测试,我需要一个开发SSL证书.以下是我的疑问:

  1. 我是否必须在我的服务器上安装开发SSL证书,以便我可以使用开发证书在iPhone上进行测试?
  2. 它是否与服务器上已安装的生产SSL证书冲突.
  3. 我是否必须在didReceiveRemoteNotification和didFinishLaunchingWithOptions:使用以下代码的委托中添加徽章:

代码部分:

NSString* alertValue = [[userInfo valueForKey:@"aps"] valueForKey:@"badge"];  
NSLog(@"my message-- %@",alertValue);  
int badgeValue= [alertValue intValue];  
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeValue];
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Bry*_*ial 7

只是为已经提出的证书/服务器/ SSL问题和答案添加一些额外的颜色:

根据Codeign设置选择Prod/Sandbox APNS

为了彻底,我们先来快速回顾一下APNS环境:

  • 使用iOS开发证书进行代码签名的应用程序将连接并等待从沙盒 APNS环境传递推送通知
  • 使用iOS分发证书(AppStore或分发> Ad-Hoc)进行代码签名的应用程序连接并等待从生产 APNS环境传递推送通知.
  • 此设置由Xcode在构建过程中自动确定,并且只能通过选择CodeSign步骤中使用的证书类型进行配置.

问题1:我是否必须在我的服务器上安装开发SSL证书以测试开发证书签名应用程序推送通知?

是的,一旦app和Code Signed,其APNS设置将使用上一节中的规则密封到二进制文件中.然后由开发人员的服务器代码知道设备将生成的APNS令牌与Sandbox APNS环境一起使用,并且服务器应将该推送通知请求路由到gateway.sandbox.push.apple.com.

一些开发人员选择设置能够进行这些区分的单个服务器,而其他开发人员选择设置其服务器的并排实例,一组发送到Production,另一组发送到Sandbox.

无论哪种方式,决策都取决于各个开发人员以及他们的服务器端代码能够做什么以及设置第二个服务器的相对复杂性.无论哪种方式,如果您在测试即将推出的功能时意外禁用生产推送通知,然后忘记重新启用它们,用户可能会感到不安,所以在讨论生产代码时一定要小心!

问题2:开发和生产SSL证书是否会发生冲突?

从原始SSL的角度来看,它们不会发生冲突 - 您应该能够在服务器以外的机器上下载并打开/检查这两个证书,并且看到证书的内容实际上是不同的.将它们导入到同一服务器环境中(同样从SSL的角度来看)是完全允许的.为了确保它们不同,在请求证书时,请务必确保创建两个不同的certificateSigningRequests,并且您将固有地使用不同的数据.

从开发人员的服务器端推送代码的角度来看 - 这取决于.请参阅问题1中有关服务器端代码功能的对话.如果服务器代码的设计考虑到了这一点,那么理论上答案也是"不会发生冲突",但这是个体开发人员需要对自己的服务器端代码功能做出的决定.