API说,ANID和ANID2长度不是32

时间:2013-12-16 13:41:09

标签: c# windows-phone-7 windows-phone-8 windows-phone

阅读UserExtendedProperties.TryGetValue(string propertyName, out Object propertyValue)

的文档后

文件说:

  

ANID和ANID2属性返回的字符串包含匿名标识符,长度为32个字符。

但是当我在我的设备(WP8)上测试ANID2时,返回字符串的长度是44。

在做了一些搜索之后,我找到了这个article,其中包含了这个方法来提取ANID:

  private const int ANIDLength = 32;
  private const int ANIDOffset = 2;

  public static string GetWindowsLiveAnonymousID()
    {
        string result = string.Empty;
        object anid;
        if (UserExtendedProperties.TryGetValue("ANID", out anid))
        {
            if (anid != null && anid.ToString().Length >= (ANIDLength + ANIDOffset))
            {
                result = anid.ToString().Substring(ANIDOffset, ANIDLength);
            }
        }

        return result;
    }

我的问题:这是提取ANID和ANID2的正确方法吗?以及为什么返回的字符串长度从API开始就不是32?

我问这个问题的原因是与此主题相关的另一个question here,答案是从上述方法的检查中减去1。哪一个是正确的,为什么?

由于

1 个答案:

答案 0 :(得分:2)

ANID2 Windows Live帐户ID 发布商GUID 。因此,来自不同发布商的应用程序将获得不同的ANID2值

此链接深入了解更多详情 - ANID2

提取:

以下内容也适用于Windows Phone 8.

WP7中的格式就像(我x-ed out some chars): A=E32ACBXXXXXXXXX3B337B68CFFFFFFFF&E=d59&W=1

在WP7中,有必要在A =最多为& E =之后解析该值,因为其他值可能随时间变化。