本演示项目在Unity for Android Build中启用部分华为HMS和AGC服务,对应的类和函数的名称和用法相同。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

147 行
5.5 KiB

using System;
using HuaweiAuthDemo;
using HuaweiService;
using HuaweiService.Auth;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace HuaweiAuthDemo
{
public class UpdateAccount:AbstractPanel
{
public static bool isPhoneOrEmail = false;
public static bool isModifyPassword =false;
private HuaweiService.Task task;
private HuaweiService.Task modifyTask;
private AGConnectUser agConnectUser;
private AGConnectAuth instance;
[SerializeField]public TMP_InputField emailorPhone = default;
public TMP_InputField verifyCode = default;
public TMP_InputField newemailorPhoneorpassword = default;
public Button smscodeSend=default;
public Button modifyButton=default;
public Text showMessage = default;
public void Start()
{
smscodeSend.onClick.AddListener(()=>verify(isModifyPassword?VerifyCodeSettings.ACTION_RESET_PASSWORD:VerifyCodeSettings.ACTION_REGISTER_LOGIN));
modifyButton.onClick.AddListener(()=>OnModifyClick());
}
public void verify(int resetOrregister)
{
VerifyCodeSettings settings = new VerifyCodeSettings.Builder()
.action(resetOrregister)
.sendInterval(30)
.locale(Locale.CHINA)
.build();
if (isPhoneOrEmail)
{
task = EmailAuthProvider.requestVerifyCode(isModifyPassword?emailorPhone.text.Trim():newemailorPhoneorpassword.text.Trim(), settings);
}
else
{
task = PhoneAuthProvider.requestVerifyCode("+86",isModifyPassword?emailorPhone.text.Trim():newemailorPhoneorpassword.text.Trim(), settings);
}
task.addOnSuccessListener(TaskExecutors.uiThread(),
new HuaweiOnsuccessListener<VerifyCodeResult>(
(codeResult) =>
{
UnityMainThread.instance.AddJob(() =>
{
showMessage.text = "code send successfully!";
PanelController.popupinstance.ShowInfo("code send successfully!");
});
}))
.addOnFailureListener(TaskExecutors.uiThread(), new HuaweiOnFailureListener((e) =>
{
UnityMainThread.instance.AddJob(() =>
{
Error error = new Error();
error.message = e.toString();
PanelController.popupinstance.ShowError(error);
showMessage.text = e.toString();
});
}));
}
public void OnModifyClick()
{
instance = AGConnectAuth.getInstance();
agConnectUser = instance.getCurrentUser();
if (agConnectUser != null)
{
try
{
if (!isModifyPassword)
{
if (isPhoneOrEmail)
{
modifyTask = agConnectUser
.updateEmail(newemailorPhoneorpassword.text.Trim(), verifyCode.text.Trim());
}
else
{
modifyTask = agConnectUser
.updatePhone("+86", newemailorPhoneorpassword.text.Trim(), verifyCode.text.Trim());
}
}
else
{
modifyTask = agConnectUser.updatePassword(
newemailorPhoneorpassword.text.Trim(),
verifyCode.text.Trim(),
isPhoneOrEmail
? AGConnectAuthCredential.Email_Provider
: AGConnectAuthCredential.Phone_Provider);
}
modifyTask.addOnSuccessListener(new HuaweiOnsuccessListener<SignInResult>((signresult) =>
{
UnityMainThread.instance.AddJob(() =>
{
PanelController.popupinstance.ShowInfo("modify successfully!");
showMessage.text = "modify successfully!";
PanelController.getInstance().OpenPanel(PanelController.userInfo);
});
})).addOnFailureListener(new HuaweiOnFailureListener((e
) =>
{
UnityMainThread.instance.AddJob(() =>
{
Error error = new Error();
error.message = e.toString();
PanelController.popupinstance.ShowError(error);
showMessage.text = e.toString();
});
}));
}
catch (System.Exception e)
{
Error error = new Error();
error.message = e.Message;
showMessage.text = e.Message;
PanelController.popupinstance.ShowError(error);
}
}
else
{
showMessage.text = "User is null!";
}
}
public override void OpenPanel()
{
base.OpenPanel();
}
}
}