美文网首页
NSProcessInfo

NSProcessInfo

作者: i爱吃土豆的猫 | 来源:发表于2022-07-06 15:18 被阅读0次

    概述

    iOS 开发中,常常需要在 App 启动时替换域名、指定mock/代理服务器地址、关闭长连接、启动后跳转到指定页面、自动登录、设置经纬度等等。这些前置工作都可以通过启动传参来实现。使用启动传参,有利于提高开发效率。\

    如何启动传参

    NSProcessInfo
    NSProcessInfo 是 macOS 和 iOS 下的进程信息类。包含进程的所有信息。
    NSProcessInfo的常见属性和方法如下:
    NSProcessInfo *info = [NSProcessInfo processInfo];
    NSLog(@"%@",info.environment);                          // 获取运行该进程的系统的环境变量 
    NSLog(@"%@",info.arguments);                            // 获取运行该进程的参数
    NSLog(@"%@",info.globallyUniqueString);                 // 获取唯一的标示符,每次调用都会不一样,可以用作一些临时缓存文件的名字
    NSLog(@"%f",info.systemUptime);                         // 上次设备重启到现在的秒数
    NSLog(@"%@",info.hostName);                             // 获取主机名称
    NSLog(@"%@",info.processName);                          // 获取该进程的进程名
    NSLog(@"%d",info.processIdentifier);                    // 获取该程序的进程标示符
    NSLog(@"%@",info.operatingSystemVersionString);         // 系统版本(可用[UIDevice currentDevice].systemVersion代替)
    NSLog(@"%lu",info.processorCount);                      // 获取当前项目进程数量
    NSLog(@"%lu",info.activeProcessorCount);                // 获取当前项目活跃进程数量
    NSLog(@"%llu",info.physicalMemory);                     // 设备的CPU物理内存(单位:byte)
    NSLog(@"%d",info.automaticTerminationSupportEnabled);   // 是否支持自动终止(仅限MAC OS)
    - (void)disableSuddenTermination                        // 禁止应用突然被干掉(仅限MAC OS)
    - (void)enableSuddenTermination                         // 允许应用突然被干掉(仅限MAC OS)
    - (void)disableAutomaticTermination:(NSString *)reason  // 禁止应用突然被干掉的理由(仅限MAC OS)
    - (void)enableAutomaticTermination:(NSString *)reason   // 允许应用突然被干掉的理由(仅限MAC OS)
    

    其中 environment 是一个 NSDictionary,App 可以通过这个属性获取到所有的环境变量,比如替换 userId、关闭长连接、设置 mock server等等
    而 arguments 是一个数组,可以获取运行该进程的参数。对于通过命令行启动 App 时传参特别方便。如 tidevice 启动 App 时,tidevice launch bundleID aaa,其中 aaa 即为启动参数,App 通过 arguments 即可获得

    Xcode 实现启动传参

    在 Xcode 的环境变量中配置 App 启动时注入的参数,然后使用 NSProcessInfo的 environment 属性获取环境变量。该属性是一个字典,字典里保存了 Xcode启动 App 时传递的环境变量,如下:
    Target -> Edit Scheme -> Run -> Arguments -> Environment Variables 点击+ 添加环境变量
    备注:
    环境变量一: OS_ACTIVITY_MODE
    Xcode8 打印台输出乱七八糟的东西,可以设置 OS_ACTIVITY_MODE 为disable。

    环境变量二:DYLD_PRINT_STATISTICS
    设置 DYLD_PRINT_STATISTICS 为YES,控制台就会打印 App 的加载时长,包括整体加载时长和动态库加载时长。

    NSProcessInfo *processInfo = [NSProcessInfo processInfo];
    NSLog(@"environment:%@",processInfo.environment);
    NSLog(@"arguments:%@",processInfo.arguments);
    NSLog(@"hostName:%@",processInfo.hostName);
    processInfo.processName = @"custom_process_name";
    NSLog(@"processName:%@",processInfo.processName);
    NSLog(@"processIdentifier:%d",processInfo.processIdentifier);
    NSLog(@"globallyUniqueString:%@",processInfo.globallyUniqueString);
    NSLog(@"operatingSystemVersionString:%@",processInfo.operatingSystemVersionString);
    NSLog(@"operatingSystemVersion.majorVersion:%ld",processInfo.operatingSystemVersion.majorVersion);
    NSLog(@"operatingSystemVersion.minorVersion:%ld",processInfo.operatingSystemVersion.minorVersion);
    NSLog(@"operatingSystemVersion.patchVersion:%ld",processInfo.operatingSystemVersion.patchVersion);
    NSLog(@"systemUptime:%f",processInfo.systemUptime);
    NSLog(@"lowPowerModeEnabled:%d",processInfo.lowPowerModeEnabled);
    

    相关文章

      网友评论

          本文标题:NSProcessInfo

          本文链接:https://www.haomeiwen.com/subject/eljybrtx.html