2014-02-12 3 views
7

Windows 8.1 Metro 응용 프로그램에서 작업하고 있습니다. 이 앱은 자신의 라이브 계정으로 Windows에 로그인 한 사용자에게 개인화 된 경험을 제공합니다.OnlineIdConnectedStateChange가 트리거 된 후 사용자가 로그인했는지 여부를 확인하십시오.

Windows에서 제공되는 것처럼 모든 사용자는 PC 설정 -> 계정을 통해 자신의 라이브 계정을 PC에 연결/연결 해제 할 수 있습니다. 이 이벤트에서 즉, 사용자가 라이브 계정을 PC에 연결/연결 해제 할 때마다 알림이 전송됩니다. 이제 MSDN 페이지 (http://msdn.microsoft.com/en-us/library/windows/apps/hh977056.aspx)에 따라이 이벤트는 OnlineIdConnectedStateChange를 트리거합니다. 트리거에서 수신 대기하는 앱에서 백그라운드 작업을 구현할 수 있었지만 완벽하게 작동합니다. 연결된 라이브 계정에서 변경 될 때마다 이벤트 리스너가 시작됩니다. 그러나 사용자가 일부 실시간 계정으로 로그인했거나 이미 연결된 계정에서 로그 아웃 한 경우 사실을 확인할 수 없습니다.

(Metro App - How to detect if logged in with Live ID or Local Account)에서 설명한대로 Windows.Security.Authentication.OnlineId.OnlineIdAuthenticator을 사용해 보았지만 사용자가 로그인하지 않은 경우 인증 절차가 시작됩니다. 원하는 것은 아닙니다. 누군가가 로그인했는지 여부를 알고 싶습니다. Auth 흐름을 트리거하고 싶지 않습니다.

OnlineIdConnectedStateChange 이벤트가 백그라운드 작업에서 실행될 때 사용자의 로그인/로그 아웃 상태를 확인하는 방법이 있습니까?

도움 주셔서 감사합니다.

답변

3

성공적으로 로그인 한 사용자의 마지막 userId는 항상 저장할 수 있습니다. 그런 다음 해당 ID를 현재 userId와 비교하고, null이면 사용자가 로그 아웃하고, 그렇지 않은 경우 새 사용자입니다.

편집 : => 저장소에 일부 플래그 또는 userId를 (기본적으로 약간의 정보) 1.B 사용자 로그 : 사용자가 => 상점에 로그인하지 않습니다

  1. 사용자가 응용 프로그램 1.A 열립니다 일부 널 (null) 플래그는 null userId를

  2. 사용자 BackgroundWorker에 사용자가 로그인 또는 로그 아웃 여부를 알아낼 수있는 플래그 또는 정보를 기반으로 이벤트를 집어 응용 프로그램을

  3. 을 닫습니다.

저장하는 항목에 따라 다른 옵션 중 AppSettings 또는 IsolatedStorage를 사용하여 플래그를 저장할 수 있습니다.

+0

제 질문은 사용자가 신규인지 아닌지를 결정하는 것이 아닙니다. "OnlineIDConnectedStateChange"이벤트를 트리거 한 조치가 로그인인지 또는 로그 아웃인지 여부를 판별하는 것입니다. –

+0

이 방법을 계속 사용할 수 있습니다. ID가 null이고 이벤트가 시작되면 로그인 시도이고 그 반대의 경우도 마찬가지입니다. –

+0

어디에서 이드를 얻을 수 있습니까? –