提交后苹果推送通知服务不工作,但沙盒环境中一切正常。

4

我在我的应用中实现了APNS,在开发过程中它可以正常工作。但是当我提交到App Store后,弹出窗口不显示,该窗口用于询问用户是否接收APNS。有人能提供任何想法吗?


1
你在应用商店发布时使用了正确的推送证书吗? - CarlJ
你在将应用程序推送到应用商店后更改了证书吗? - rishi
提交后不要更改证书,并在提交期间正确使用课程证书以通过验证。 - DragonDoingPragramming
2个回答

12
我会先检查您提交的二进制文件是否在权限设置中启用了推送通知。在iTunes connect中查看您应用程序的二进制文件详细信息:

enter image description here

您应该看到 aps-environment 键,其值为 "production"。

enter image description here

您也可以在终端中运行以下命令,以获取本地计算机上 .app 文件的信息:
codesign -d --entitlements - MyApp.app

如果aps-environment键设置为“production”,则代码方面的应用程序可能没有任何问题。它可以在沙盒环境中运行,因此它应该可以在生产环境中工作(因为两者的代码相同)。这是假设您的发布版本正在运行与调试版本相同的代码。

在您的代码中,您应该处理application:didFailToRegisterForRemoteNotificationsWithError:方法,并记录任何错误。这会让您在设备控制台中看到错误信息。

由于您的应用程序未提示启用推送通知,所以我认为权限不足。或者设备上某种方式禁用了推送通知。

您还应检查您的服务器(提供程序)是否将通知发送到生产环境(gateway.push.apple.com),而不是沙盒环境(gateway.sandbox.push.apple.com)。尽管如果这是问题,应用程序仍然会提示用户允许推送通知。


谢谢Mike提供如此详细的答案。我会尝试你的建议,并回来这里。非常感激! - DragonDoingPragramming
如果您进行了某种手动辞职,授权也可能会被删除。或者您使用的配置文件是在启用推送通知支持之前下载的旧版本。很难说。 - Mike Weller
嗨,Mike,我在应用商店提交应用后,推送通知在我的应用中正常工作。但是几个月后,我已经在iOS开发者门户中删除了配置文件,现在无法收到推送通知。我是否可以重新提交应用程序或者有可能在不重新提交应用程序的情况下启用推送通知? - Bharathi D
通过删除配置文件,苹果将吊销您的推送通知证书。这就是为什么推送通知无法工作的原因。您应该能够通过为您的服务器生成新的配置文件和推送证书来使其再次工作。 - Mike Weller
我没有理解这些话(因为代码对于两者来说是相同的)。这是假设您的发布版本运行与调试版本相同的代码。您的意思是在“编辑方案”中,我们需要发布测试、配置文件、分析、存档吗?还是其他的?感谢Mike Weller提前回答。 - Babul
显示剩余5条评论

0

你的应用程序ID是否已在iOS门户网站中配置为使用APNS生产环境?

此外,您可以在应用程序中检查日志,它应该记录特定原因的APNS注册错误。


你的应用程序ID已配置为在iOS门户中使用APNS生产环境? 是的,我已经配置好了。 “你也可以在你的应用程序中检查日志” 非常感谢,我会先尝试这个! - DragonDoingPragramming
我检查了日志,没有关于我的应用程序的任何信息。顺便说一下,我确定registerRemoteNotificateTypes:...已经执行,应该会弹出一个窗口询问用户是否要注册APNS。 - DragonDoingPragramming

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接