如何在 Windows Phone 8 上获得 WP7 风格的 ANID?

Posted

技术标签:

【中文标题】如何在 Windows Phone 8 上获得 WP7 风格的 ANID?【英文标题】:How to get WP7-style ANID on Windows Phone 8? 【发布时间】:2014-03-23 20:33:01 【问题描述】:

我有一个依赖 ANID 将用户数据存储在远程服务器上的 Windows Phone 7 应用程序。现在我正在准备它的Windows Phone 8 版本。当用户下载此更新时,以前的 WP7 应用程序版本将被这个新的 WP8 版本取代。

但是有一个大问题:在 WP8 中有 ANID2 而不是 ANID。我知道如何将 ANID 翻译成 ANID2 (Windows Phone ANID to ANID2 conversion on C#?)。但我需要整个 ANID。 在 WP7 中,ANID 看起来像:“A=2E23ACF364795673CD7EBB58FFFFFFFF&E=f48&W=3”。我提取了 32 个字符的值 (2E23ACF364795673CD7EBB58FFFFFFFF) 并将其用作 UID(我听说剩余部分可能会更改,但 32 id 将始终相同)。

所以我可能会在远程服务器上即时将 ANID 从 WP7 版本转换为 ANID2,但我没有全部 44 个字母 - 只有 32 个。

我可能会用另一个将整个 ANID 发送到服务器的 WP7 版本来更新 WP7 版本,但我不能相信所有人都会更新他们的应用程序,将他们的数据保存到服务器,然后在 wp8 时再次更新他们的应用程序版本将可用。

所以我的问题是:

有没有办法在 WP8 应用程序中获取 WP7 样式的 ANID 值(可能通过反射或 c++)?

是否可以将 ANID 转换为只有 32 个字符的 uid 部分的 ANID2?

有什么方法可以查明特定的 ANID2 是否对应于现有的 32 个字符的 ANID 部分?

如果我们知道开发者 GUID,如何将 ANID2 反向转换为 ANID?

用户可以选择要安装的版本(如果有 WP7 和 WP8 版本)?


更新

到目前为止,我的解决方法是为用户提供 wp8 版本的 wp7 实用工具,该工具从 ANID 生成 ANID2 并将这对存储到远程数据库。然后获得 wp8 版本更新的用户可以继续使用他的 wp7 应用程序配置文件。 虽然我仍在寻找更好的解决方案。

顺便说一句,我刚刚意识到:虽然我们试图遵循 MSFT“单屏”的理念,并试图让我们的用户同时访问他们在所有 MSFT 设备上的数据,但 MSFT 让我们持有并以某种方式为使用相同实时 ID 登录其 wp7、wp8 和 Windows 8 设备的一个用户同步三个(!!!)不同的 ID! MSFT 不希望我们看到这个 live id,因为它给了我们三种不同的匿名表示。可笑,伙计们!

【问题讨论】:

【参考方案1】:

问题中描述了唯一的方法:在主应用程序的 wp8 版本中发布带有链接的隐藏实用程序。实用程序本身是一个 wp7 二进制文件,可以访问 ANID,使用 dev GUID 可以生成 ANID2。它将两个值都发送到服务器,当用户带有 ANID2 服务器检查字典并找到相应的 ANID 时。没那么简单,但很容易。希望它可以帮助某人。

【讨论】:

【参考方案2】:

我会使用我第一次启动应用程序时创建的 GUID,将其存储在独立存储中并使用它。它不会涵盖卸载/重新安装场景,但无论如何这只是一个很小的百分比。

顺便说一句,用户只能从商店获得最新版本,因此他/她不能选择旧版本(WP7 手机当然只能获得 wp7 版本,但 wp8 用户始终会从商店获得最新版本)

【讨论】:

这是最糟糕的解决方案 - 不包括重新安装,几个设备,甚至理论上不是唯一的。我的解决方法包括作为 wp7-binary 的实用工具,它没有 wp8 版本,因此它可以同时看到 wp7 和 wp8 anids。我可能有多个设备的客户希望在所有设备之间共享他们的应用数据,所以 GUID 是无用的。 嗯,这是唯一的解决方案。你可能不喜欢它。这种改变的原因是因为另一种解决方案对用户来说是一个巨大的隐私问题。你有良好的意图,但跟踪它对用户来说是可怕的。如果您希望它们始终具有相同的设置,则需要以一种或另一种方式“验证”它们。 GUID 根本不是解决方案。你只是不明白这一点。关于隐私——我为苹果设备、安卓设备编写了应用程序——它们都有安全的 ID——使用户匿名的字节字符串,但在该用户拥有的任何设备上都是一样的。同样,在 Win 设备上我们也有同样的东西。 MSFT 没有对我们隐藏 anid - 它甚至提供了其中三个:live-id、wp7 上的 anid(我们可以生成 anid2); anid2,live-id - 在 wp8 上; win8上的live-id。用户已经登录!如果在所有这些操作系统 id 中都是 live-id (anonim) - 那会很棒。 好的,这是另一种方法(顺便说一句,我想帮忙,你可能会尝试在你的回复中更友好一点,我确实得到你想要做的事情)你可以转换ANID 到 ANID2,您需要在 WP8 应用程序中使用它。 code.msdn.microsoft.com/wpapps/ANID-to-ANID2-Converter-cc428038 诀窍是掌握 ANID。因此,您可以先更新您的 WP7 应用程序以将 ANID 代码更新为 ANID2。不幸的是,无法在 WP8 上创建 ANID 好的,我知道你不知道我在写这个问题时有更好的解决方法。谢谢。【参考方案3】:

这听起来可能有点幼稚,您可能已经考虑过了,是的,这只是您的核心问题的答案,Windows phone 8 应用程序是否有可能单独指向 ANID2 实现,也许是另一个远程端点,直到 MS 自己杀死较早的(WP7)平台 :)

【讨论】:

您应该将其写在评论中,因为这不是答案。用户在 hos wp8 设备上玩 wp7 游戏。我为游戏上传了 wp8 更新。由于没有 sdcard ort 共享内存 - 更新后用户失去了 20 小时的进度。他很生气。看到了吗? 哦,我把它作为答案发布很糟糕,是的,现在我明白了

以上是关于如何在 Windows Phone 8 上获得 WP7 风格的 ANID?的主要内容,如果未能解决你的问题,请参考以下文章

Windows Phone 8 与 windows 8 开发技术概览

Windows Phone 8 与 windows 8 开发技术概览

如何在 Windows Phone 8.1 / Windows 10 上创建自定义 VirtualizingPanel?

使用 facebook c# sdk 在 windows phone 8 应用程序中没有从 facebook 获得登录响应

如何以编程方式检测Windows Phone 8.1操作系统版本?

当前的 Windows Phone 8.1 应用程序是不是可以在没有任何代码修改的情况下在 Windows 10 移动设备上运行?