NSProcessInfo

概述

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)