layabox-TS项目构建Xcode项目下基于layaNative的ios和js二次开发

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 
@interface OcNativeClass : NSObject
+(void) openlight:(NSNumber*)open; // 只支持对象类型bool类型用NSNumber
+(void) NativeFunctions:(NSString*)functionname and:(NSString*) value; // 只支持对象类型bool类型用NSNumber
@end

.mm文件
#import "OcNativeClass.h"
#import
#import
#import
#import
#import

#import

@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

你可能感兴趣的:(oc,xcode,layabox,js)