2012-02-10 35 views
5

Tôi cần thêm các sự kiện liên lạc theo chương trình vào thiết bị iOS hệ thống rộng mà không cần sử dụng bẻ khóa; Làm thế nào để tôi làm điều này?Mô phỏng sự kiện cảm ứng rộng trên hệ điều hành iOS

Tốt hơn là tôi muốn sử dụng API riêng tư để thực hiện việc này trong ứng dụng ở chế độ nền. Tôi biết rằng việc này sẽ ngăn không cho ứng dụng của tôi có sẵn trên cửa hàng ứng dụng; tuy nhiên, đây là ứng dụng riêng tư nên không phải là vấn đề.

+0

@Nate bạn đã tìm thấy bất kỳ thay thế, bây giờ tại thời điểm iOS9, cho tất cả các API GSEvent tốt cũ đó không có sẵn nữa (kể từ iOS7 tôi đoán)? – JBA

+0

@JBA, cho đến nay, tôi không có. Tôi đã không nhìn * siêu cứng *. Nhưng, tôi đồng ý. Họ sẽ rất hữu ích để có một lần nữa. :( – Nate

+0

Cảm ơn bạn ... Vâng thực sự đó là một nỗi đau Tôi cũng đã tìm kiếm trong SpringboardServices mà không có nhiều may mắn ... – JBA

Trả lời

-1

Không cần bẻ khóa, không có cách nào thực sự để móc trình nhận dạng cử chỉ vào tất cả các chế độ xem của toàn bộ hệ thống. Trước hết, ứng dụng của bạn chạy trong nền không có khả năng thực thi mã này.

+0

Bạn có chắc chắn? Tôi đã xem xét API GSEvent riêng tư gần đây (https://github.com/rpetrich/iphoneheaders/blob/master/GraphicsServices/GSEvent.h) và có thể 'nhấn' nút bật và tắt trong khi ứng dụng của tôi ở chế độ nền, tôi không thể mô phỏng một lần chạm sử dụng GSEvent bất kể ứng dụng của tôi có chạy trên nền hay không (tuy nhiên tôi có thể cho tôi biết ví dụ về Accelerometer) – user293895

1

Có thể. Chính xác như thế nào bạn đã đề cập, bằng cách sử dụng GSEvents và gửi chúng đến cổng màu tím được đặt tên của aplication bạn đang cố gắng để kiểm soát/mô phỏng. Tất nhiên bạn cần GSEvent.h của KennyTM để thực hiện việc này. Tôi đã làm điều này cho iOS 4.3, chỉ bằng cách thay đổi một số giá trị mà Kenny đã có (như kGSHandInfoTypeTouchDown), nhưng bây giờ tôi đang cố gắng làm điều đó cho iOS 5 và nó không hoạt động, cho đến bây giờ.

EDIT: Nó hiện đang hoạt động cho iOS 5.1.

+0

Bạn có thể chỉ cho tôi một ví dụ về mã không? – user293895

+0

Tôi đề nghị bạn dịch mọi UIEvent mà ứng dụng của bạn nhận được thành GSEvent để phân tích. Bạn thậm chí có thể cố gắng để nhận được một GSEvent cho một liên lạc và sau đó gửi lại nó, sau đó bắt đầu xây dựng cấu trúc của riêng bạn và thay đổi các lĩnh vực cho phù hợp API của KennyTM là một khởi đầu tốt, và nó thực sự wor ks với iOS 4.3 (bạn chỉ cần điền vào các giá trị trường, nhưng như tôi đã nói một số là không đổi và không có lời giải thích nào, như PathProximity, đó là 2 cho các sự kiện TouchDown và 1 cho TouchUp. PathIndex luôn là 2, pathMajorRadious và pathPressure luôn 1.0, v.v.) –

+0

@JorgeAguirre Bạn có thể vui lòng cho tôi biết nó sẽ hoạt động như thế nào cho iOS 7? Đối với API GSEvent của iOS 7 đã không được chấp nhận. – Developer

3

Điều bạn cần làm trước tiên là tạo sự kiện bạn muốn và sau đó gửi chúng đến SpringBoard qua "cổng màu tím", ví dụ: cổng mach. Để mở rộng hệ thống, bạn phải chuyển tiếp chúng đến từng ứng dụng trên cổng. Điều đó có nghĩa là bạn cần phải thực sự làm những gì người quản lý cửa sổ thực hiện và xem ứng dụng nào đang hoạt động, màn hình bị khóa, v.v.

Có một số API khung công tác riêng tư hoạt động (IOSurface, GraphicServices, SpringBoardServices, v.v.) giúp bạn có được những thứ bạn cần.

Bạn sẽ phải tải các khung công tác riêng này vào thời gian chạy bằng cách sử dụng một cái gì đó như dlopen().

này là 100% nếu không có Jailbreak như iOS 6.1.4 (ATM hiện hành), nhưng bạn sẽ được tải các khuôn khổ riêng mà không được phép của táo cho AppStore;)

+0

Bạn có thể vui lòng cho tôi biết cách thức hoạt động của iOS 7 không? Đối với API GSEvent của iOS 7 đã không được chấp nhận – Developer

Các vấn đề liên quan