我有一个Windows Phone 7应用程序,它依赖于ANID在远程服务器上存储用户数据。现在我正在准备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将始终相同)。
所以我可能会在远程服务器上即时将AN7从WP7版本转换为ANID2,但我没有全部44个字母 - 只有32个字母。
我可能会使用另一个将整个ANID发送到服务器的WP7版本来更新WP7版本,但我不能依赖所有人都会更新他们的应用程序,将他们的数据保存到服务器然后再次更新他们的应用程序这一事实当wp8版本可用时。
所以我的问题是:
有没有办法在WP8 app中获得WP7风格的ANID值(可能是通过反射或c ++)?
可以将ANID转换为只有32个字符的uid部分的ANID2吗?
有没有办法找出特定的ANID2是否与现有的32个字符的ANID部分相对应?
如果我们了解开发者GUID,如何将ANID2反向转换为ANID?
用户可以选择要安装的版本(如果WP7和WP8版本可用)?
更新
到目前为止,我的解决方法是为用户提供wp8版本的wp7实用工具,该工具从ANID生成ANID2并将此对存储到远程数据库。然后获得wp8版本更新的用户可以继续使用他的wp7应用程序配置文件。 虽然我还在寻找更好的解决方案。
是的,我刚刚意识到:虽然我们正试图遵循MSFT" One Screen"意识形态并试图让我们的用户同时访问所有MSFT设备上的数据,MSFT让我们保持并以某种方式为登录他的wp7的用户同步三个(!!!)不同的ID是非常愚蠢的, wp8和windows 8设备具有相同的live id! MSFT不希望我们如此看到这个实况ID,这给了我们三个不同的无限表示。可笑,伙计们!答案 0 :(得分:1)
问题中唯一的解决方法是:在主应用程序的wp8版本中发布带有链接的隐藏实用程序。实用程序本身是一个可以访问ANID的wp7二进制文件,使用dev GUID可以生成ANID2。它将两个值都发送到服务器,并且用户自带ANID2服务器检查字典并找到相应的ANID。不那么简单但很容易。希望它可以帮到某人。
答案 1 :(得分:0)
我会在第一次启动应用程序时使用GUID创建,将其存储在隔离存储中并使用它。它不会涵盖卸载/重新安装方案,但无论如何这都是一个很小的百分比。
不过,用户只能从商店获得最新版本,因此他/她不能选择旧版本(WP7手机只会获得wp7版本的课程,但wp8用户将始终从商店获得最新版本)答案 2 :(得分:0)
这可能听起来有点幼稚,可能你已经考虑过了,是的,这只是你核心问题的答案,是否有可能单独的Windows Phone 8应用程序指向ANID2实现,也许是另一个远程终点,有一段时间,直到MS自己杀死早期(WP7)平台:)