web-dev-qa-db-ja.com

Windows Phone 8で一意のデバイスID(UDID)を取得する

ハードウェアの変更、アプリの再インストールなどで変更されない、一意のデバイスID(UDID)またはWindows Phone 8(WP8)で読み取ることができる同様のIDはありますか?

古いWindows Phoneバージョンでは、次のようなIDがありました:WP7: Windows Phoneのデバイスステータス

WP7.1: DeviceStatusクラス

ただし、SDK 8.0では動作しません。

私が尋ねる理由:アイデアは、ユーザーがアプリの最初の起動でいくつかの無料クレジットを取得することであり、ユーザーがただ再実行することを避けたい-新しい無料クレジットを取得するためのアプリをインストールします。電子メールまたは電話番号で登録することでこれを解決できますが、できれば、最初の登録時にユーザーを煩わせたくないです。

- -/// - -溶液 - - - - -

DeviceExtendedProperties.GetValue( "DeviceUniqueId")がWP 8.0で動作することを確認できます。次のテキストを読むと少し混乱しました。

Windows Phone OS 7.0では、このクラスはデバイス固有のプロパティのクエリに使用されていました。 Windows Phone OS 7.1では、DeviceExtendedPropertiesのプロパティのほとんどが廃止されているため、代わりに新しいDeviceStatusクラスを使用する必要があります。ただし、必要に応じて、非推奨ではない以下のプロパティを引き続き使用できます。

MSDN:DeviceExtendedPropertiesクラス

次のコードを実行し、アプリを削除して再インストールし、同じIDを取得できます。

byte[] myDeviceID = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId");
string DeviceIDAsString = Convert.ToBase64String(myDeviceID);
MessageBox.Show(DeviceIDAsString);
47
flexo

私はまだ7のWindows Phone 8の開発を開始していませんが、元の DeviceExtendedProperties クラスを使用してデバイスの一意のIDを取得できるはずです。

DeviceExtendedProperties.GetValue("DeviceUniqueId")
31
Frazell Thomas

Null値を返すときにこの問題が発生しました。次に、スイッチを入れる必要があることを思い出しました。

WMAppManifest.xml-> Capabilitiesタブ->オンID_CAP_IDENTITY_DEVICE

20
giacoder

このDeviceUniqueIdにはひねりがあります-それは1つのパブリッシャーに対してのみ一意です。したがって、実際にはデバイス全体の一意の識別子ではなく、1つの発行元の一意のデバイスIDです。ある顧客プロジェクトに取り組み、異なるアカウント(顧客は2つの異なるアカウントで公開している)から同じ電話を特定しようとしたことに気付きました。

8
Jani Nevalainen

DeviceExtendedProperties.GetValue( "DeviceUniqueId")により、独自のwp8デバイスIDを取得できます。これは、deviceIdを文字列として取得する簡単な方法です。

byte[] id = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId");
 string   deviceID = Convert.ToBase64String(id);
4
Jaihind

私はこれを使用しました:

    private static String getDeviceId()
        {
            byte[] id = (byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId");
            return BitConverter.ToString(id).Replace("-", string.Empty);
        }

ただし、重要なのは、WMAppManifestでID_CAP_IDENTITY_DEVICEを確認することです。そうしないと、エラーがスローされます。

2
CarmenA

Windows Phone 8およびWindows 8でDeviceUniqueIdを提供しないことで、Microsoftはユーザートラッキングを回避しようとしましたが、Devコミュニティからの圧力が高まり、再びそれを取り戻しています。

Windows 8.1では、Microsoftは新しいAdvertisingId APIを導入し、同様のIdを使用して、以降のWindows Phone 8.1/9バージョンのアプリ全体で一意のユーザーを識別することもできます。

2
prabh.arora

これは新しいHostInformation.PublisherHostIdプロパティであることがわかりました http://msdn.Microsoft.com/en-us/library/windowsphone/develop/windows.phone.system.analytics.hostinformation .publisherhostid.aspx ..

1
raevilman
string myDeviceID = (byte[])DeviceExtendedProperties.GetValue("DeviceUniqueId");
string DeviceIDAsString = Convert.ToBase64String(myDeviceID);

Windows Phoneの一意のデバイスIDにこれを使用しました。

1
sunny_iexceed

上記の回答は、Windows Phone 7および8 Silverlightで機能します。ただし、SDKにはこのdllライブラリ(Microsoft.Phone)がないため、Windows Phone RT(Universal)またはStore Apps)では機能しません。

これは、Windows Phone 8.1でデバイスIDと名前(および場合によってはその他の情報)を取得する方法ですRT(ユニバーサル/ストアアプリ)。

private string GetHardwareId()
{
    var token = HardwareIdentification.GetPackageSpecificToken(null);
    var hardwareId = token.Id;
    var dataReader = Windows.Storage.Streams.DataReader.FromBuffer(hardwareId);

    byte[] bytes = new byte[hardwareId.Length];
    dataReader.ReadBytes(bytes);

    return BitConverter.ToString(bytes);
}

Windowsでのデバイス情報の読み取りに関する詳細RTを見つけることができます here

0
Has AlTaiar