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

时间:2014-03-12 07:37:07

标签: ios ui-automation ios-ui-automation

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

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

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

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

5 个答案:

答案 0 :(得分:5)

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

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

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

请参阅此link中的后台获取部分。希望这会对你有所帮助

答案 3 :(得分:1)

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

如果你没有设置"背景模式"是的,你的应用程序在转到后台后有5秒钟完成执行任务,然后所有任务都将停止,直到你再次来到前台时才会被调用。

答案 4 :(得分:1)

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