oc调用js代码 --- TS项目
TS源代码:
class EgretAndNative {
private static instance: EgretAndNative = null;
private OcNativeClass;
public constructor() {
//a、创建Test类
this.OcNativeClass=PlatformClass.createClass("OcNativeClass");
}
public CallBackFuncXXX(value: string) {
console.log("==============" + value);
}
}
发布(构建)之后生成的js代码:
var EgretAndNative = /** @class */ (function () {
function EgretAndNative() {
//a、创建Test类
this.OcNativeClass = PlatformClass.createClass("OcNativeClass");
};
EgretAndNative.prototype.CallBackFuncXXX = function (value) {
console.log("==============" + value);
}
}
oc调用函数:
[[conchRuntime GetIOSConchRuntime] runJS:@"
EgretAndNative.prototype.CallBackFuncXXX('12212121221')"];
js调用代码 --- TS项目
ts源代码:
class EgretAndNative {
private static instance: EgretAndNative = null;
private OcNativeClass;
public constructor() {
//a、创建Test类
this.OcNativeClass=PlatformClass.createClass("OcNativeClass");
this.EgretToNative("","123");
}}
public EgretToNative(functionname: string, value: string) {
// 这个名字要与下面声明的OC的类名匹配 iOS不用包名
var Test=PlatformClass.createClass("OcNativeClass");
var a=123123123;
// b、调用静态函数openlight 参数为a
Test.OcNativeClass.callWithBackl(function(msg){
console.log("==============" + msg);
},
"openlight:",a); // iOS注意函数签名为 "openlight:"
this.OcNativeClass.callWithBack(function(msg){
console.log(msg);
}
,"NativeFunctions:and:",functionname,value);
}
}
OC代码:
1·创建一个类,类名与JS中的
PlatformClass.createClass("
OcNativeClass
") ---
OcNativeClass相同;
2·编写供给js调用的函数时 函数名要与
"NativeFunctions:and“ 和 "openlight:"
相同;
.h文件
#import <Foundation/Foundation.h>
@interface OcNativeClass : NSObject
+(void) openlight:(NSNumber*)open; // 只支持对象类型bool类型用NSNumber
+(void) NativeFunctions:(NSString*)functionname and:(NSString*) value; // 只支持对象类型bool类型用NSNumber
@end
.mm文件
#import "OcNativeClass.h"
#import <AVFoundation/AVCaptureDevice.h>
#import <AVFoundation/AVMediaFormat.h>
#import <AVFoundation/AVCaptureInput.h>
#import <AVFoundation/AVCaptureVideoDataOutput.h>
#import <conchRuntime.h>
#import <JavaScriptCore/JavaScriptCore.h>
@implementation OcNativeClass
static AVCaptureSession * session = nil;
+(void) openlight:(NSNumber*)open; // 只支持对象类型bool类型用NSNumber
{
………………
// 静态函数回调通知JS层
[[conchRuntime GetIOSConchRuntime] callbackToJSWithClass:self.class methodName:@"openlight:" ret:@"123456789098"];
}
+(void) NativeFunctions:(NSString*)functionname and:(NSString*) value;
{
………………
// 静态函数回调通知JS层
[[conchRuntime GetIOSConchRuntime] callbackToJSWithClass:self.class methodName:@"NativeFunctions:and:" ret:@"1111111111"];
}
@end