在iOS上模拟系统范围内的触摸事件

时间:2012-02-10 00:29:40

标签: iphone ios iphone-privateapi

我需要以编程方式将触摸事件添加到iOS设备系统范围,而不使用越狱;我该怎么做?

我希望使用私有API在后台运行应用程序。我知道这样做可以防止我的应用在应用商店中的可用性;然而,这是一个私人应用程序,所以它不是一个问题。

3 个答案:

答案 0 :(得分:4)

您需要做的是首先创建您想要的事件,然后通过“紫色端口”将它们发送到SpringBoard,例如。马赫港口。要使它们在系统范围内,您必须通过端口将它们转发到每个应用程序。这意味着您需要实际执行windowmanager所做的事情并查看哪个应用程序处于活动状态,屏幕锁定等等。

有一个完整的私有框架API(IOSurface,GraphicServices,SpringBoardServices等)可以为您提供所需的部分。

您必须在运行时使用类似dlopen()的方法加载这些私有框架。

从iOS 6.1.4(当前的ATM)开始,这是100%可能没有越狱,但你将加载苹果公司不允许私有框架用于AppStore;)

答案 1 :(得分:1)

有可能。正是你提到的,使用GSEvents并将它们发送到你试图控制/模拟的应用程序的紫色命名端口。当然,你需要KennyTM的GSEvent.h来实现这一目标。 我已经为iOS 4.3做了这个,只是改变了Kenny所拥有的一些值(比如kGSHandInfoTypeTouchDown),但现在我正在尝试为iOS 5做这个,直到现在它还没有用。

编辑:它现在适用于iOS 5.1。

答案 2 :(得分:-1)

没有越狱,没有真正的方法将手势识别器挂钩到整个系统的所有视图中。首先,在后台运行的应用程序无法执行此代码。