1

系统:在我的应用程序中,我使用地理围栏(监控区域)。每当用户进入或离开受监控的区域或区域时,如果应用程序处于后台甚至终止状态,应用程序都会显示本地通知。这工作得很好。该应用程序能够显示本地通知。

现在我还需要通过 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 中打开后台模式功能。尽管如此,该应用程序仍然能够显示本地通知。我需要打开它才能进行网络通话吗?

在此处输入图像描述

请帮忙。

4

1 回答 1

0

这看起来像您正在使用常规URLSession来发出您的 API 请求。您需要确保您在处理后台运行的会话上执行此操作,例如通过像这样初始化它:

let session = URLSession(configuration: .background(withIdentifier: "foo"))
于 2018-12-31T12:01:14.827 回答