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的计算次数。

转载于:https://www.cnblogs.com/dokaygang128/archive/2012/06/01/2530033.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值