xbox用户登录
private static async Task<bool> SignInResult()
{
IReadOnlyList<User> users = await User.FindAllAsync();
user = users[0];
xboxUser = new XboxLiveUser(user);
Debug.WriteLine("开始登入 - sign in" + user.AuthenticationStatus.ToString());
var r = await xboxUser.SignInSilentlyAsync(Window.Current.CoreWindow.Dispatcher);
switch (r.Status)
{
case SignInStatus.Success:
Debug.WriteLine("成功登入xbox");
return true;///////////////////////////
case SignInStatus.UserInteractionRequired:
Debug.WriteLine("xbox登入需要用户参与");
try
{
var rr = await xboxUser.SignInAsync(null);
switch (rr.Status)
{
case SignInStatus.Success:
Debug.WriteLine("成功登入xbox");
return true;
case SignInStatus.UserInteractionRequired:
Debug.WriteLine("xbox登入需要用户参与_2");
break;
case SignInStatus.UserCancel:
Debug.WriteLine("用户取消xbox登入_2");
break;
default:
break;
}
}
catch (Exception ex)
{
Debug.WriteLine("再次登录出错"+ex.Message);
}
break;
case SignInStatus.UserCancel:
Debug.WriteLine("用户取消xbox登入");
break;
default:
break;
}
return false;
}
获取用户资料
public async static Task<List<XboxUserProfile>> GetUserProfilesAsync(List<string> id_list) {
if (!is_online) return null;
var profiles = await context.ProfileService.GetUserProfilesAsync(id_list);
return profiles.ToList();
}
检测是否在线
public static bool CheckOnline() {
//Retrieve the ConnectionProfile
string connectionProfileInfo = string.Empty;
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
NetworkConnectivityLevel connectionLevel = InternetConnectionProfile.GetNetworkConnectivityLevel();
switch (connectionLevel)
{
case NetworkConnectivityLevel.InternetAccess:
// User is connected to the internet.
return true;
case NetworkConnectivityLevel.ConstrainedInternetAccess:
//Limited Internet Access PossibleAuthentication Required
// display error message for user.
Debug.WriteLine("Game Offline: Limited internet access, browser authentication may be required. "); //function writes to UI
break;
default:
Debug.WriteLine("Game Offline: No internet access.");
break;
}
return false;
}
public static async void XboxLiveSignIn()
{
if (is_online) return;
if (await SignInResult())
{
context = new XboxLiveContext(xboxUser);
Debug.WriteLine("添加统计用户");
StatisticManager.SingletonInstance.AddLocalUser(xboxUser);
Debug.WriteLine("获取用户信息");
profile =await context.ProfileService.GetUserProfileAsync(xboxUser.XboxUserId);
Debug.WriteLine("通知用户状态");
MainPage.PopAction?.Invoke(xboxUser.Gamertag, AppResources.GetString("xbox_in_text"));
Debug.WriteLine("更新用户资料");
MenuPage.UpdateProfile?.Invoke(profile);
}
else
{
MainPage.PopAction?.Invoke(user.NonRoamableId, AppResources.GetString("xbox_out_text"));
}
XboxLiveUser.SignOutCompleted += (s,e)=> {
user = null;
context = null;
};
}
~