Skip to content

进阶用法

刘全有 edited this page Aug 4, 2021 · 5 revisions

首次上架

TTPatch可以通过源码检测,但是还是要谨慎使用. 谨防翻车!!!!

  • 【必须】 开关配置请求, 版本号,JavaScript 不要明文传递,接口中不要有版本更新字样,如update等等.防止触发2.3.1隐藏功能
  • 【可选】 TTPatch通过服务器开关控制是否需要初始化, TTPatch初始化同时会初始化JSCore引擎,启动时初始化会增加APP启动耗时.

1. 自定义插件

如TTPatch中不支持的方法,可以通过自定义插件的方式,注册到JSContext中.

//参考源码中的注册方式
- (void)configJSBrigeActions{
    self[kMessageQueue_oc_define] = ^(NSString * interface){
        return [TTDFEngine defineClass:interface];
    };
}

自定义注册方式, TTDFEntrycontext

TTDFEntry.shareInstance().context[@"customeFunc"] = ^(NSString * arg){
        return @"";
    };

2. 加载系统动态库

动态执行js前要确保动态库已经加载.

var adbundle = NSBundle.bundleWithPath_("/System/Library/Frameworks/SafariServices.framework");
adbundle.load();

3. 如果写一个网络请求

var url = "https://yangyangfeng.github.io/TTPatch_Convertor_Flutter/js/JPConvertor.js"; 
var req = NSURLRequest.requestWithURL_(NSURL.URLWithString_(url));
var dataTask = TTDFKitURLSession.dataTaskWithRequest_completionHandler_(req, block("void,id,id,id", function (data, response, error) {
      Utils.log_info(data);
    })
);
dataTask.resume();
Clone this wiki locally