2014-02-12 4 views
7

Я работаю над приложением Windows 8.1 Metro. Приложение предоставляет персональный опыт пользователю, который вошел в систему Windows с его учетной записью Live.Проверьте, не вступил ли пользователь в систему или нет после того, как был запущен OnlineIdConnectedStateChange.

Как предусмотрено в Windows, любой пользователь может подключить/отключить свою личную учетную запись на ПК с помощью настроек ПК -> Аккаунт. Мое требование должно быть уведомлено об этом событии, то есть всякий раз, когда пользователь подключает/отключает свою личную учетную запись на ПК. Теперь, согласно странице MSDN (http://msdn.microsoft.com/en-us/library/windows/apps/hh977056.aspx), это событие вызовет функцию OnlineIdConnectedStateChange. Я смог выполнить фоновое задание в приложении, которое прослушивает триггер, и работает отлично. Каждый раз происходит изменение в подключенной учетной записи Live, при запуске прослушивателя событий. Но я не могу определить тот факт, что пользователь вошел в систему с какой-либо реальной учетной записью или вышел из уже подключенной учетной записи.

Я пробовал использовать Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator, как указано в (Metro App - How to detect if logged in with Live ID or Local Account), но это вызывает поток аутентификации, если ни один пользователь не выполнил вход. Это не то, что я хочу. Я просто хочу знать, что кто-то вошел в систему или нет. Я не хочу запускать поток Auth.

Есть ли способ определить статус входа в систему/выезда пользователя, когда событие «OnlineIdConnectedStateChange» запущено в фоновом задании?

Спасибо за любую помощь.

ответ

3

Вы всегда можете сохранить последнего пользователя пользователя, который успешно выполнил вход. Затем сравните этот идентификатор с текущим идентификатором пользователя, если он равен нулю, тогда пользователь вышел из системы, если не тот, то новый пользователь.

Edit:

  1. Пользователь открывает приложение 1.а: журналы пользователей в => магазин некоторый флаг или идентификатор_пользователя (некоторые данные в основном) 1б: Пользователь не войти в магазин => некоторые нулевой флаг или нулевой идентификатор пользователя

  2. пользователь закрывает App

  3. BackgroundWorker поднимает событие, на основе флага или информации вы можете выяснить, если пользователь вошел в систему или выход из системы.

В зависимости от того, что вы храните, вы можете использовать AppSettings или IsolStorage среди других опций для хранения флага.

+0

Мой вопрос не в том, чтобы определить, является ли пользователь новым или тем же. Он должен определить, было ли действие, вызвавшее событие «OnlineIDConnectedStateChange», логином или выходом из системы. –

+0

Вы все равно можете использовать этот подход. Если идентификатор равен NULL, а событие запускается, то это попытка входа в систему и наоборот. –

+0

Откуда я могу получить идентификатор? –