打包平台基于 node.js 构建,使用了 RailwayJS 作为开发框架,使用 MongoDB 作为后端存储。另外打包平台还使用了 bash 以及 Python 来辅助编译。

 

 

 

基本架构

打包平台使用 RailwayJS 框架来作为整体开发框架,提供用户管理、代码上传、编译、下载打包结果功能。

 

过期检测

打包程序会遍历程序目录,在找到 -(void)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法后,会在该方法的起始插入以下代码:

 
dispatch_async(dispatch_queue_create("APP_EXPIRE_KILL", 0), ^{
    // 检查程序是否过期
    NSTimeInterval now = [[NSDate date] timeIntervalSince1970];
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    [formatter setDateFormat:@"MMM d yyyy"];
    [formatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
    NSDate *expiresDate = [formatter dateFromString:[NSString stringWithFormat:@"%s", __DATE__]];
 
    // 一周过期
    if (now - [expiresDate timeIntervalSince1970] >= 7*24*3600) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"您使用的程序是测试版本,目前已经过期,请更新到最新版本"
                                                        message:nil
                                                       delegate:self
                                              cancelButtonTitle:@"确定"
                                              otherButtonTitles:nil];
        [alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO];
 
        sleep(10);
        kill(getpid(), 9);
    }
});
 
 
 

posted on 2012-06-14 10:57  随我畅翔  阅读(729)  评论(0编辑  收藏  举报