add: invokeObject

This commit is contained in:
Insomnia 2019-10-31 23:46:10 +08:00
parent b9536168f2
commit 896e9aaa51

View File

@ -28,7 +28,6 @@
@interface DoricJSRemoteExecutor () <SRWebSocketDelegate> @interface DoricJSRemoteExecutor () <SRWebSocketDelegate>
@property(nonatomic, strong) NSMapTable *mapTable; @property(nonatomic, strong) NSMapTable *mapTable;
@property(nonatomic, strong) SRWebSocket *websocket; @property(nonatomic, strong) SRWebSocket *websocket;
@end @end
@implementation DoricJSRemoteExecutor @implementation DoricJSRemoteExecutor
@ -83,11 +82,35 @@ - (void)injectGlobalJSObject:(NSString *)name obj:(id)obj {
- (JSValue *)invokeObject:(NSString *)objName method:(NSString *)funcName args:(NSArray *)args { - (JSValue *)invokeObject:(NSString *)objName method:(NSString *)funcName args:(NSArray *)args {
NSMutableArray *argsMArr = [NSMutableArray new];
for (id arg in args) {
NSDictionary *dic = @{
@"type": [arg class],
@"value": arg
};
[argsMArr addObject:dic];
}
NSDictionary *jsonDic = @{
@"cmd": @"invokeMethod",
@"obj": objName,
@"functionName": funcName,
@"javaValues": argsMArr
};
NSError * err;
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:jsonDic options:0 error:&err];
if (err) {
DoricLog(@"debugger ", NSStringFromSelector(_cmd), @" failed");
}
[self.websocket send:jsonData];
dispatch_semaphore_wait(_semaphore, DISPATCH_TIME_FOREVER);
return nil; return nil;
} }
#pragma mark - Properties #pragma mark - Properties
- (SRWebSocket *)websocket { - (SRWebSocket *)websocket {
if (!_websocket) { if (!_websocket) {
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:kUrlStr] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10]; NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:kUrlStr] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10];