前言
項(xiàng)目上線以后, 后臺(tái)改變了數(shù)據(jù)結(jié)構(gòu), 導(dǎo)致某些功能使用不了, 直接閃退, 后臺(tái)越來越調(diào)皮了
正題
JSPatch 的優(yōu)點(diǎn)
非侵入式
上手快
相關(guān)服務(wù)成熟
使用簡單
1:上代碼
第一步:創(chuàng)建Demo, 在ViewController里面添加一個(gè)Label, 聲明一個(gè)test方法來給Label.text賦值
OC:
#import "Viewcontrller"
@interface ViewController ()
@prperty (nonatomic, weak) IBoutlet UILabel *label;
@end
@implementation ViewController
- (void)ViewDidLoad {
[super ViewDidLoad];
[self test];
}
- (void)test {
self.label.text = @"測(cè)試";
}
@end
Swift:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.test()
}
dynamic func test() {
label.text = "測(cè)試";
}
}
2:打開JSPatch網(wǎng)站下載SDK

JSPatch.png
3:項(xiàng)目配置
將解壓的SDK直接拖入工程中, 然后在TARGETS -> Build Phases -> Link Binary With Libraries -> + 添加libz.dulib(或libz.tad)和JavaScriptCore.framework.

導(dǎo)入.png

項(xiàng)目配置.png
在AppDelegate里寫以下代碼:
- OC
#import <JSPatch/JSPatch.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[JSPatch startWithAppKey:@"你的AppKey"];
[JSPatch setupDevelopment];
[JSPatch sync];
...
return YES;
}
@end
- Swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
JSPatch.startWithAppKey("你的AppKey")
JSPatch.setupDevelopment();
JSPatch.sync()
...
return true
}
至此 JSPatch 接入完畢,下一步可以開始在后臺(tái)為這個(gè) App 添加 JS 補(bǔ)丁文件了
4:打開JSPatch官網(wǎng)注冊(cè)

注冊(cè).png
5:創(chuàng)建你的app, 名字可以隨便寫, AppID可填可不填


6創(chuàng)建之后的APP


- appKey是項(xiàng)目中用到的(一般第三方都有個(gè)appkey)
- App版本必須與你App的版本保持一致, 否則會(huì)無效

Version.png
7:創(chuàng)建一個(gè)main.js文件并在里面寫上以下代碼
- OC:
// ViewController 需要修改的控制器
denfineClass('ViewController', {
test: function() {
self.label().setText("通過JSPatch修改");
}
})
- Swift
denfineClass('JSPatchDemo.ViewController', {
test: function() {
self.label().setText("通過JSPatch修改");
}
})
Swift覆蓋方法和類的時(shí)候要加上項(xiàng)目名, 所以規(guī)范應(yīng)該是項(xiàng)目名.類名(方法名)注冊(cè)類的時(shí)候也要加上項(xiàng)目名
8:點(diǎn)擊剛剛創(chuàng)建的1.0, 將保存好的js上傳到JSPatch服務(wù)器上.


選擇文件->選擇寫好的main.js文件->勾選開發(fā)預(yù)覽(測(cè)試ok全量下發(fā))->提交
出現(xiàn)以下內(nèi)容說明項(xiàng)目已經(jīng)更新補(bǔ)丁

更新補(bǔ)丁.png
因?yàn)檠a(bǔ)丁是先下載保存, 下次運(yùn)行才會(huì)生效
效果

效果.png