2012-02-10 36 views
5

我需要以編程方式將觸摸事件添加到iOS設備系統範圍而不使用越獄;我該怎麼做呢?在iOS上模擬系統寬觸摸事件

最好我想使用一個私人API來做到這一點在後臺運行的應用程序。我知道這樣做會阻止我的應用在應用商店中的可用性;這是一個私人應用程序,所以它不是一個問題。

+0

@Nate你有沒有發現任何替代,現在在iOS9時間,對於所有那些舊的好的GSEvent API沒有更多的可用(我想iOS7以來)? – JBA 2016-05-10 10:41:32

+0

@JBA,迄今爲止,我還沒有。我沒看*超級難*。但是,我同意。他們會再次有用。 :( – Nate 2016-05-10 21:16:12

+0

謝謝......是的,這確實很痛苦 我也一直在尋找SpringboardServices,沒有太多的運氣...... – JBA 2016-05-11 06:29:42

回答

-1

沒有越獄,沒有真正的方法將手勢識別器掛接到整個系統的所有視圖中。首先,您在後臺運行的應用程序無法執行此代碼。

+0

Are you sure?我一直在尋找GSEvent私人API最近(https:///github.com/rpetrich/iphoneheaders/blob/master/GraphicsServices/GSEvent.h),並且能夠在應用程序處於後臺時開啓和關閉鎖定按鈕,但我無法模擬觸摸使用GSEvent,無論我的應用程序是否在後臺運行(但我可以做Accelerometer事件)。 – user293895 2012-02-14 23:58:45

1

這是可能的。具體是如何提到的,使用GSEvents並將它們發送到您試圖控制/模擬的應用程序的紫色命名端口。當然,你需要KennyTM的GSEvent.h來完成這個任務。 我已經爲iOS 4.3做了這個,只是通過改變Kenny的一些值(比如kGSHandInfoTypeTouchDown),但現在我正在嘗試爲iOS 5做這件事,直到現在它還沒有工作。

編輯:它現在正在爲iOS 5.1工作。

+0

您能否告訴我一個帶有代碼的示例? – user293895 2012-04-30 14:43:59

+0

我建議您將應用程序接收的每個UIEvent轉換爲GSEvent進行分析。你甚至可以嘗試接收GSEvent進行觸摸然後重新發送,然後開始構建自己的結構並相應地改變字段。KennyTM的API是一個好的開始,它實際上ks與iOS 4.3(你只需填寫字段值,但像我說的一些是常量,並沒有任何解釋,如PathProximity,這是TouchDown事件2和TouchUp 1。 PathIndex始終爲2,pathMajorRadious和pathPressure始終爲1.0等) – 2012-05-07 08:06:29

+0

@JorgeAguirre您能否讓我知道它將如何在iOS 7上運行?對於iOS 7,GSEvent API已被棄用。 – Developer 2015-05-21 12:17:30

3

你需要做的是首先創建你想要的事件,然後通過「紫色端口」發送給SpringBoard。馬赫港口。要使它們成爲系統範圍,您必須通過端口將它們轉發給每個應用程序。這意味着你需要真正做窗口管理者所做的事情,並查看哪個應用程序處於活動狀態,屏幕鎖定等。

有一些可以工作的私有框架API(IOSurface,GraphicServices,SpringBoardServices等)給你你需要的部分。

您將不得不在運行時使用類似dlopen()的方式加載這些私有框架。

這是100%的可能不越獄的iOS爲6.1.4(當前ATM)的,但你會加載未通過蘋果AppStore的爲允許私人框架;)

+0

你可以讓我知道它如何在iOS 7上工作嗎?對於iOS 7,GSEvent API已被棄用 – Developer 2015-05-21 12:17:57