12

我已经为此工作了一段时间。我知道那里有很多文章,并且学到了很多。

我以同样的方式创建了我的开发和生产 SSL。开发连接到 ssl://gateway.sandbox.push.apple.com:2195 生产连接到 ssl://gateway.push.apple.com:2195 连接似乎工作正常。

至于应用程序。开发:当我从 xCode 直接在我的设备上运行它时,它运行的是开发版本。该应用程序成功将开发令牌记录在数据库中。然后我运行一个服务来发送推送通知,并且它被正确传递。消息已成功传递。

Ad-hoc:当我构建存档并将其导出以进行 Ad-hoc 分发时,我会仔细检查包内容codesign -dvvvv --entitlements - Elepago.app并查看 aps-environment 是否正确设置为生产环境。我将其打包并通过 iTunes 将其加载到我的设备上。当应用程序启动时,我看到数据库中记录了新的生产令牌。所以必须正确设置环境。当我将推送通知发送到生产密钥(与开发相同,只是更改 SSL .pem 密钥和服务器)时,它说它已成功交付。但是它从未真正到达设备!

这个问题快把我逼疯了。我刚刚完成并清理了我的分发证书,并使用全新的 CSR 对其进行了重建。我还更新了所有配置文件以使用该新证书。[除了我已经检查过的 aps-environment 之外,这些证书如何与应用程序相关联的任何想法。]

任何见解将不胜感激。

4

4 回答 4

8

因此,经过数小时的头痛后,我最终重建了 SSL .pem 文件并且它起作用了!

这是我所做的:

  • 擦干净我的分发证书并创建一个新的
  • 将所有配置文件关联到新证书
  • 在 xCode 中加载了新的配置文件
  • 按照Raywenderlich 的精彩教程的说明重建我的 SSL 握手 .pem 文件

这些是我最初在开发和生产中遵循的相同说明,但可能/显然搞砸了一些东西。然后我在我的临时版本上进行了测试,它成功了!!!

此外,值得注意的是,当使用错误的 .pem 密钥时,我没有收到来自 APNS 的任何错误反馈。我使用上面链接中的 simplepush.php 文件作为发送 PN 的基础。

于 2013-06-13T22:05:05.513 回答
4

开发和生产的设备令牌不同。

当您测试生产时,请使用 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];
}

使用此令牌推送生产通知。

于 2014-03-04T09:07:36.027 回答
1
  • 任何内部分发配置文件都会给出相同的 tokenID,但是这个 tokenID 在不同的设备上会有所不同。
  • 其他唯一的问题可能仅与 ProductionURL 相关。
  • 我还注意到推送通知接收有时会延迟,主要是在与生产 URL 一起使用时。

希望这可以帮助。

于 2013-08-25T04:36:56.857 回答
0

当我在 Java 上开发时,我的问题是一样的,但我解决了它,因为 production = true 用于生产,production = false 用于开发。

有效负载(有效负载、密钥库、密码、生产、设备)

希望这有帮助。

于 2014-02-28T06:58:29.307 回答