我目前正在为一个iPad应用程序开发一个“设备内”(不是模拟器)监控系统。系统应该能够执行以下操作:
-User输入模拟:模拟用户输入:点击、拖动、键盘。
-Information回想:输入后获取文本值和结果。
此信息稍后将报告给事件管理服务器。通过使用KIF软件https://github.com/square/KIF中的一些代码和一些自己开发的代码,我已经在一个应用程序中处理了这两点。我使用UIView对象的accessibleName属性来获取它们的指针并将人工事件发送到[UIApplication sharedApplication sendEvent:]方法。
事情是这样的:我需要将这些事件从我所在的app#1发送到app#2。(为了保持监视的独立性,也不能将所有代码嵌入到app#2中)。我使用[UIApplication sharedApplication openURL:]方法打开app#2。https://developer.apple.com/library/IOs/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072-CH7-SW18
问题是,我无法将事件从app#1发送到app#2,因为我似乎无法在app#1代码中获得指向app#2的UIApplication sharedApplication对象的指针。
进程之间的共享内存通信是很棒的,但根据我发现的信息,URL消息传递方案似乎是iOS中应用程序(或进程)之间唯一的通信方式。iOS中也不存在NSConnection类。我也读过一些关于Mach端口和POSIX文件描述符的内容,但它们看起来相当复杂,我不知道它们是否能提供帮助。
我甚至尝试将app#2 UIApplication sharedApplication实例的指针值作为URL消息中的字符串参数发送,然后在app#1中将字符串转换回指针,但得到了一个EXC_BAD_ACCESS。我认为指针地址在两个进程中的含义并不相同。也许每个进程都有自己的“偏移量”?任何帮助都将不胜感激。
发布于 2012-03-01 21:47:21
首先,我要澄清的是,如果没有私有API,你想要做的事情是不可能的。每个应用程序都被沙箱保护,您不能(直接)访问其他应用程序。我认为你的问题真的很大。
在iOS中运行的每个应用程序就像是一个独立的小生态系统,当用户按下“主页”按钮时就会结束(除非你声明了一些后台服务,如VOIP、本地化或音频播放器)。一旦应用程序被关闭,你仍然可以运行的唯一事情就是一个不应该超过10分钟的进程。这是为了防止过度使用后台任务,即使在这里,该应用程序也无法从其他应用程序访问。
我认为唯一的方法是搜索私有API,希望其他人已经找到了在两个应用程序之间(直接)创建数据流的方法。
https://stackoverflow.com/questions/9516506
复制相似问题