У меня нет большого опыта создания плагинов Java (.aar) для Unity3d, но я пытаюсь настроить аутентификацию Google с помощью firebase из такого плагина.Чтобы привести пример моей проблемы, я начинаю с открытия приложения для android для единства, затем запускаю приведенный ниже код c # и на моем экране появляется всплывающее окно для входа в Google.Затем я выбираю правильный аккаунт Google, затем намерение / активность Google исчезает, и я не получаю указаний на то, что был вызван "onActivityResult".Никаких ошибок не происходит, и я не могу ничего сделать с выбранной информацией об аккаунте Google.
На изображении ниже я нажимаю кнопку отправить -> откроется действие входа в Google на следующем изображении ->затем он возвращается к экрану отправки (закрывая активность входа в Google).![enter image description here](https://i.stack.imgur.com/3O1ch.png)
![enter image description here](https://i.stack.imgur.com/NJ2xj.jpg)
Я думаю, что моя проблема заключается в этой строке:
activity.startActivityForResult(signInIntent, RC_SIGN_IN);
«Деятельность» в этом случаеUnityPlayerActivity отправлено из кода C # Unity ниже.Я думаю, что это делает это так, что мой код ищет метод "onActivityResult" в коде Unity C #, а не код Java.Любая помощь будет принята с благодарностью.Дайте мне знать, если вам нужна другая информация или скриншоты.Пожалуйста, позвоните мне, если я идиот.
Вот мой код для вызова плагина входа в Google из C # & Unity3d:
AndroidJNIHelper.debug = true;
using (AndroidJavaClass activityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
activity_context = activityClass.GetStatic<AndroidJavaObject>("currentActivity");
}
using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.package.class")) {
if (pluginClass != null) {
GoogleSignInActivity = pluginClass.CallStatic<AndroidJavaObject>("instance");
GoogleSignInActivity.Call("SetContext", activity_context);
GoogleSignInActivity.Call("StartGoogleLogin", activity_context);
activity_context.Call("runOnUiThread", new AndroidJavaRunnable(() => {
GoogleSignInActivity.Call("ShowMessage", "You signed in as " + display_name);
}));
}
}
Вот код для создания входа в GoogleАктивность:
public void StartGoogleLogin(UnityPlayerActivity activity) {
gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken("some url")
.requestEmail()
.build();
mGoogleSignInClient = GoogleSignIn.getClient(activity, gso);
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
activity.startActivityForResult(signInIntent, RC_SIGN_IN);
Log.d(TAG, "Activity Started; Waiting For Result");
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "Result Received!");
if (requestCode == RC_SIGN_IN) {
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
// Google Sign In was successful
GoogleSignInAccount account = task.getResult(ApiException.class);
someMethod(account);
} catch (ApiException e) {
// Google Sign In failed, update UI appropriately
Log.d(TAG, "Google sign in failed", e);
}
setResult(RESULT_OK);
}
}
Спасибо за потраченное время.