在 testflight 上推送通知

push notifications on testflight

我正在使用 uraban 飞艇为我的 ios 应用程序发送通知 它在我的开发阶段工作得很好 现在我已经用生产配置文件替换了我的配置文件,我为它创建了一个新的 apns 证书,并将该证书上传到我的 urbanairship 上的新制作应用程序 而我得到的什么都没有。

我尝试制作一个新的 appid 并撤销我的证书并重新颁发它们,但什么也没有。 我应该提到我正在使用生产配置文件而不是临时文件在 tesflight 上测试我的应用程序,可以吗? 我必须发布到 Appstore 才能正常工作吗?

检查您的使用链中的所有 4 个东西现在都已投入生产:

虽然还有其他原因,但在很大比例的情况下,推送失败的原因是推送“方程式”被打破了。

有两个方程式,必须严格遵循其中一个方程式才能使推送起作用。

发展方程式:

Development build of the App + Development APN token + Development Certificate + Development Apple gateway == SUCCESS

生产方程式:

Production build of the App + Production APN token + Production Certificate + Production Apple gateway == SUCCESS.

如果您在生产方程式中有任何开发元素,或者在开发方程式中有任何生产元素,那么推送将不起作用。等式的所有四个要素必须是全部开发或全部生产。

当您通过 Xcode 运行 应用程序时,默认情况下它将是该应用程序的开发版本(它可以在方案中更改,但除非您知道并已这样做,否则它将是调试版本),因此在使用 Xcode 时,您必须使用开发方程来推动功能。如果您创建一个临时分发或应用程序商店构建,那么它将是一个生产构建,您必须使用生产方程式才能工作。

如果创建广告方式/分发/应用商店构建等,则常见的失败原因是未在构建设置中正确设置 Xcode 的代码签名和配置文件部分。

此外,应用程序的生产版本和应用程序的开发版本会产生不同的推送令牌,因此如果您暂时将令牌硬编码到某些服务器测试脚本或类似脚本中,则必须确保它是正确的令牌。在 iOS 的旧版本中,令牌一旦获得就永远不会改变(它们可以,但这种情况很少见)。但在 iOS9 中不再是这种情况,令牌可以而且确实会发生变化,因此请始终确保您在服务器上使用的令牌是最新的。

推送也必须通过正确的网关发送,Apple 开发网关是沙盒网关:

ssl://gateway.sandbox.push.apple.com:2195

而生产网关是:

ssl://gateway.push.apple.com:2195

当使用生产网关时,服务器必须使用生产证书进行签名,而当使用沙箱网关时,服务器必须使用开发证书进行签名。

如果您对两个证书使用相同的密码,那么您可以使用同一个 .pem 文件中的生产证书和开发证书对您的服务器进行签名。 IE。您可以将所有提升证书和密钥连接到一个 .pem 文件中,并使用它来签署服务器。在使用 Xcode 进行测试时,服务器当然需要使用沙箱网关,而最终的应用商店发布则需要使用生产网关。

最终对我有用的是我使用 pushwoosh 自动集成了我的苹果开发者帐户,他们自动导入了我的证书 所以我认为用 p12 格式导出我的证书可能是个问题

由于您正在使用城市飞艇,

您应该有两个 App 和 Secret Keys,1) Developer App Key 和 2) Production App Key

请确保您已经在 .plist 文件中设置了 valid/proper 生产应用程序密钥和密钥,并且还设置了 "detectProvisioningMode" true。

希望你查过资料@http://docs.urbanairship.com/platform/ios.html