草庐IT

objective-c - OS X 在后台打开 URL 方案

我目前正在编写一个实现自定义URL方案的OSX应用程序。按照设计,我的应用程序会相对频繁地(大约每2-4分钟)打开来自外部源的URL。但是,这需要在后台完成(即没有GUI或事件应用程序的切换)。这是一个状态栏应用程序(Applicationisagent(UIElement)设置为YES),并且ApplicationUIPresentationMode设置为全部抑制。虽然这些确实阻止了在打开相关URL时显示任何UI元素,但当时处于事件状态的任何应用程序窗口都会失去焦点。显然,每隔几分钟就不能专注于您正在工作的任何窗口,那么在打开自定义URL时如何防止这种行为?

xcode - 有没有办法让 Apple Watch 每天在后台运行一次代码?

我想向我的Watch应用程序添加一个复杂功能,以显示从互联网检索到的信息。此信息每天都在变化。我需要找到一种无需每天打开Watch应用程序或iOS应用程序即可检索此信息的方法。我知道在后台运行代码在iOS上是不允许的,但这似乎是在Watch上运行Complications的基本必需品,所以也许它在WatchOS上是允许的?有人知道怎么做吗? 最佳答案 查看ComplicationController中的getNextRequestedUpdateDateWithHandler:。它允许您在下次希望唤醒复杂功能代码时请求。它会在您请求

ios - 当应用程序在后台时发送 http 请求

我有一个每60秒发送一次HTTP请求的功能,但是当我锁定手机时它会停止。那么,有没有办法在手机被锁定时发送HTTP请求呢?我试过在funcapplication(application:UIApplication,performFetchWithCompletionHandlercompletionHandler:(UIBackgroundFetchResult)->Void)但是没用。 最佳答案 这段代码对我来说似乎是正确的...只要您在AppDelegate的applicationDidEnterBackground函数中添加代

ios - 即使应用程序在后台运行或根本不运行,我如何安排一个将执行的函数(以执行 API 调用)。

所以我们的应用程序使用UILocalNotifications,它被安排在每天早上9点。此消息的内容取决于API调用,我想在安排通知前5分钟进行调用。因此,例如,通知可能被设置为提醒用户执行任务x,但用户有可能已经完成了任务x(通过在线门户而不是应用程序),在这种情况下我们想告诉他们改为执行任务Y。由于各种原因,我们尚未设置推送通知服务器,但很快就会设置,因此这是用于测试目的的临时解决方案。所以我的问题是:我如何安排一个API调用来根据响应替换即时通知消息,即使应用程序在后台,甚至关闭?谢谢! 最佳答案 您必须使用静默推送通知。在有

ios - 从远程通知获取在后台运行的方法

我正在使用Firebase消息传递(通知)向iOS用户发送推送提醒。对于我的应用程序,这是一个待办事项应用程序,我使用的是Swift3。当用户收到推送通知时,我希望他们能够直接从推送通知完成任务。一切都很好。用户得到推送。当他们使用3d-touch时,他们会看到“完成按钮”。当点击“完成按钮”时,在后台触发应用程序中的didReceive响应方法。现在问题来了,在那个方法中,我使用了一个闭包,然后在该闭包中使用了一个闭包。由于某种原因,代码的第一部分在用户未打开应用程序的情况下在后台运行,但最后一部分仅在用户再次打开应用程序时运行(见下文)。这是为什么?这是我的代码:funcuserN

ios - 当前台应用程序发生内存不足崩溃时,调用 App Delegate 生命周期的哪一部分?

尝试调试用户遇到的崩溃,但并未显示在我们的崩溃报告工具或日志文件中。有一种理论可能是由于内存压力,但不确定如果iOS在前台终止应用程序,是否会调用applicationWillTerminate。我们在applicationWillTerminate中写入我们的日志文件,但显然在这次崩溃期间没有调用它。 最佳答案 如果应用程序崩溃,则不会可靠地调用任何生命周期方法。相反,您可以创建并注册一个在这种情况下被调用的全局异常处理程序:funcexceptionHandler(exception:NSException){print("**

ios - 如果我们在后台队列中调用 main.async 代码什么时候执行?

在后台线程上调用main.async以运行应由主线程处理的UI代码似乎是一种标准做法。当我们在后台线程上调用main.async时,主线程正忙于处理未使用任何GCD调用的普通代码(我假设这等同于main.sync?)这段代码什么时候执行?是先执行常规的main.sync代码还是先执行我们的main.async代码,这是如何工作的?单个队列如何同时执行异步和同步代码?Playground示例:(打印了A数组但未打印B数组)leta="a"letb="b"letaArray=[a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a

ios - Swift 1.2 解析保存在后台错误

我最近切换到Swift1.2并注意到它破坏了我的少量Parse功能。我仍在努力思考为什么版本更新会破坏这些原本可以工作的方法,以及我应该如何解决它们。我看到的两个错误都在同一个.saveInBackgroundWithBlock函数中。第一个错误出现在我的.saveInBackgroundWithBlock行:函数签名“(Bool,NSError!)->Void”与预期类型“@objc_block(Bool,NSError!)->Void”不兼容第二个位于出现注册错误时发生的else语句中,NSString{error=errorString}“NSString”不能隐式转换为“Str

swift - CLLocationManager didUpdateLocations 仅在后台模式下被调用两次

我想使用CLLocationManager在前台和后台更新用户当前的GPS位置。我在info.plist和目标功能下注册了使用位置背景模式的应用程序。在iPhone模拟器上一切正常,但在我的真实iPhone上,当应用程序处于后台时,函数didUpdateLocations只会被调用两次。我在Xcode中使用模拟GPS数据的gpx文件。当应用程序处于前台时它会工作,我可以在MapView上看到进度。这是来self的ViewController的代码:lazyvarlocationManager:CLLocationManager!={letmanager=CLLocationManage

ios - 在后台获取核心数据对象和 tableView.reloadData()

我想在后台加载CoreData对象,完成后应该重新加载TableView。下面的代码给出了一个空的tableView:classViewController:UIViewController{varfetchRequest:NSFetchRequest!varvenue:[Venue]=[]varcoreDataStack:CoreDataStack!overridefuncviewDidLoad(){super.viewDidLoad()fetchRequest=Venue.fetchRequest()coreDataStack.storeContainer.performBackg