【问题标题】:Fire 3 synchronous APIs once application wakes up from killed/ suspended state应用程序从终止/挂起状态唤醒后触发 3 个同步 API
【发布时间】:2017-08-06 02:27:53
【问题描述】:

地理围栏委托方法 didExitRegiondidEnterRegion 适用于所有应用程序状态(前景/背景/暂停和终止状态)。一旦通过任何区域,应用程序需要同步命中 3 个相互依赖的 api。在前台状态下一切正常,但不是在 Suspended / Killed 状态。不知道这次失败的确切原因。

一个原因可能是在这种情况下(杀死/挂起状态)执行所有任务的清醒时间限制。我试过 beginBackgroundTaskWithExpirationHandler ,但它没有帮助我。

- (void) beginBackgroundUpdateTask{

    _backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [self endBackgroundUpdateTask];
    }];
}

- (void) endBackgroundUpdateTask{

    [[UIApplication sharedApplication] endBackgroundTask:_backgroundTask];
    _backgroundTask = UIBackgroundTaskInvalid;
}


- (void)locationManager:(CLLocationManager *)manager
         didEnterRegion:(nonnull CLRegion *)region
{
    [kSharedAppDelegate beginBackgroundUpdateTask];

    NSString *locId = [region.identifier substringFromIndex:1];
    Recipe *recipe = [Recipe getSelectedReturnRecipeForLocationId:locId];
    if(recipe)
    {
        [self  callAPIOne:^(NSDictionary *dictResponse) {

          [self callAPITwo:params forAbc:NO];

        } withFailed:^(NSDictionary *dictResponse) {
                 [kSharedAppDelegate endBackgroundUpdateTask];
        } showLoader:NO];
    }
    else
        [kSharedAppDelegate endBackgroundUpdateTask];
}

如果有人对我在这里做错了什么有任何建议,请提供帮助。在此先感谢

【问题讨论】:

  • 所有更新完成后,您需要调用endBackgroundUpdateTask,因此请从最终完成处理程序中调用它
  • @Paulw11 是的,一旦所有任务在 callAPITwo 内完成,我已经调用了 endBackgroundUpdateTask:
  • 您是否引用了 pushkit,通过获得 Apple 的事先许可将应用程序归入特定类别将允许您。
  • @Hasya 不,尚未尝试。你能告诉我更多关于它的信息吗?

标签: ios objective-c background-process geofencing


【解决方案1】:

我自己发布这个答案,只是为了清楚上面的代码足以完成这样的任务。使用上面的代码,所有需要的任务都在所有应用程序状态(前台/后台/终止/暂停)下工作。

我的问题在于核心数据实现。一旦配方对象为零,我就跳过了进一步的代码。这让我觉得 API 不会因为终止状态的时间限制而触发。

希望上面的代码可以帮助其他人解决同样的问题。

【讨论】:

    猜你喜欢
    • 2021-05-26
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多