Skip to main content
Glama
EventTarget.swift1.26 kB
import Foundation import XCTest @MainActor struct EventTarget { let eventTarget: NSObject init() { let application = RunningApp.getForegroundApp() ?? XCUIApplication(bundleIdentifier: RunningApp.springboardBundleId) eventTarget = application.children(matching: .any).firstMatch .perform(NSSelectorFromString("eventTarget")) .takeUnretainedValue() as! NSObject } typealias EventBuilder = @convention(block) () -> EventRecord func dispatchEvent(description: String, builder: EventBuilder) async throws { let selector = NSSelectorFromString("dispatchEventWithDescription:eventBuilder:error:") let imp = eventTarget.method(for: selector) typealias EventBuilderObjc = @convention(block) () -> NSObject typealias Method = @convention(c) (NSObject, Selector, String, EventBuilderObjc, AutoreleasingUnsafeMutablePointer<NSError?>) -> Bool var error: NSError? let method = unsafeBitCast(imp, to: Method.self) _ = method( eventTarget, selector, description, { builder().eventRecord }, &error ) if let error = error { throw error } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mobile-dev-inc/Maestro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server