差分

ナビゲーションに移動 検索に移動

Xamarin.MacでOSのバージョンを取得する

2,019 バイト追加, 2015年10月15日 (木) 01:58
ページの作成:「==概要== Xamarin.Macに存在しない標準ライブラリをCocoa BindingP/Invoke)で叩く際にはOSのバージョンによりAPIがあっ...」
==概要==
[[Xamarin.Mac]]に存在しない標準ライブラリを[[Cocoa Binding]]([[P/Invoke]])で叩く際には[[OS]]のバージョンにより[[API]]があったりなかったりして[[条件分岐]]に迫られる。
基本的に[[Mac OS X]]は[[Windows]]のように古いAPIも継続して使えるなどという軟弱な仕様ではない。
良くも悪くも代謝を施し市場活性化のためにバッサリ切り捨てである。

==実装:SystemVersion.plistから抜く==
SystemVersion.plistというファイルから抜けるようだ。
<source lang="csharp">
var version = NSDictionary.FromFile(@"/System/Library/CoreServices/SystemVersion.plist");
Console.WriteLine(version);
</source>

上記で取得したNSDictionaryの中身は以下のような感じになっている。
<source lang="text">
{
ProductBuildVersion = 14F27;
ProductCopyright = "1983-2015 Apple Inc.";
ProductName = "Mac OS X";
ProductUserVisibleVersion = "10.10.5";
ProductVersion = "10.10.5";
}
</source>

XamarinのNSDictionaryはIDictionaryを実装しているので以下のように手軽にアクセスできる。
<source lang="csharp">
Console.WriteLine(version["ProductVersion"]);
</source>


==実装:NSProcessInfoを使う==
NSProcessInfoからバージョン情報を取得する方法は[[Mac OS X 10.10]]([[Yosemite]])以上でしか使えないが、[[iOS]]でも共通で使えるという利点がある。
[[Mac OS X 10.9]]([[Mavericks]])以下は切り捨てるというのであればこの方法が推奨となるようだ。
<source lang="csharp">
var version = NSProcessInfo.ProcessInfo.OperatingSystemVersion;
Console.WriteLine(version);
</source>

==関連項目==
*[[Xamarin.Mac/アクセシビリティの許可の有無を取得する]]
*[[Xamarin.Mac/Global Event Monitorでキー入力を監視する]]

==参考文献==
{{reflist}}

{{stub}}

[[category:Xamarin.Mac]]
[[category:MonoMac]]
匿名利用者

案内メニュー