加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

基于动态位置的本地通知Swift iOS

发布时间:2020-12-14 05:37:02 所属栏目:百科 来源:网络整理
导读:我试图在用户接近停车时为公交车提供一些到达时间,我已经通过发送基本的本地通知进行测试,以确保正确地触发了这些地区,并且我也测试过我的网络服务电话,以确保它正常工作. 但是,我很难获取信息,然后发送通知. 这是我的代码: var bgTask: UIBackgroundTaskId
我试图在用户接近停车时为公交车提供一些到达时间,我已经通过发送基本的本地通知进行测试,以确保正确地触发了这些地区,并且我也测试过我的网络服务电话,以确保它正常工作.

但是,我很难获取信息,然后发送通知.

这是我的代码:

var bgTask: UIBackgroundTaskIdentifier = UIBackgroundTaskIdentifier()

    bgTask = UIApplication.shared().beginBackgroundTask {

        self.webService?.getStopEstimates(routeStopIds: stopRouteIdSet,routeNameDict: routeNameDict,completion: { (result) in

            if result == "error" {
                return
            }

            let notification = UILocalNotification()
            notification.fireDate = Date(timeIntervalSinceNow: 1)
            notification.alertTitle = region.identifier + " Stop Details"
            notification.alertBody = result
            notification.soundName = UILocalNotificationDefaultSoundName
            UIApplication.shared().scheduleLocalNotification(notification)
        })

        UIApplication.shared().endBackgroundTask(bgTask)
    }

任何人看到为什么它可能不发送?我启用了后台抓取和定位服务.这是在doEnterRegion里面

我做了同样的事情(当用户接近一个有折扣的商店,他/她将被通知).

首先,我建议您下载所有数据并将其保存在Core Data或SQLite中,如果是可选项.

第二个看看重要位置更改here.如果你正在移动,它将在每个500米的背景中更新你的位置,它将节省大量的电池而不是didUpdateLocation.

第三次使用SLC后,在每次调用时,从您的Core Data或SQLite中获取当前位置的20个最近的位置,并将其添加到监控中(使用Haversine计算与当前位置的所有点距离,然后获取最近的20点).每次SCL调用更新您监视的区域(如果保存数据离线不是一个选项,我建议您在这里的webservice发送请求.理想的情况是,您将发送您的位置到您的Web服务,它会回复返回最近的点,然后添加它们进行监控)

当didEnterRegion调用时,请确保您的数据已下载,然后创建本地通知.

如果您需要更多细节,请告诉我们

PS.请记住,如果使用大量资源,系统可能会终止您的应用程序(在后台).在这种情况下,您必须重新初始化拉取和显示数据所需的所有内容(网络请求,位置管理器等)您可以检测到AppDelegate的didFinisingLaunchingWithOptions中的位置事件重新启动了该应用程序:

if ([launchOptions objectForKey:UIApplicationLaunchOptionsLocationKey]) {}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读