我正在研究UIAutomation。我需要在应用程序处于后台时更改位置。我试过以下代码行:
var target = UIATarget.localTarget();
UIATarget.localTarget().deactivateAppForDuration(30);
target.setLocation({longitude:77.50, latitude:12.50});
但是在应用程序到达前台之前,target.setLocation
才会被调用。
任何人都可以告诉我如何在应用程序处于后台时更改位置。
答案 0 :(得分:5)
不幸的是,UIAutomation只能自动连接它所附带的应用程序。当应用程序不是“活动”时,它没有什么可谈的。使用lockForDuration
,deactivateAppForDuration
等会阻止对系统的控制,从而使您的应用处于非活动状态。当应用程序处于该状态时,UIAutomation无法再发送任何消息。
我建议提交雷达,要求在应用程序处于非活动状态时设置位置。
当我遇到类似的问题时,我不得不使用AppleScript来改变模拟器的位置以获得我需要的效果。
您已更新评论,表明您正在测试导航应用程序。好!那有点不同。如果您实际上不需要UIAutomation,并且只是尝试将其用作设置位置的方法:
Xcode允许您使用GPX文件模拟路线,这可以与仪器一起使用。
答案 1 :(得分:1)
我认为你可以在后台使用更新部分作为服务。虽然我是这个世界的新人。你可以试试这个。感谢
答案 2 :(得分:1)
请参阅此link中的后台获取部分。希望这会对你有所帮助
答案 3 :(得分:1)
如果您希望您的应用在后台执行方法,则必须启用"后台模式"在您的应用的功能选项卡中。你必须选择一种模式,例如"位置更新"。但要小心:苹果限制允许在后台运行什么类型的应用程序。 "位置更新"模式仅适用于导航应用等应用。有关详细信息,请参阅应用商店指南。
如果你没有设置"背景模式"是的,你的应用程序在转到后台后有5秒钟完成执行任务,然后所有任务都将停止,直到你再次来到前台时才会被调用。
答案 4 :(得分:1)
请参阅http://code.tutsplus.com/tutorials/ios-7-sdk-working-with-background-fetch--mobile-20520以获取后台提取。我希望这会对你有所帮助。