OC直截了当的调用JS文件中的方法_LD
2018-09-27 本文已影响15人
LD_左岸
先说下碰见的问题
- 之前app使用H5写的 加密方式用的des加密 用到了三个key去加密 百度半天发现OC里的des加密都是一个key的,由于对加密这块并不娴熟,搞个MD5加密还凑合 🙄
- 最终为了最大限度的减少后台和我的工作量 决定直接调用以前js写的加密方法
- OC调用js 或者js调用OC原生的方法 网上资料长篇累牍。。。但多数是通过H5与OC原生去相互调用
- 但是我不可能去搞个H5的文件去桥接一下的 太复杂了就 而且也相当冗余
最终的做法是直接使用系统的 <JavaScriptCore/JavaScriptCore.h>库去搞
- 实现代码如下
#import <JavaScriptCore/JavaScriptCore.h>
@property(nonatomic,strong)JSContext * context;
#pragma mark --- 返回des加密后的值
-(NSString*)returnDesValueWithStr:(NSString*)string
{
NSString * str = [[NSBundle mainBundle]pathForResource:@"des" ofType:@"js"];
NSString * jsStr = [NSString stringWithContentsOfFile:str];
self.context = [[JSContext alloc] init];
[self.context evaluateScript: jsStr];
JSValue *addJS = self.context[@"strEnc"];
JSValue *sum = [addJS callWithArguments:@[string,@"firstKey;",@"secondKey",@"threeKey"]];
return [NSString stringWithFormat:@"%@",sum];
}