首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在geofence didEnterRegion/didExitRegion通知后下载BG NW

如何在geofence didEnterRegion/didExitRegion通知后下载BG NW
EN

Stack Overflow用户
提问于 2015-05-27 13:41:25
回答 1查看 218关注 0票数 3

我正在为客户机开发客户机/服务器应用程序,客户端是iOS设备。

一个客户端模块是为旅行销售人员准备的。

我的客户希望销售人员的应用程序在销售人员离开办公室和销售人员返回办公室时自动下载它的本地数据库。

我使用位置管理器的startMonitoringForRegion方法设置地理位置,并在启动时查找UIApplicationLaunchOptionsLocationKey,以及从后台查找对位置管理器locationManager:didEnterRegion/locationManager:didExitRegion方法的调用。

我的问题是,如何要求系统允许我有时间进行网络连接并下载新的数据,以响应UIApplicationLaunchOptionsLocationKey应用程序的启动或对locationManager:didEnterRegion/locationManager:didExitRegion的后台调用。

没有一个背景模式键(UIBackgroundModes)看起来合适。

我不需要location键,因为我不需要实时位置信息,只需要geofence输入/退出消息。fetch键也不是我所需要的,因为这会导致系统在选择的时候在后台唤醒我的应用程序。

是否必须设置一个后台模式键才能进行beginBackgroundTaskWithExpirationHandler调用?

我想我应该做的是在我的beginBackgroundTaskWithExpirationHandlerlocationManager:didEnterRegion/locationManager:didExitRegion方法中提交我的网络请求。系统允许我在不设置UIBackgroundModes密钥的情况下这样做吗?

如果我已经在后台运行,我可以打个电话给beginBackgroundTaskWithExpirationHandler吗?(如果应用程序正在运行,而不是最前端,则会出现一个locationManager:didEnterRegionlocationManager:didExitRegion调用。)我的目标是要求有足够的背景时间来处理我的网络下载,并将数据保存到本地数据库。

做过这种事的人的任何指导都会有很大的帮助。文档非常模糊,通过尝试和错误解决如何使用背景API可能会很费时。

我在Swift中开发这个应用程序,虽然我是一个长期的目标-C开发人员。我很乐意把目标C翻译成Swift,或者根据需要将目标C和Swift混合,所以这两种语言中的例子都是有用的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 14:33:45

从后台调用beginBackgroundTaskWithExpirationHandler是可以的。从iOS8开始,这个调用将把您的运行时间从10秒延长到180秒。

请记住,您需要始终请求位置服务的授权,这是运行区域监视所必需的。

我建议你使用背景定位键。我忘了在我的一个应用程序中设置它,它仍然在接收区域进入/退出事件。然而,

-随着iOS的轻微升级,行为可能会发生变化,而且

-应用程序可能会被苹果拒绝

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30484270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档