gpt4 book ai didi

swift - 当用户离开该区域超过 15 分钟时,尝试将 iBeacon 应用程序发布到闲置房间

转载 作者:行者123 更新时间:2023-11-28 07:06:20 25 4
gpt4 key购买 nike

我一直在开发一个 iBeacon 应用程序,我正在努力让它在用户离开该区域超过 15 分钟时发布到闲置房间。我尝试启动一个计时器,我尝试使用一个开始时间,然后是一个结束时间(这是有效的,但如果用户返回到信标,我无法停止循环)。我有所有的 slack api 代码,我只需要帮助计算某人离开信标区域多长时间的代码,如果超过 15 分钟,请执行一些代码。这是代码..它通过循环,但如果用户返回到一个区域,它不会拾取它。

func locationManager(manager: CLLocationManager!,
didExitRegion region: CLRegion!) {
outOfRegion = true


let start = NSDate(); // <<<<<<<<<< Start time
let viewController:ViewController = window!.rootViewController as! ViewController
var names = viewController.theName
NSLog("You exited the region")


sendLocalNotificationWithMessage("You exited the region", playSound: true)

println(locationManager)
while (outOfRegion) {


println(outOfRegion)

let end = NSDate(); // <<<<<<<<<< end time

let timeInterval: Double = end.timeIntervalSinceDate(start); // <<<<< Difference in seconds (double)


println("Time to evaluate problem: \(timeInterval) seconds");
manager.startMonitoringForRegion(region as! CLBeaconRegion)
manager.startUpdatingLocation()

if (timeInterval > 60) {

//posting to slack API
var channel = "#botspam"
let username = "spyBot"
let text = names + " has left the office"
let image = ":eyes:"
//payload array
let str = "payload={\"channel\": \"\(channel)\", \"username\": \"\(username)\", \"text\": \"\(text)\", \"icon_emoji\": \"\(image)\"}"

// converting to JSON
let strData = (str as NSString).dataUsingEncoding(NSUTF8StringEncoding)
let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData

//Fusionary web hook
let url = NSURL(string: "///////")
var request = NSMutableURLRequest(URL: url!, cachePolicy: cachePolicy, timeoutInterval: 2.0)

request.HTTPMethod = "POST"
request.HTTPBody = strData
//checking to see if array is valid JSON
var error : NSError? = nil
if let data = NSURLConnection.sendSynchronousRequest(request, returningResponse: nil, error: &error) {
let results = NSString(data:data, encoding:NSUTF8StringEncoding)
println(results)
}
else
{
println("data invalid")
println(error)
}
break;

}
println("bye")

}



}

最佳答案

不确定您是否能够仅通过 iOS 应用程序实现此目的 - iOS 严格限制应用程序的后台处理。除非你是一个音乐或位置应用程序并且只需要在后台持续运行,否则你只会在某些事件发生时被授予后台执行时间——例如进入信标范围。据我所知,没有办法让 iOS 应用“在 15 分钟内”唤醒,所以我很想知道您所说的“正常工作”到底是什么意思。

如果我们考虑向堆栈添加更多层,我会尝试实现如下用例:

  1. 用户退出信标区域,应用程序被唤醒 (didExitRegion) 并向外部服务器发送一条消息:用户 X 在 [timestamp here] 退出该区域.
  2. 服务器安排在收到时间戳后 15 分钟内发生的操作,以发布到 Slack。
  3. 如果用户在时间用完之前返回该区域,应用程序将被唤醒 (didEnterRegion) 并向服务器发送请求以取消发布到 Slack。
  4. 如果用户在时间用完之前没有返回该区域,服务器会向 Slack 发送消息。

关于swift - 当用户离开该区域超过 15 分钟时,尝试将 iBeacon 应用程序发布到闲置房间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30466928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com