gpt4 book ai didi

ios - App在后台时是否可以在locationManager didEnterRegion方法中调用WebService?如何赚取额外的时间来完成 WS 电话?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:18 25 4
gpt4 key购买 nike

我已经使用 startMonitoringForRegion 方法设置了一个地理围栏和监控。当成功进入和退出地理围栏区域时,我能够获得事件。我想做的是,当我进入某个地理围栏时,我想根据该位置数据进行 Web 服务调用并显示 Web 服务结果的本地通知 [当应用程序处于后台/被杀死时]。

beginBackgroundTaskWithName 方法有帮助吗?

简而言之:

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
// Make a Web Service Call to fetch data even
// **when App is killed/ in background mode.**
}
  1. 据我所知,本地理围栏被破坏时,应用程序进入
    后台模式。不确定多长时间。
  2. 即使应用程序被杀死/在后台,我也可以发送本地通知本地理围栏被破坏时。现在如果我想制作网络服务怎么办当应用程序不在时调用并显示它的结果作为通知前景。

实现此目标的最佳方法是什么?任何帮助表示赞赏。提前致谢。

最佳答案

发现非常有用的东西,每个应用程序都有一些额外的时间,iOS 提供在应用程序进入挂起模式之前解决某些未完成的业务。对于 iOS 7,时间已减少到大约 180 秒(3 分钟);早些时候大约是 600 秒(10 分钟)。

为了赢得额外的时间,我们需要初始化 UIBackgroundTaskIdentifier

-(void) beginBackgroundUploadTask
{
if(self.backgroundTask != UIBackgroundTaskInvalid)
{
[self endBackgroundUploadTask];
}

self.backgroundTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{

[self endBackgroundUploadTask];

}];
}

一旦后台任务超过规定的时间,我们就应该让后台任务失效并结束。

-(void) endBackgroundUploadTask
{
[[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask ];
self. backgroundTask = UIBackgroundTaskInvalid;
}

关于ios - App在后台时是否可以在locationManager didEnterRegion方法中调用WebService?如何赚取额外的时间来完成 WS 电话?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34041867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com