zoukankan      html  css  js  c++  java
  • windows phone 获取udid

    Windows phone SDK中获取udid的方法是:

     byte[] DeviceUniqueId = DeviceExtendedProperties.GetValue("DeviceUniqueId") as byte[];
    

      

    由于udid在windows phone SDK的API中获取的返回值是一20字节byte数组,若直接转为ASCII码会出现各种符号,在用http get方法向服务器传送时url难免会出现解析错误的问题。

    所以想到将这20字节数组直接拼成一数字字符串,将数组的每一元素不够三位数的前面补0,得到一字符串方法如下:

    private static string GetUserId()
            {
                StringBuilder sb = new StringBuilder();
    
                byte[] DeviceUniqueId = DeviceExtendedProperties.GetValue("DeviceUniqueId") as byte[];
    
                if (DeviceUniqueId != null)
                {
                    //return MD5.GetMd5String(DeviceUniqueId);
    
                    foreach (byte b in DeviceUniqueId)
                    {
                        if (b < 10)         //0-9
                        {
                            sb.Append("00");
                        }
                        else if (b < 100)   //10-99
                        {
                            sb.Append("0");
                        }
    
                        sb.Append(b);
                    }
                }
    
                return sb.ToString();
            }

      得到到是一60字节长度的字符串。

    采用此种方法获得的udid有过长的缺点,实际在使用的时候也遇到了由于udid过长导致与服务器通信时遇到些特殊问题,但是由于版本已经发出去了,无法再更改。如果可以修改的话可以使用另外一种方式,MD5,将从设备获得的byte数组求MD5,得到的序列号也几乎是唯一的。长度几乎是上述方法的一半(32)。

    另外还可以做一些优化,在第一次计算得到udid的字符串后,使用独立存储存起来,以后直接读取即可,减少MD5的计算次数。

  • 相关阅读:
    详解用em替换px
    js判断是否为ie浏览器
    nth-child()选择器小结
    HTML5之canvas
    MQTT-SN协议乱翻之消息格式
    MQTT-SN协议乱翻之简要介绍
    MQTT 3.1.1,值得升级的6个新特性
    MQTT 3.1协议非严肃反思录
    MQTT协议笔记之mqtt.io项目HTTP协议支持
    MQTT协议笔记之mqtt.io项目Websocket协议支持
  • 原文地址:https://www.cnblogs.com/dokaygang128/p/2530033.html
Copyright © 2011-2022 走看看