差分
ナビゲーションに移動
検索に移動
==概要==
[[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]]
[[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]]