1 . 新建LuaCallOC.h 和 LuaCallOC.mm
luaCallOC.h
@interface LuaCallOC : NSObject {
}
// 跳转到appstore
+ (char) gotoAppstore:(NSDictionary *)dict;
// 是否WIFI
+ (char) IsEnableWIFI;
// 获取网络状态
+ (int) getNetStatus;
@end
luaCallOC.mm
#import "LuaCallOC.h"
#import "Reachability.h"
#include <arpa/inet.h>
@implementation LuaCallOC
// 跳转到appstore
+ (char) gotoAppstore:(NSDictionary *)dict {
NSString *str = [dict objectForKey:@"address"];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString : str]];
return YES;
}
// 是否WIFI
+ (char) IsEnableWIFI {
struct sockaddr_in addr;
bzero(&addr, sizeof(addr));
addr.sin_len = sizeof(addr);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM);
BOOL ret =([[Reachability reachabilityWithAddress: (sockaddr*)&addr] currentReachabilityStatus] == ReachableViaWiFi);
return ret;
}
// 获取网络状态
+ (int) getNetStatus {
//可以使用多种方式初始化
Reachability *reach = [Reachability reachabilityWithHostName:@"www.apple.com/"];
/*//判断当前的网络状态
switch ([reach currentReachabilityStatus]) {
case ReachableViaWWAN:
NSLog(@"正在使用移动数据网络");
break;
case ReachableViaWiFi:
NSLog(@"正在使用WiFi");
break;
default:
NSLog(@"无网络");
break;
}*/
return [reach currentReachabilityStatus];
}
@end
2 . 将LuaCallOC.h 和 LuaCallOC.mm添加到xcode
3 .lua调用OC
local ok, ret = luaoc.callStaticMethod("LuaCallOC", "gotoAppstore", {address = markConf[channelId].markAddress})
local ok, ret = luaoc.callStaticMethod("LuaCallOC", "IsEnableWIFI")
-- ok 为true代表调用成功, 此时ret为返回值
-- ok 为false代表调用失败, 此时ret为失败原因
本文介绍如何通过Lua脚本来调用Objective-C的静态方法,包括实现跳转到App Store、检查是否为WIFI环境及获取网络状态等功能,并提供具体的实现代码。
5650

被折叠的 条评论
为什么被折叠?



