Mars 是微信官方的跨平台跨业务的终端基础组件。

2022年01月16日 阅读数:3
这篇文章主要向大家介绍Mars 是微信官方的跨平台跨业务的终端基础组件。,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


Mars


Mars 是微信官方的跨平台跨业务的终端基础组件php

Mars 是微信官方的跨平台跨业务的终端基础组件。_ipad



  • comm:能够独立使用的公共库,包括 socket、线程、消息队列、协程等;
  • xlog:高可靠性高性能的运行期日志组件;
  • SDT: 网络诊断组件;
  • STN: 信令分发网络模块,也是 Mars 最主要的部分。


Getting started

iOS/OS X


编译python

python build_apple.py

把 mars.framework 做为依赖加入到你的项目中微信

Xlog Init

在程序启动加载 Xlog 后紧接着初始化 Xlog。但要注意保存 log 的目录请使用单独的目录,不要存听任何其余文件防止被 xlog 自动清理功能误删。网络



NSString* logPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingString:@"/log"];



// set do not backup for logpath

const char* attrName = "com.apple.MobileBackup";

u_int8_t attrValue = 1;

setxattr([logPath UTF8String], attrName, &attrValue, sizeof(attrValue), 0, 0);



// init xlogger

#if DEBUG

xlogger_SetLevel(kLevelDebug);

appender_set_console_log(true);

#else

xlogger_SetLevel(kLevelInfo);

appender_set_console_log(false);
#endif

appender_open(kAppednerAsync, [logPath UTF8String], "Test");


在函数 "applicationWillTerminate" 中反初始化 Xlogapp


appender_close();


STN Init

在你用 STN 以前初始化:socket


- (void)setCallBack {    mars::stn::SetCallback(mars::stn::StnCallBack::Instance());    mars::app::SetCallback(mars::app::AppCallBack::Instance());

}



- (void) createMars { mars::baseevent::OnCreate();

}



- (void)setClientVersion:(UInt32)clientVersion { mars::stn::SetClientVersion(clientVersion);

}



- (void)setShortLinkDebugIP:(NSString *)IP port:(const unsigned short)port {

std::string ipAddress([IP UTF8String]); mars::stn::SetShortlinkSvrAddr(port, ipAddress);

}



- (void)setShortLinkPort:(const unsigned short)port { mars::stn::SetShortlinkSvrAddr(port);

}



- (void)setLongLinkAddress:(NSString *)string port:(const unsigned short)port debugIP:(NSString *)IP {

std::string ipAddress([string UTF8String]);

std::string debugIP([IP UTF8String]);

std::vector<uint16_t> ports;

ports.push_back(port); mars::stn::SetLonglinkSvrAddr(ipAddress,ports,debugIP);

}



- (void)setLongLinkAddress:(NSString *)string port:(const unsigned short)port {

std::string ipAddress([string UTF8String]);

std::vector<uint16_t> ports;

ports.push_back(port); mars::stn::SetLonglinkSvrAddr(ipAddress,ports);

}



- (void)reportEvent_OnForeground:(BOOL)isForeground { mars::baseevent::OnForeground(isForground);

}



- (void)makesureLongLinkConnect { mars::stn::MakesureLonglinkConnected();

}

初始化顺序不必定要严格遵照上述代码的顺序,但在初始化时首先要调用 setCallBack 接口 (callback 文件的编写能够参考 demo),再调用 Mars.init,最后再调用 onForeground 和 makesureLongLinkConnect,中间顺序能够随意更改。注意:STN 默认是后台,因此初始化 STN 后须要主动调用一次​​BaseEvent.onForeground(true)​ide

须要释放 STN 或者退出程序时:函数


- (void)destroyMars {    mars::baseevent::OnDestroy();

}

Event Change

先后台切换时:性能


- (void)reportEvent_OnForeground:(BOOL)isForeground {    mars::baseevent::OnForeground(isForeground);

}

网络切换时:ui


- (void)reportEvent_OnNetworkChange {    mars::baseevent::OnNetworkChange();

}




Mars 是微信官方的跨平台跨业务的终端基础组件。_加载_02