应用程序在unity编辑器中工作,但在android上不工作

zzoitvuj  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(453)

构建与php/mysql后端通信的unity前端应用程序。现在我正在处理它的注册和登录部分。在unity编辑器中,所有的工作都很完美,在浏览器前端注册也工作得很好。但是当我在unity中使用工作构建并在我的google pixel手机上进行测试时,注册和登录在我的手机上都失败了。登录时收到的错误消息是“解析服务器响应时出错,请重试!”在我的uilogin.cs中。然而,没有其他附加条件。我试着按照unity文档进行调试、adb和ddms来获取访问权限,以了解正在发生的事情,但我在所有这些项目上都失败了。android和www对象或web通信有什么特别不同的地方吗?这是我的uilogin.cs的一部分,还将包括login.php。
uilogin.cs

IEnumerator AttemptLogin(bool quickLogin)
    {
        CreateLoadingScreen();
        DeactivateForm();
        WWWForm form = new WWWForm();
        form.AddField("email", Email.text);
        form.AddField("password", Password.text);

        WWW www = new WWW(URL.GetLoginURL, form);
        yield return www;

        DestroyLoadingScreen();
        ActivateForm();
        ParseResult(www.text, quickLogin);
    }

    void ParseResult(string result, bool quickLogin)
    {
        byte resultCode;
        if (!byte.TryParse(result, out resultCode))
            Result.text = "Error parsing response from server, please try again!";
        else if (resultCode == 0)
        {
            if (RememberToggle.isOn && !quickLogin) // Remember me
            {
                PlayerPrefs.SetInt("remember", 1);
                PlayerPrefs.SetString("email", Email.text);
                PlayerPrefs.SetString("password", Password.text);
            }
            else if (!quickLogin)
            {
                TemporaryAccount.Email = Email.text;
                TemporaryAccount.Password = Password.text;
            }

            SceneManager.LoadScene(3);
        }
        else // Failure
        {
            if (quickLogin)
                ShowForm();

            Result.text = WebError.GetLoginError(resultCode);
        }
    }

登录.php

<?php
    require "conn.php";

    $stmt = $pdo->prepare("SELECT * FROM account WHERE email=:email");
    $stmt->bindParam(":email", $_POST['email']);
    $stmt->execute();
    $count = $stmt->rowCount(); // gets count of records found

    if($count > 0) {
        $result = $stmt->fetch(); // gets resultset
        if(!password_verify($_POST['password'], $result[4]))
            echo "2";
        else
            echo "0";
    }
    else {
        echo "1";
    }
?>

有什么想法吗?
更新#1我已打印www.text 以及www.error 收益回报后;文本为空,错误为:未知错误。
更新#2有趣的是,我也从中得到未知错误:
单击me.cs

using System.Collections;
using UnityEngine;
using UnityEngine.UI;

public class Clickme : MonoBehaviour
{
    public Text Result;

    public void OnClick()
    {
        StartCoroutine(RunScript());
    }

    IEnumerator RunScript()
    {
        WWW www = new WWW("http://www.familypolaris.com/helloWorld.php");
        yield return www;

        if (www.text == "")
            Result.text = "Result was empty, error: " + www.error;
    }
}

helloworld.php

<?php
    echo "Hello World!";
?>
y4ekin9u

y4ekin9u1#

我想出来了,所以我会把答案贴在这里。在有人评论说他们试过我的代码,而且效果很好之后,我决定在这里尝试另一个设备。该设备也无法注册和登录。这说明我的构建设置有问题。我的第一个想法是将构建类型从gradle切换到internal,这立即解决了我的两个设备的问题。

相关问题