Utils 静态工具类
js端
var r = Utils.xxxxx('index.html');//index.html是参数,r是返回值,没有可以不写
oc端
#import "SkyBase.h"
//创建类要继承SkyBase
@interface Skyxxxx : SkyBase
@end
//.m中实现方法--举例
+(SkyDataRef *)getWifiSSID:(NSDictionary *)params{
// NSString *callNo = [params stringValue:@"phoneNumber"];
NSString *SSID = @"wifi";
id info = nil;
NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();
for (NSString *ifnam in ifs) {
info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
info = (NSDictionary *)info;
if(info[@"SSID"] != NULL)
{
SSID = info[@"SSID"];
}
}
return stringToDataRef(SSID);//返回值可以为NULL return successObjToDataRef(NULL);
}
//oc-js端
util.getWifiSSID = function() {
return BridgeUtil.invokeStaticMethod("SkyNetwork","getWifiSSID");
}
//或者带有参数
util.tel = function(phoneNumber) {
BridgeUtil.invokeStaticMethod("SkyModelAppUrl", "tel", {
"phoneNumber": phoneNumber
});//SkyModelAppUrl 类名 tel 方法名 后面是json 参数
}
Utils 工具类第二种,需要跳转到oc界面,返回状态
js端
Utils.CCVideo(json,function(){
log("登录成功");
},function(errmsg){
log(errmsg);
});
oc端-js代码
//CC 视频接口-直播
var __ccvideo = null;
util.CCVideo =
function(json,LoginSuccess,LoginFailure){
if(__ccvideo == null)
__ccvideo = new Emp.CCtools();
__ccvideo.showVideo(json,LoginSuccess,LoginFailure);
}
Emp.CCtools =Emp.extend(Emp.Component,{
init: function(json) {
Emp.CCtools.superclass.init.call(this, json);
this.content.xtype = 'SkyCCVideoView';
Emp.newNativeObject(this);
},
showVideo:function(json,LoginSuccess,LoginFailure){
this.addEvent('CConSuccess',LoginSuccess);
this.addEvent('CConFailure',LoginFailure);
empBridge.fireModelMethod(this.modelId,"showCCVideo",json);
}
}
oc-.h 和.m文件
@interface SkyCCVideoView : SkyUiControl
@end
@implementation SkyCCVideoView
-(instancetype)init{
if (self =[super init]) {
// self.view = [[UIView alloc] init];
// [self setUIView:self.view];
}
return self;
}
-(void)processAttr{
[super processAttr];
}
- (UIView *)render {
return [super render];
}
//-=========集成SkyUiControl的必须三部,//processAttr处理控件所有属性 init创建可能会显示的view render 渲染布局
//直播
-(SkyDataRef *)showCCVideo:(NSDictionary*)dic{
/*
* 必填参数 userId;//用户ID
* 必填参数 roomId;//房间ID
* 必填参数 viewerName;//用户名称
* 必填参数 token;//房间密码--cc后台可设置(此处免密)
*/
NSString *userId = [dic objectForKey:@"userId"];
NSString *roomId =[dic objectForKey:@"roomId"];
NSString *viewerName = [dic objectForKey:@"viewerName"];
NSString *token;
if ([[dic allKeys] containsObject:@"token"] && ![[dic objectForKey:@"token"] isEqual:[NSNull null]]) {
token = [dic objectForKey:@"token"];
}else{
token = @"";
}
SaveToUserDefaults(WATCH_USERID,userId);
SaveToUserDefaults(WATCH_ROOMID,roomId);
SaveToUserDefaults(WATCH_USERNAME,viewerName);
SaveToUserDefaults(WATCH_PASSWORD,token);
[self integrationSDK];
//回调的成功事件
[self triggerEvent:@"CConSuccess",intToDataRef(index),nil];
//跳转界面
[((UIViewController *)self.scriptView.ownerCtrl).navigationController pushViewController:self.playForPCVC animated:YES];
return NULL;
}
@end
UI 类创建类型
js端代码
//创建需要显示的view
var PDFReaderView = new Emp.PDFReaderView({
height:"100%",
width:"100%"
});
contentDiv.add(PDFReaderView);//contentDiv---div的id
//调用方法
PDFReaderView.showPDF(json);
PDFReaderView.getPageCount();
oc--js代码
Emp.PDFReaderView = Emp.extend(Emp.View, {
init: function(params) {
Emp.PDFView.superclass.init.call(this, params);
this.content.xtype = 'SkyPDFReaderView';
},
// 显示PDF
showPDF: function(json) {
empPage.fireMethodIfRendered(this, 'showPDF',json);
},
// 获取pdf总页数
getPageCount: function() {
return empPage.fireMethodIfRendered(this, 'getPageCount',"");
}
}
oc--.h--.m
// PDF阅读器视图
@interface SkyPDFReaderView : SkyUiControl
@end
- (instancetype)init
{
self = [super init];
if (self) {
UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
self.contentView = view;
[self setUIView:view];
}
return self;
}
-(void)processAttr{
[super processAttr];
}
- (UIView *)render {
return [super render];
}
//================
#pragma mark -- javascriptInterface
// 显示PDF
- (JSValueRef)showPDF:(JSContextRef)ctxp argc:(size_t)argc argv:(const JSValueRef [])argv {
NSDictionary *dic = (NSDictionary *)[NSObject JSValueToNSObject:argv[0] ctx:ctxp];
NSString *filePath = [dic objectForKey:@"filePath"];
NSString *password = [dic objectForKey:@"password"];
[self loadDocument:filePath password:password];
return NULL;
}
// 获取pdf总页数
- (JSValueRef)getPageCount:(JSContextRef)ctxp argc:(size_t)argc argv:(const JSValueRef [])argv {
NSString *pageCount = [NSString stringWithFormat:@"%@",self.document.pageCount];
return [pageCount toJSValue:ctxp];
}
@end
网友评论