我已经在这方面工作了一段时间。我知道有一大堆的文章,并且学到了很多东西。
我已经创建了我的开发和生产SSL的相同方式。开发连接到ssl://gateway.sandbox.push.apple.com:2195生产连接到ssl://gateway.push.apple.com:2195连接似乎工作正常。
至于应用程序。开发:当我从xCode直接在我的设备上运行它时,它会运行开发版本。app成功将开发token记录到数据库中。然后,我运行一个服务来发送推送通知,并且它被正确地传递。成功地传送了msg。
Ad-hoc:当我构建一个归档文件并将其导出以用于Ad-hoc分发时,我会仔细检查包内容环境,并查看aps codesign -dvvvv --entitlements - Elepago.app是否正确地设置为production。我将其打包并通过iTunes将其加载到我的设备上。当应用程序启动时,我看到数据库中记录了新的生产令牌。因此,必须正确设置环境。当我向生产密钥发送推送通知时(与开发相同,只是更改了SSL和服务器),它会说已成功交付。然而,它实际上从未到达设备!
这个问题快把我逼疯了。我刚刚检查并清理了我的分发证书,并使用一个全新的CSR重新构建了它。我还更新了所有配置配置文件以使用该新证书。除了我已经检查过的aps环境的事情之外,你知道这些证书是如何绑定到应用程序中的吗?
任何见解都将不胜感激。
发布于 2013-06-14 06:05:06
因此,在经历了一小时又一小时的头痛之后,我最终重新构建了SSL .pem文件,并成功了!!
下面是我所做的:
上的说明创建了一个新的SSL
握手.pem文件
这些都是我最初在开发和生产时遵循的相同说明,但可能/显然搞砸了一些东西。然后我在我的ad-hoc版本上进行了测试,它工作了!
此外,值得注意的是,当使用错误的.pem密钥时,我没有收到来自APNS的任何错误反馈。我使用上面链接中的simplepush.php文件作为发送PN的基础。
发布于 2014-03-04 17:07:36
用于开发的设备令牌和用于生产的设备令牌不同。
当您为生产环境进行测试时,可以使用UIAlertView查看用于生产环境的令牌。执行类似以下操作:
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
NSString *deviceID = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
deviceID = [deviceID stringByReplacingOccurrencesOfString:@" " withString:@""];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Device Token", nil) message:deviceID delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];
[alert show];
}使用此令牌推送生产通知。
发布于 2013-08-25 12:36:57
希望这能有所帮助。
https://stackoverflow.com/questions/17095134
复制相似问题