在背景中使用应用程序输入IBEACON区域,并在没有通知的情况下请求URL



我已经在搜索了很多搜索和google来尝试找到答案,但是我无法将所有拼图的所有部分都放在一起,所以任何帮助/指针很棒。

我想构建一个进入iBeacon区域时检查Web服务的应用程序。简单示例用例就是这样:

  1. 用户走进一个配备iBeacon的商店,并在背景中使用应用程序

  2. 而不是通知用户,该应用程序向Web服务器提出请求,以检查用户ID是否是成员(已授予该应用程序的权限,将用户ID发送给服务器,用户)。

3a。服务器发送回" True"响应

4a。应用发送"我们今天有特别成员促销"通知锁定屏幕。

3b。服务器发送回" false"响应

4b。应用保持沉默(没有向用户通知)

fyi这个答案似乎表明可以在后台发送URL请求:在后台运行URL请求

您已经确定了您需要做的一切。

调用CLLocationManagerDelegatedidEnterRegion:方法时,您可以启动背景任务,然后启动网络请求。收到答复后,您可以在必要时发送本地通知,然后结束背景任务。

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
{
    // If not already performing a background task for this region...
    UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
        [[UIApplication sharedApplication] endBackgroundTask:self.backgroundTask];
        self.backgroundTask = UIBackgroundTaskInvalid;
    }];
    // perform network request - if successful, display notification. when finished, end background task
}

尽管我应该注意,我实际上不会将背景任务管理和Web请求代码直接放在我的didEnterRegion:方法中。我将有一个单独的Web API类,可以执行请求,然后从didEnterRegion:中进行呼叫。

这也可能会有所帮助(简短的答案是'是',但您的逻辑必须在5秒内完成):https://apple.stackexchange.com/questions/questions/174787/can-ibeacon-range-grigion-Monitoring-trigger-dynamic-data-notification/174873#174873

最新更新