解析不发送 iOS7 的推送打开通知

Parse not sending push open notifications for iOS7

我已按照有关使用 Parse 进行推送设置的指南进行操作。

在 iOS7 设备和 iOS8 设备上测试应用程序时,从推送打开时会调用相同的方法:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    DebugLog(@"%s",__PRETTY_FUNCTION__);
    if (application.applicationState == UIApplicationStateInactive) {
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
    if (completionHandler) {
        completionHandler(UIBackgroundFetchResultNoData);
    }
    [PFPush handlePush:userInfo];
}

看来虽然在 iOS7 上调用了 [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo]; 方法,但数据未显示在 Parse 中。

比如查看已发送的Push,显示的是Opens的数量。如果我向 iOS7 设备和 iOS8 发送推送,则会调用相同的代码部分。但是,它只记录了 iOS8 版本。还有什么我应该做的吗?

我们已遵循相关指南:https://parse.com/docs/ios/guide#push-notifications

这也实现了:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    DebugLog(@"%s",__PRETTY_FUNCTION__);
    if (application.applicationState == UIApplicationStateInactive) {
        // The application was just brought from the background to the foreground,
        // so we consider the app as having been "opened by a push notification."
        [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo];
    }
    [PFPush handlePush:userInfo];
}

此问题是由某些通知权限测试引起的。

测试通知权限时,提示只会在第一次出现。要让提示再次出现,您需要:
删除应用程序并重置设备
打开它并将日期更改为未来的日期,重新设置
打开它和re-install/build应用程序,权限提示将再次出现。

我们已经在 iOS7 和 iOS8 设备上完成了一些测试。问题似乎是在 iOS7 设备上虽然调用了推送打开通知但未记录,这似乎与将来的日期有关。

iOS8 设备上的日期也是将来的,但可能不会那么早。当日期设置为设备上的正确日期时,iOS7 设备上的推送打开通知再次被记录。