【问题标题】:applicationDidEnterBackground and network requestapplicationDidEnterBackground 和网络请求
【发布时间】:2014-01-20 00:59:30
【问题描述】:

我有一个 iOS 游戏,我在其中跟踪玩家在一个会话中玩的关卡数量。会话对应于用户在主屏幕上按下应用图标和按下主页按钮离开应用之间的时间段。

令人惊讶的是,我的大部分用户似乎都没有收到请假事件。我已经实现了日志传输如下:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    ...
    [[EventLogger sharedEventLogger] pushEvent:LEAVE_GAME];
}

...EventLogger 使用 ASIHTTP 库发送 异步 HTTP POST 请求。

会不会是系统在传输完成之前抢占了传输?可能是应用程序崩溃并且永远不会到达这一点,但这不太可能。

【问题讨论】:

    标签: ios asihttprequest


    【解决方案1】:

    您是否阅读过有关此方法的 documentation

    " 您应该使用此方法释放共享资源,保存用户数据,使计时器无效,并存储足够的应用状态信息以将您的应用恢复到当前状态以防以后终止。您还应禁用对应用用户界面的更新,并避免使用某些类型的共享系统资源(例如用户的联系人数据库)...此方法的实现大约有五秒钟的时间来执行任何任务并返回. 如果您需要额外的时间来执行任何最终任务,您可以通过调用 beginBackgroundTaskWithExpirationHandler 向系统请求额外的执行时间:。在实践中,您应该尽快从 applicationDidEnterBackground: 返回。如果该方法在时间用完之前没有返回,您的应用程序将被终止并从内存中清除。”

    在我看来,此方法不建议您执行此操作,但您可以尝试使用此 beginBackgroundTaskWithExpirationHandler。

    我不能确定这是对您的问题的解释,但它似乎是合理的,并且与并非仅针对您的部分用户记录的事实相一致。

    也可能有用: 当 Home 键被​​按下时,系统会发送 UIApplicationDidGoToBackground 通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多