gpt4 book ai didi

iOS SpringBoardServices 获取 UIApplication

转载 作者:可可西里 更新时间:2023-11-01 04:44:18 25 4
gpt4 key购买 nike

使用 otool -tV SpringBoardServices 命令,我能够在 SpringBoardServices 框架二进制文件中获取 C 函数..

我可以看到 SBFrontmostApplicationDisplayIdentifier,它会给我最重要的应用程序的 ID。这个id可以用来获取UIApplication吗?最终我想获得最顶层的 View ,它正在消耗触摸事件及其类型,如 UIButton 等?

感谢任何帮助。

最佳答案

这不是真正的答案,而只是对这个问题的一些思考。

C 与 Objective C API 的对比

  • 一般来说,有两种类型的 API:C API(如 SBFrontmostApplicationDisplayIdentifier)和 objective-c API。

  • 我相信所有 C API 都只适用于基本类型(字符串、整数等)。我没有看到任何返回 Objective C 对象的 C API。

  • SBFrontmostApplicationDisplayIdentifier 返回 id(它只是一个字符串)。作为首选项应用程序的示例“com.apple.Preferences”。

  • 我相信您在寻找返回任何类型对象的 Objective C API 时会有更好的运气

进程间通信

  • 没有简单的方法来在进程之间传输对象(尤其是指向其他对象的复杂对象,它指向其他对象等等)。如果您考虑一下,UIApplication 对象可以引用应用程序的一半。唯一的方法是在一端序列化所有内容并在另一端反序列化。

  • 考虑到与对象序列化相关的问题,大多数需要进行进程间通信的 API 将具有最关键信息的简单结构传递给彼此。我在对 iOS 二进制文件进行逆向工程时看到了这种模式。

UI应用程序

  • 我猜 UIApplication 对象永远不会离开进程空间。实际上,Springboard 中 SBApplication 类(继承自 SBDisplay)的存在是对此的一种间接证实。

想法

  • 尝试查看 BackboardService

  • 尝试检查 SpringboardService 中的所有 API

  • 我会努力寻找与显示相关的任何东西。

附言我很想看到解决方案,因为我不知道有任何 API 可以查看第 3 方应用程序 UI。

关于iOS SpringBoardServices 获取 UIApplication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16413250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com