#unity3d #huawei-mobile-services #huawei-account
#unity3d #huawei-мобильные сервисы #huawei-учетная запись
Вопрос:
В настоящее время я использую плагин Huawei от EvilMindDev.
Ниже приведен сценарий AccountManager.
using HuaweiMobileServices.Id;
using HuaweiMobileServices.Utils;
using System;
using UnityEngine;
namespace HmsPlugin
{
public class AccountManager : MonoBehaviour
{
public static AccountManager GetInstance(string name = "AccountManager") => GameObject.Find(name).GetComponent<AccountManager>();
private static HuaweiIdAuthService DefaultAuthService
{
get
{
Debug.Log("[HMS]: GET AUTH");
var authParams = new HuaweiIdAuthParamsHelper(HuaweiIdAuthParams.DEFAULT_AUTH_REQUEST_PARAM).SetIdToken().CreateParams();
Debug.Log("[HMS]: AUTHPARAMS AUTHSERVICE" authParams);
var result = HuaweiIdAuthManager.GetService(authParams);
Debug.Log("[HMS]: RESULT AUTHSERVICE" result);
return resu<
}
}
public AuthHuaweiId HuaweiId { get; private set; }
public Action<AuthHuaweiId> OnSignInSuccess { get; set; }
public Action<HMSException> OnSignInFailed { get; set; }
private HuaweiIdAuthService authService;
// Start is called before the first frame update
void Awake()
{
Debug.Log("[HMS]: AWAKE AUTHSERVICE");
authService = DefaultAuthService;
Debug.Log("DefaultAuthService : " DefaultAuthService);
Debug.Log("authService : " authService);
}
public void SignIn()
{
Debug.Log("[HMS]: Sign in " authService);
authService.StartSignIn((authId) =>
{
HuaweiId = authId;
Debug.Log("HuaweiId : " HuaweiId);
OnSignInSuccess?.Invoke(authId);
}, (error) =>
{
HuaweiId = null;
OnSignInFailed?.Invoke(error);
});
}
public void SignOut()
{
Debug.Log("authService.SignOut");
authService.SignOut();
HuaweiId = null;
}
}
}
Ниже приведен сценарий входа в учетную запись.
using HuaweiMobileServices.Id;
using HuaweiMobileServices.Utils;
using UnityEngine;
using UnityEngine.UI;
using HmsPlugin;
public class AccountSignIn : MonoBehaviour
{
private const string NOT_LOGGED_IN = "No user logged in";
private const string LOGGED_IN = "{0} is logged in";
private const string LOGIN_ERROR = "Error or cancelled login";
private Text loggedInUser;
private AccountManager accountManager;
// Start is called before the first frame update
void Start()
{
loggedInUser = GameObject.Find("LoggedUserText").GetComponent<Text>();
loggedInUser.text = NOT_LOGGED_IN;
//accountManager = AccountManager.GetInstance();
accountManager = GetComponent<AccountManager>();
accountManager.OnSignInSuccess = OnLoginSuccess;
accountManager.OnSignInFailed = OnLoginFailure;
LogIn();
}
public void LogIn()
{
accountManager.SignIn();
}
public void LogOut()
{
accountManager.SignOut();
loggedInUser.text = NOT_LOGGED_IN;
}
public void OnLoginSuccess(AuthHuaweiId authHuaweiId)
{
loggedInUser.text = string.Format(LOGGED_IN, authHuaweiId.DisplayName);
}
public void OnLoginFailure(HMSException error)
{
loggedInUser.text = LOGIN_ERROR;
}
}
Каждый раз, когда я пытаюсь войти, это выдает мне эту ошибку.
Это HuaweiIdAuthService.
Даже если я попробую использовать предоставленную демонстрационную версию, я получу ту же ошибку. Если я попытаюсь выполнить отладку с помощью Android Studio, это все равно выдаст мне ту же ошибку.
public void SignIn()
{
Debug.Log("[HMS]: Sign in " authService);
authService.StartSignIn((authId) =>
{
HuaweiId = authId;
Debug.Log("HuaweiId : " HuaweiId);
OnSignInSuccess?.Invoke(authId);
}, (error) =>
{
HuaweiId = null;
OnSignInFailed?.Invoke(error);
});
}
служба аутентификации ничего не возвращает. Откуда я могу это получить?
Ответ №1:
Это нулевой указатель. Пожалуйста, проверьте наличие неназначенных объектов. Если вы ничего не можете найти, пожалуйста, удалите проект и установите снова, потому что иногда такие вещи происходят.
Комментарии:
1. Вы имеете в виду, что мне нужно переустановить плагин huawei? Кроме того, вы знаете, где я могу получить AuthService?
2. @SyedBob Да. Служба аутентификации здесь .
3. Я уже много раз переустанавливал этот плагин. Но я все равно получаю ту же ошибку. Чего я не понимаю, так это почему в демо-версии также возникает та же ошибка? Этот плагин все еще можно использовать? github.com/EvilMindDevs/hms-unity-plugin Я использую Unity 2020 hms-unity-plugin версии V1.1.2
Ответ №2:
У этого плагина есть 2 ветки для Unity 2019 и Unity 2018.
- Вы должны активировать API набора учетных записей в Huawei Appgallery
- Проверьте файл конфигурации AndroidManifest
- Проверьте файл Agconnect-service.json