导入 ChatKit(即私有框架)或以某种方式使用 CKDBMessage

2024-01-06

首先 - 我知道私有框架/API 不会让我进入 AppStore,这仅供私人使用/研究。

我无法编译我的项目ChatKit.framework.

基本上我需要以某种方式初始化CKDBMessage对象并从中获取东西。

The first我尝试的方法是能够这样调用:

    CKDBMessage* msg = [[CKDBMessage alloc] initWithRecordID:lastID];
    NSLog(@"GOT SMS: %@", msg.text);

我无法使用这些解决方案的任何组合来编译它:

  • 只需简单添加即可CKDBMessage.h到我的项目
  • 添加所有标题ChatKit.framework
  • 还添加ChatKit.framework文件本身

我有标题和框架文件Headers文件夹,我尝试添加任何/所有这些构建设置,无论是递归/非递归:

  • 框架搜索路径 ->$(PROJECT_DIR)/Headers
  • Header Search Paths ->
    • $(SRCROOT)/Headers/ChatKit.framework/Headers
    • $(SRCROOT)/Headers
  • User Header Search Paths ->
    • $(SRCROOT)/Headers
    • $(SRCROOT)/Headers/ChatKit.framework/Headers

始终搜索用户路径始终为“是”

The second我尝试的事情是在运行时做所有事情,这就是我所拥有的:

Class CKDBMessage = NSClassFromString(@"CKDBMessage");// objc_getClass("CKDBMessage");

SEL sel = @selector(initWithRecordID:);

NSMethodSignature *signature = [CKDBMessage methodSignatureForSelector:sel];
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
invocation.selector = sel;
[invocation setArgument:&lastID atIndex:2];
[invocation invoke];

NSObject * msgWeak = [CKDBMessage alloc];
[invocation getReturnValue:&msgWeak];
NSObject *msg = msgWeak;

NSString *text = [msg performSelector:@selector(text)];

NSLog(@"text: %@", text);

我在这里崩溃了invocationWithMethodSignature:因为 NSClassFromString 返回 nil 而不是类...

对这两种方法有什么想法吗?

这适用于未越狱的 iOS 8(.2),使用 Xcode 6


好吧,没有多少人看到这个,但为了我们的维基社区,我设法通过添加来解决这个问题CKDBMessage.h文件到我的项目(实际上我添加了所有的标题ChatKit但我认为没有必要),而不是我动态加载框架dlopen像这样:

dlopen("/System/Library/PrivateFrameworks/ChatKit.framework/ChatKit", RTLD_LAZY)

所以我的完整解决方案是:

dlopen("/System/Library/PrivateFrameworks/ChatKit.framework/ChatKit", RTLD_LAZY);

Class CKDBMessageClass = NSClassFromString(@"CKDBMessage");
CKDBMessage *msg = [[CKDBMessageClass alloc] initWithRecordID:lastID];

NSString *text = msg.text;
NSLog(@"text: %@", text);

获取最后一条消息的ID涉及到另一个框架:IMDPersistence:

//SomeFile.h
// ...
//declare the function:
static int (*IMDMessageRecordGetMessagesSequenceNumber)();

// SomeFile.m
// ...
//open IMDPersistence framework
void *libHandleIMD = dlopen("/System/Library/PrivateFrameworks/IMDPersistence.framework/IMDPersistence", RTLD_LAZY);

//make/get symbol from framework + name
IMDMessageRecordGetMessagesSequenceNumber = (int (*)())dlsym(libHandleIMD, "IMDMessageRecordGetMessagesSequenceNumber");

// get id of last SMS from symbol
int lastID = IMDMessageRecordGetMessagesSequenceNumber();

现在你可以使用lastID获取消息内容...

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导入 ChatKit(即私有框架)或以某种方式使用 CKDBMessage 的相关文章

  • 如何区分 iTunes Connect / Apple TestFlight 上的 STAGE 和 PRODUCTION 版本?

    阶段构建与阶段服务器的对话 阶段服务器与生产服务器尽可能相同 以用于测试目的 生产构建与生产服务器的通信 生产服务器存储真实的关键数据 这些构建本质上是针对同一应用程序的 但是 iTunes Connect 界面将向您显示以下内容 即构建由
  • iOS Swift 在后台下载大量小文件

    在我的应用程序中 我需要下载具有以下要求的文件 下载大量 例如 3000 个 小 PNG 文件 例如 5KB 逐个 如果应用程序在后台继续下载 如果图像下载失败 通常是因为互联网连接丢失 请等待 X 秒然后重试 如果失败Y次 则认为下载失败
  • 如何使用 Swift 将“完成”按钮添加到 iOS 中的数字键盘?

    它在默认键盘上工作得很好 但我无法让它在数字键盘上工作 有任何想法吗 据我所知 你不能在键盘部分添加 完成 按钮 你应该添加一个inputAccessoryView to the UITextField or UITextView 如果这就
  • iOS 如何触发视频退出全屏后继续播放?

    我正在构建一个在 iOS 中播放视频的网站 我有一个在 iOS 中工作的全屏按钮 但是退出全屏时视频会暂停 有谁知道一种方法可以强制视频在退出全屏时继续播放 或者如何设置一个侦听器来触发视频在退出全屏时自动播放 这是我的代码
  • 访问 google reader 的 Endpoints API 时出错

    我正在尝试在iPhone APP中实现google reader 到目前为止我已经成功收到了sid and auth 当我尝试使用以下命令调用 Endpoints API 时 问题就出现了GET 这是代码 ASIHTTPRequest re
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • iPhone SDK中的短信正文

    我需要从我的 iPhone 应用程序发送短信 SMS 的正文是以编程方式创建的 因此 当我点击按钮时 短信应用程序应该打开 并在其中预先输入我的消息 有人知道怎么做吗 需要帮忙 提前致谢 世宾 您无法设置短信正文 根据官方 SDK 您可以从
  • TTTAttributedLabel 可点击截断标记

    我有一个 TTTAttributedLabel 并为其指定了一个自定义属性截断标记 NSAttributedString atributedTruncationToken NSAttributedString alloc initWithS
  • 带有 allowedEditing 的 UIImagePickerController 不允许平移裁剪

    我在这里看到这个问题 UIImagePicker 允许编辑卡在中心 https stackoverflow com questions 12630155 uiimagepicker allowsediting stuck in center
  • UILabel 中的文本未垂直居中

    我使用以下代码创建了一个标签 func setupValueLabel valueLabel numberOfLines 1 valueLabel font UIFont name Avenir Black size 50 valueLab
  • 警告:所有应用程序都应包含armv7架构(当前archs =“arm64”)

    警告 所有应用程序都应包含 armv7 架构 当前架构 arm64 我读过其他关于早期版本的 XCode 的文章 但这些示例都没有帮助解决这个问题 看来无论我在设置中添加什么 如下所示 都会有帮助 我仍然遇到同样的错误 项目和目标设置看起来
  • 检查 Objective-C 块类型?

    这主要是出于好奇 我不太确定它的实际用途是什么 但就这样吧 由于块也是 Objective C 对象 是否可以检查它们的类型 也就是说 它是否响应isKindOfClass 消息以及如何使用该消息来处理块 我天真的以为事情大概是这样的 vo
  • 如何在 iOS 上固定证书的公钥

    在提高我们正在开发的 iOS 应用程序的安全性时 我们发现需要对服务器的 SSL 证书 全部或部分 进行 PIN 操作以防止中间人攻击 尽管有多种方法可以做到这一点 但当您搜索此内容时 我只找到了固定整个证书的示例 这种做法会带来一个问题
  • 在 UITableView 的部分标题文本下方添加一些边距

    我已经设计了标题文本的样式 func tableView tableView UITableView cellForRowAtIndexPath indexPath NSIndexPath gt UITableViewCell let ce
  • 带有文本字段的 iPhone AlertView

    我有一个UIAlertView with a UITextField在里面 我想输入mail id并提交于UIAlertView s ok按钮 但是UITextField in the UIAlertView没有回复 请帮助我 thankz
  • 领域:结果 和列表

    是否可以转换Results
  • WKWebview 中的 iCLoud 文档选择器关闭容器视图

    我有一个 WKWebview 加载基于 Web 的 UI 我希望用户能够从其 iCloud 文档上传文件 我已授予正确的权限 并且可以浏览 iCloud 文档 但是 当我选择文件或单击取消按钮时 文档选择器视图也会关闭 WKWebview
  • 下载进度条在 iOS 企业发行版中没有改变进度

    我正在通过企业分发开发和分发 iPad 应用程序 它们下载并执行良好 因此一切正常 Web 链接 ipa 文件 plist 文件 配置 问题 是 当用户单击链接进行下载时 iPad 中显示下载进度的进度条显示 正在等待 但却是空的并且永远不
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 在成为FirstResponder或resignFirstResponder的情况下将对象保持在键盘顶部?

    我目前在键盘顶部有一个 UITextField 当您点击它时 它应该粘在键盘顶部并平滑地向上移动 我不知道键盘的具体时长和动画类型 所以确实很坎坷 这是我所拥有的 theTextView resignFirstResponder UIVie

随机推荐

  • Django modelform:是否可以内联添加相关模型?

    我真的希望这不是重复的 我找不到任何东西 但这可能意味着我不擅长搜索 我有一个 Django 应用程序 并且工作人员已经在使用管理应用程序来 嗯 管理目的 我还为特定模型创建了一个快速数据输入页面 基本上是通过在基本模板中放置模型表单来创建
  • 为什么“git describe”在我的干净 git 存储库副本上显示较旧的标签版本?

    一些背景 我目前有两个本地 git 存储库 它们指向相同的源 主项目 我有两个 git 存储库的原因是 我有一个干净的主副本 我可以在需要时使用 还有一个副本 我可以在沙箱中应用更改 提交等 这可能有点矫枉过正 但有一些优点对我个人来说 有
  • 模型更改时角度视图(DOM 元素)不会更新

    在最新稳定的 Chrome 中运行最新稳定版本的 Angular 我对位于 ng 控制器 A 的视图内的 DOM 元素进行了 ng click 但 DOM 元素本身的 ng controller 设置为another控制器 B ng cli
  • F# 记录的字段声明为私有时出现奇怪的可访问范围

    我刚刚注意到 当 F 记录的字段部分被声明为私有时 出现了相当违反直觉的行为 这与是否可以将记录的字段设为私有 或者将记录成员设置为私有 https stackoverflow com questions 12389308 is it po
  • iPhone 在 API 调用后重新启动

    我面临一个非常奇怪的问题 我的 iPhone 正在重新启动 此问题仅在特定场景下发生 第 1 步 我有一个同步过程 其中加载整个应用程序的数据 所以我基本上通过上传 4 5 个相机捕获的图像并同步应用程序数据来进行大量的 API 调用 第
  • Netbeans 7.4 for PHP 上的“不要直接访问超级全局 $_SERVER 数组”

    是的 类似的问题已发布并正确回答 Netbeans 7 4 for PHP 上警告 不要直接访问超全局 POST 数组 https stackoverflow com questions 19767894 warning do not ac
  • div外框

    我有一个关于 div 和框架的问题 当框架内有下拉列表时 按下下拉列表时 下拉列表将显示在框架外部 我有一个替代下拉列表 它几乎具有相同的属性 但我必须将元素彼此相邻显示 因此元素显示在 div 中 我的问题 有没有办法 当您按下替代下拉菜
  • 对颜色进行排序 (Objective-C)

    我正在做这样的事情 NSArray colors float divisor 3333 NSMutableArray retVal NSMutableArray array for float one 0 one lt 1 0f one d
  • 通过 Loader.loadBytes(byteArray) 加载图像

    我想问一件事 如果我创建 Loader 并通过 URL 请求加载外部图像 将会得到结果 loader content is Bitmap loader content bitmapData is BitmapData 但如果我使用 Load
  • 裸存储库中的 git ls-files

    我想访问一个裸git存储库 并且我想列出存储库中的所有文件 在普通的 git 存储库上 我可以通过运行轻松地做到这一点git ls files 输出示例 git ls files README md file1 js file2 js fi
  • 从本地计算机访问 GCP Memorystore

    在开发过程中从本地计算机访问 Memorystore 的最佳方式是什么 是否有类似 Cloud SQL Proxy 之类的东西可以用来设置隧道 您可以启动 Compute Engine 实例并使用端口转发连接到您的 Redis 计算机 例如
  • 泛型和约束多态性与子类型

    In this PDF 演示文稿 http research microsoft com en us um people simonpj papers haskell retrospective ECOOP July09 pdf关于 Has
  • Pytest Monkeypatch 不适用于导入的函数

    假设一个项目中有两个包 some package and another package some package foo py def bar print hello another package function py from so
  • 如何格式化来自 MongoDB 的日期?

    我正在使用 Jade 从 Express js 中呈现我的视图 我正在 MongoDB 中保存文档并使用 Mongoose 访问我的文档 我正在保存创建新文档时创建的默认日期 并将该日期创建属性返回到需要格式化的视图 MongoDB 中存储
  • jquery ui 可调整大小的自定义句柄错误

    我试图让自定义句柄与 jquery ui 可调整大小的小部件一起使用 但是当我使用handles 选项将 jquery 引用传递给另一个元素时 它失败了 从我从文档和网络上的其他示例中读到的内容来看 这应该可以正常工作 div class
  • 具有代理支持的 python webkit

    我正在编写一个用于抓取网页的 python 脚本 我创建了一个 webkit webview 对象并使用 open 方法来加载 url 但我想通过代理加载网址 我怎样才能做到这一点 如何将 webkit 与 proxy 集成 哪个 webk
  • 退出自定义 Sails 1 和 Actions 2

    如果我想使用操作 2 在 sails 1 中返回带有状态代码和错误消息的错误的输出 该怎么办 EX exits notFound description not found responseType notFound 怎样才能退出呢 例如
  • 写入 Hadoop 中 HDFS 中的文件

    我一直在寻找一个磁盘密集型 Hadoop 应用程序来测试 Hadoop 中的 I O 活动 但我找不到任何此类应用程序可以使磁盘利用率保持在上述水平 例如 50 或者某些此类应用程序实际上使磁盘保持繁忙 我尝试了 randomwriter
  • 为什么编译器在 N 字节边界上对齐 N 字节数据类型?

    我不明白为什么编译器在 4 字节边界上对齐 int 在 2 字节边界上对齐 Short 在 1 字节边界上对齐 char 据我了解 如果处理器的数据总线宽度是 4 字节 则从不是 4 的倍数的地址读取 int 需要 2 个内存读取周期 那么
  • 导入 ChatKit(即私有框架)或以某种方式使用 CKDBMessage

    首先 我知道私有框架 API 不会让我进入 AppStore 这仅供私人使用 研究 我无法编译我的项目ChatKit framework 基本上我需要以某种方式初始化CKDBMessage对象并从中获取东西 The first我尝试的方法是