Developer's Blog

【Windows Phone】 DeviceID の取得

こんにちは、開発の久郷です。

今回は、Windows Phone 開発の小ネタをひとつ。
個体識別をしたいこともあり、少々調べてみました。デスクトップ OS は、同一端末に複数の OS が入ったりヴァーチャルマシンがあったり、増設できたり外せたりと中々に統一的な識別が難しいですが、 iOS をはじめとするには携帯端末は(大雑把な意味での)拡張は限定的なため、iOS の UDID のような比較的はっきりとした個体識別方法があったりします。 Windows Phone では、Windows Live ID ありきな運用となるため(*注 先日開発者向け公開となった Windows 8 も)、ユーザの判別という点でも企業内利用という点でも、このあたりが色々と便利そうです。

機器管理なんかの面から見ると個体識別をする必要があったりするわけです。早速 MSDN を見てみるとありました。そのものズバリそうな 「 DeviceUniqueId 」 というプロパティが、 Microsoft.Phone.Info Namespace の中にありました。
ここを参照

ただ、このプロパティから値を引っ張り出すサンプルらしきものがみあたりませんでしたので、サンプルらしきものを書いてみました。

using Microsoft.Phone.Info;  < これ忘れないように

object DeviceUniqueID;
DeviceExtendedProperties.TryGetValue("DeviceUniqueId", out DeviceUniqueID);
MessageBox.Show(Convert.ToBase64String((byte[])DeviceUniqueID));

MSDNの当該プロパティの Description には、

「A unique hash for the device. This value will be constant across all applications 
and will not change if the phone is updated with a new version of the operating 
system. Applications should not use this to identify users because the device ID
 will remain unchanged even if ownership of the device is transferred.」

と、書かれています。ユーザの識別に使っては後で痛い目を見そうです。特にサービスなどで。 DeviceUniqueId は、あくまでも端末個体識別用途に使いましょう。ユーザ識別は Windows Live ID でいいんじゃないでしょうか。また、上記では処理してませんが TryGetValue は Bool を返しますが。。。。エミュレータでも true を返し、 DeviceUniqueId を返してきます。

まだまだ携帯電話の 1 ~ 2 割と言われるスマートフォン普及率ですが、小さいだけに多数所持しやすい半面、紛失もしやすいと思います。あまり安いと言い切れる価格でもありませんから、しっかり管理をして賢く使い倒しましょう。

Copyright © 2019 Fenrir Inc. All rights reserved.