什么是啟動參數(shù)
指在APP啟動的時候,從Xcode環(huán)境變量或者命令行傳入指定的參數(shù),讓APP根據(jù)不同參數(shù)做出不同的響應(yīng)。
為何要引入啟動傳參
在Mac-App開發(fā)過程中,需要很多前置的工作,包括替換打包路徑、設(shè)置參數(shù)等等。這些前置工作都可以通過啟動參數(shù)來實現(xiàn)。使用啟動參數(shù),有利于提高測試效率。
如何實現(xiàn)啟動傳參
ProcessInfo
ProcessInfo是macOS下的進(jìn)程信息類。包含進(jìn)程的所有信息。 globallyUniqueString 獲取唯一標(biāo)識也可以用獲取時間后生成唯一標(biāo)識代替,systemUptime 上次設(shè)備重啟到現(xiàn)在的秒數(shù)這個在開發(fā)某些應(yīng)用應(yīng)該有些用處。以下僅僅列舉部分屬性或者方法。
ProcessInfo的常見屬性和方法如下:
// 創(chuàng)建系統(tǒng)進(jìn)程信息對象
let processInfo:ProcessInfo = ProcessInfo.processInfo
// 返回當(dāng)前進(jìn)程的參數(shù)
/*
以 NSString 對象數(shù)組的形式返回當(dāng)前進(jìn)程的參數(shù)
*/
let processArguments:NSArray = processInfo.arguments
// 返回當(dāng)前的環(huán)境變量
let processEnvironment:NSDictionary = processInfo.environment
// 返回進(jìn)程標(biāo)識符
let processId:Int32 = processInfo.processIdentifier
// 返回進(jìn)程數(shù)量
let processCount:Int = processInfo.processorCount
// 返回活動的進(jìn)程數(shù)量
let activeProcessCount:Int = processInfo.activeProcessorCount
// 返回正在執(zhí)行的進(jìn)程名稱
let processName:String = processInfo.processName
// 生成單值臨時文件名
/*
每次調(diào)用這個方法時,都返回不同的單值字符串,可以用這個字符串生成單值臨時文件名
*/
let uniqueString:String = processInfo.globallyUniqueString
// 返回主機系統(tǒng)的名稱
let hostName:String = processInfo.hostName
// 返回操作系統(tǒng)的版本號
let osVerson:NSOperatingSystemVersion = processInfo.operatingSystemVersion
let majorVersion:Int = osVerson.majorVersion
let minorVersion:Int = osVerson.minorVersion
let patchVersion:Int = osVerson.patchVersion
// 返回操作系統(tǒng)名稱
let osName:String = processInfo.operatingSystemVersionString
// 設(shè)置當(dāng)前進(jìn)程名稱
/*
應(yīng)當(dāng)謹(jǐn)慎的使用這個方法因為關(guān)于進(jìn)程名稱存在一些假設(shè)
*/
processInfo.processName = "test"
// 判斷系統(tǒng)版本是否高于某個版本
let opsVession:NSOperatingSystemVersion = NSOperatingSystemVersion(majorVersion: 10,
minorVersion: 10,
patchVersion: 4)
let bl:Bool = processInfo.isOperatingSystemAtLeastVersion(opsVession)
// 返回系統(tǒng)運行時間
let timeInterval:NSTimeInterval = processInfo.systemUptime
獲取啟動參數(shù)
在Xcode的環(huán)境變量中配置APP啟動時注入的參數(shù),然后使用ProcessInfo的arguments屬性獲取外部參數(shù)。該屬性是一個數(shù)組,數(shù)組里保存了Xcode啟動APP時傳遞的外部參數(shù),如下:
使用ProcessInfo獲取,如下:
let processInfo:ProcessInfo = ProcessInfo.processInfo
let processArguments:NSArray = processInfo.arguments as NSArray
如此一來,我們就可以通過processInfo獲取到所有的外部參數(shù)。
shell腳本啟動應(yīng)用并傳入?yún)?shù)
!/bin/sh
cd /Applications/
open 唯變自動化.app --args /Users/eddy/Desktop/UnityDemo-Test