UIAutomation:当应用程序处于后台时更改位置

我正在研究UIAutomation。 我需要在应用程序处于后台时更改位置。 我试过以下代码行:

var target = UIATarget.localTarget(); UIATarget.localTarget().deactivateAppForDuration(30); target.setLocation({longitude:77.50, latitude:12.50}); 

但是在应用程序到达前台之前,不会调用target.setLocation

任何人都可以告诉我如何在应用程序处于后台时更改位置。

不幸的是,UIAutomation只能自动连接它所附带的应用程序。 当应用程序不是“活动”时,它没有什么可谈的。 使用lockForDurationdeactivateAppForDuration等会阻止对系统的控制,从而使您的应用处于非活动状态。 当应用程序处于该状态时,UIAutomation无法再发送任何消息。 我建议提交雷达,要求在应用程序处于非活动状态时设置位置。

当我在过去遇到类似的问题时,我不得不使用AppleScript来改变模拟器的位置以获得我需要的效果。

您已经更新了注释,表明您正在测试导航应用程序。 好! 那有点不同。 如果您实际上不需要UIAutomation,并且只是尝试将其用作设置位置的方法:

Xcode允许您使用GPX文件模拟路线,这可以与仪器一起使用。

  1. 找到一个合适的GPX文件,最好是一个轨道。
  2. 转到您的项目的计划。 在“运行”操作中,转到“选项”选项卡。 选中“允许位置模拟”并使用下拉列表添加GPX。
  3. 从Xcode运行您的应用程序。
  4. 利润!

我认为你可以在后台使用更新部分作为服务。 虽然我是这个世界的新人。 你可以试试这个。 谢谢

请参阅此链接中的后台获取部分。 希望对你有帮助

如果您希望您的应用在后台执行方法,则必须在应用的function选项卡中启用“后台模式”。 你必须选择一种模式,例如“位置更新”。 但要小心:苹果限制允许在后台运行什么类型的应用程序。 “位置更新”模式仅适用于导航应用等应用。 有关详细信息,请参阅app store指南

如果您没有将“后台模式”设置为是,那么您的应用程序在转到后台后有5秒钟完成执行任务,然后所有任务都将停止并且从未被调用,直到您再次进入前台。

有关后台提取,请参阅http://code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch–mobile-20520 。 我希望这可以帮助你。