系统:在我的应用程序中,我正在使用地理围栏(监视区域)。每当用户进入或退出监视区域或区域时,如果该应用程序在后台甚至终止,该应用程序都会显示本地通知。这工作得很好。该应用程序能够显示本地通知。
现在,我还需要通过HTTP POST调用向应用程序的后端服务器提交此信息(如果用户位于受监视区域之内或之外)。
问题::应用程序在LocationManager的委托方法中进行API调用,但有时可以,有时不能。如果应用程序未处于前台状态,则似乎代码执行会随机停止。
代码示例
// MARK: - Location Manager Delegate
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
if region is CLCircularRegion {
showLocalNotification(forRegion: region)// Works
updateUserEntryAPICall(region: region) // Sometimes works
}
}
func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {
if region is CLCircularRegion {
showLocalNotification(forRegion: region) // Works
updateUserExitAPICall(region: region) // sometime works
}
}
我没有在iOS中打开后台模式功能。该应用仍然可以显示本地通知。我是否需要将其打开才能进行网络通话?
请帮助。
答案 0 :(得分:0)
这似乎是您使用常规的URLSession
来发出API请求。您需要确保正在处理后台运行的会话中执行此操作,例如像这样初始化它:
let session = URLSession(configuration: .background(withIdentifier: "foo"))