Как получить ANID в стиле WP7 на Windows Phone 8?

У меня есть приложение для Windows Phone 7, которое использует ANID для хранения пользовательских данных на удаленном сервере. Сейчас я готовлю его версию для Windows Phone 8. Когда пользователь загрузит это обновление, предыдущая версия приложения WP7 будет заменена этой новой версией WP8.

Но есть огромная проблема: в WP8 вместо ANID используется ANID2. Я знаю, как преобразовать ANID в ANID2 (преобразование ANID в ANID2 для Windows Phone на C #?). Но мне для этого нужен весь ANID. В WP7 ANID выглядит так: «A = 2E23ACF364795673CD7EBB58FFFFFFFF & E = f48 & W = 3». Я извлекаю 32-символьное значение (2E23ACF364795673CD7EBB58FFFFFFFF) и использую его как UID (я слышал, что оставшаяся часть может быть изменена, но 32 id всегда будут одинаковыми).

Таким образом, я мог бы конвертировать ANID из версии WP7 в ANID2 на лету на удаленном сервере, но у меня нет всех 44 букв - только 32 из них.

Я мог бы обновить версию WP7 другой версией WP7, которая отправляет весь ANID на сервер, но я не могу полагаться на тот факт, что все люди будут обновлять свои приложения, сохранять свои данные на сервере, а затем снова обновлять свои приложения, когда версия wp8 будет доступный.

Итак, мои вопросы:

  • Есть ли способ получить значение ANID в стиле WP7 в приложении WP8 (возможно, через отражение или c ++)?

  • возможно ли преобразовать ANID в ANID2, имея только 32-символьную часть uid?

  • есть ли способ узнать, соответствует ли конкретный ANID2 существующей 32-символьной части ANID?

  • как я могу преобразовать ANID2 в ANID, если мы знаем GUID разработчика?

  • может ли пользователь выбрать версию для установки (если доступны версии WP7 и WP8)?


Обновить

Пока что мой обходной путь - предоставить пользователям утилиты wp7 версии wp8, которая генерирует ANID2 из ANID и сохраняет эту пару в удаленной базе данных. Затем пользователь, получивший обновление версии wp8, может продолжить использование своего профиля приложения wp7. Хотя я все еще ищу лучшее решение.

Кстати, я только что понял: пока мы пытаемся следовать идеологии MSFT "One Screen" и пытаемся предоставить нашим пользователям доступ к их данным на всех устройствах MSFT одновременно, это действительно глупо, что MSFT заставляет нас удерживать и каким-то образом синхронизировать три (!!!) разные идентификаторы для одного пользователя, который входит в свои устройства wp7, wp8 и windows 8 с одним и тем же live id! MSFT не хочет, чтобы мы видели этот живой идентификатор так сильно, что дает нам три разных анонимных представления. Смешно, ребята!


person Tertium    schedule 23.03.2014    source источник


Ответы (3)


В вопросе описан единственный способ: опубликовать скрытую утилиту со ссылкой на нее в wp8 версии основного приложения. Сама утилита представляет собой двоичный файл wp7, который может получать доступ к ANID, а с помощью dev GUID можно генерировать ANID2. Он отправляет оба значения на сервер, и когда пользователь приходит с сервером ANID2, проверяет словарь и находит соответствующий ANID. Не так просто, но довольно легко. Надеюсь, это кому-то поможет.

person Tertium    schedule 30.03.2014

Я бы использовал GUID, который я создаю при первом запуске приложения, сохраняю его в изолированном хранилище и использую его. Это не касается сценария удаления / переустановки, но в любом случае это очень небольшой процент.

кстати, пользователь получит только последнюю версию из магазина, поэтому он / она не может выбрать старую версию (телефоны WP7, конечно, получат только версию wp7, но пользователи wp8 всегда будут получать последнюю версию из магазина)

person matthijs Hoekstra    schedule 27.03.2014
comment
это наихудшее решение - переустановка не покрывает, несколько устройств даже теоретически не уникальны. Мой обходной путь включает служебный инструмент как wp7-binary, у него нет версии wp8, поэтому он может видеть как wp7, так и wp8. У меня могут быть клиенты с несколькими устройствами, которые хотят обмениваться данными своего приложения между всеми из них, поэтому GUID бесполезен. - person Tertium; 27.03.2014
comment
Что ж, это единственное решение. Тебе это может не понравиться. Причина, по которой это изменилось, заключается в том, что другое решение представляет собой огромную проблему конфиденциальности для пользователей. У вас добрые намерения, но для пользователей это ужасно. Если вы хотите, чтобы у них всегда были одни и те же настройки, вам необходимо «аутентифицировать» их тем или иным способом. - person matthijs Hoekstra; 27.03.2014
comment
GUID - это вообще не решение. Вы просто не понимаете сути. О конфиденциальности - я писал приложения для устройств Apple и Android - все они имеют защищенные идентификаторы - строку байтов, которая анонимизирует пользователя, но одинакова на любом устройстве, принадлежащем этому пользователю. Опять же, на устройствах Win у нас то же самое. MSFT не скрывал от нас anid - он дает даже три из них: live-id, anid на wp7 (и мы можем сгенерировать anid2); anid2, live-id - на wp8; live-id на win8. Пользователь уже авторизован! И если бы во всех этих ОС id был бы live-id (аноним) - это было бы здорово. - person Tertium; 27.03.2014
comment
Хорошо, это другой подход (кстати, я пытаюсь помочь, вы можете попытаться быть немного более дружелюбным в своих ответах, я получаю то, что вы пытаетесь сделать) Вы можете преобразовать ANID в ANID2, и вам нужно использовать это из ваших приложений WP8. code.msdn.microsoft.com/wpapps/ANID-to- ANID2-Converter-cc428038 Уловка состоит в том, чтобы заполучить ANID. Таким образом, вы можете сначала обновить свои приложения WP7, чтобы обновить код ANID до ANID2. К сожалению, создать ANID на WP8 невозможно. - person matthijs Hoekstra; 28.03.2014
comment
хорошо, я понимаю, что вы не знаете лучшего обходного пути, который я использовал, когда писал этот вопрос. Спасибо. - person Tertium; 28.03.2014

Это может показаться немного наивным, и, вероятно, вы уже подумали об этом, и да, это только ответ на вашу основную проблему.Можно ли, чтобы приложения Windows Phone 8 только указывали на реализацию ANID2, возможно, на другую удаленную конечную точку , какое-то время, пока сами MS не убьют более раннюю (WP7) платформу :)

person Abhilash    schedule 27.03.2014
comment
Вы должны написать это в комментарии, потому что это не ответ. Пользователь играет в игру wp7 на устройстве host wp8. Закачиваю обновление wp8 для игры. Так же нет sdcard ort shared memory - после обновления пользователь потерял свой 20-часовой прогресс. Он очень зол. Понимаете? - person Tertium; 27.03.2014
comment
о, как плохо, что я опубликовал это как ответ, да, теперь я понял - person Abhilash; 28.03.2014