1

我刚刚将我的第一个应用程序发布到苹果的应用程序商店,我发现推送通知不起作用。

我在 Stackoverflow 上偶然发现了许多重复的帖子,但对于其中一些人来说,我似乎没有足够的知识来处理它们。

1 . 我的推送通知服务器将通知(通过 php)正确地传递给苹果推送服务 - 使用生产服务器而不是沙箱。

2.所以我认为错误与通过电话接收它们有关。也许发行证书和注册有问题?

3 . 我该如何调试这样的问题?我考虑通过 xCode 使用 Build Configuration: Release 启动我的应用程序 - 检查手机是否注册了 Apple 的 apns。但它总是说:

找不到此可执行文件的有效配置文件。

但是我对3中的假设是否正确?- 该应用程序可能无法在发布模式下注册?

您将在下面找到我的分发配置文件的一部分。但对我来说,一切似乎都很好。

<key>Entitlements</key>
    <dict>
        <key>application-identifier</key>
        <string>***YGJ2X89.de.gruener.war***</string>
        <key>aps-environment</key>
        <string>production</string>
        <key>get-task-allow</key>
        <false/>
        <key>keychain-access-groups</key>
        <array>
            <string>***YGJ2X89.*</string>
        </array>
    </dict>
4

2 回答 2

0

您的 php 服务器是否跟踪注册的设备?是否可以检查设备是否已向服务器注册?

无法直接调试它,但如果您需要获取一些日志,请尝试在 Xcode -> Organizer 中从设备控制台读取日志。如果注册令牌时出现问题或服务器响应无效,则可能会从该日志中清除。

于 2012-07-25T09:04:02.827 回答
0

它调用 didFailToRegisterForRemoteNotificationsWithError。didRegisterForRemoteNotificationsWithDeviceToken 没有被调用,因为我认为该应用程序已经在我的第 3 方 php 服务器上注册了

所以注册本身出了点问题。

当您说“我的 php 服务器上的设备注册工作正常”时,您是什么意思?

即使在调用 didFailToRegisterForRemoteNotificationsWithError 之后,您是否会从您的设备中获得 deviceToken ?尝试记录错误信息并查看错误是什么

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
    NSLog(@"FAILED TO REGISTER FOR PUSH NOTIFICATIONS");
    NSLog(@"%@", error.userInfo);
}

如果设备未能获取设备令牌(通常由应用程序传递给第三方服务器),则无论您保存了旧令牌还是发送成功,它都不会收到推送通知。

另外,您确定您的手机(或设置中的应用程序)没有禁用通知吗?

于 2012-07-25T17:19:39.473 回答