阅读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。哪一个是正确的,为什么?
由于
答案 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 =之后解析该值,因为其他值可能随时间变化。