【问题标题】:UnityWebRequest not working in iOSUnityWebRequest 在 iOS 中不起作用
【发布时间】:2016-10-16 11:40:32
【问题描述】:

https://docs.unity3d.com/Manual/UnityWebRequest.html 上给出的示例可以按预期在 Windows 桌面、Windows Mobile、Android 甚至 iOS 编辑器中运行。但是当我将应用程序发布到 Apple App Store 时,它​​无法连接到互联网。与其他平台不同,它没有明显的延迟,并且在尝试请求时似乎立即失败。

错误是:

未知错误

我需要通过什么特殊方式配置 XCode 项目以允许 iOS 应用连接到互联网吗?

不管怎样,这里是调用的源代码:

    IEnumerator SyncRequest(string data, Action<string> responseHandler)
{
    Debug.Log("Requesting " + data);

    UnityWebRequest www = UnityWebRequest.Get(baseurl + "/api-voteoptions.php?" + data);

    yield return www.Send();

    if (www.isError) // <-- Always true on published iOS app
    {
        string error = www.error; // <-- "Unknown Error"
        Debug.LogWarning(error);

        if (responseHandler != null)
        {
            responseHandler(error);
        }
    }
    else
    {
        string response = www.downloadHandler.text;
        Debug.Log(response);

        if (responseHandler != null)
        {
            responseHandler(response);
        }
    }
}

【问题讨论】:

  • 这可以是任何东西。我可能是您的服务器有问题,或者您发送请求的网址有问题。不幸的是,唯一的帮助方法是复制您的问题。为此,您必须提供 url 和传递给它的参数。这包括dataresponseHandlerbaseurl 变量。
  • 正如我所说,它可以在所有其他平台上运行,甚至可以在 Apple Macbook 上的 iOS 上 100% 正常运行。只有当我在 Apple App Store 上发布应用程序时,我才会遇到上述问题。所以 1) 它不能是服务器,因为它可以在其他平台上运行 2) 它不能是代码,因为相同的代码无需修改它就可以在其他平台上运行 3) 它不能是数据,因为它是一个 GET 请求相同的数据。唯一的区别是 App Store 以及 Unity 在幕后所做的将代码打包到 ObjectiveC 或 App“捆绑包”中的任何工作。
  • “正如我所说,它适用于所有其他平台,甚至适用于 iOS” 是否适用于其他平台并不重要。我在 SO 上解决了一些这样的问题,它们最终成为服务器或 url。 “它不可能是代码,因为相同的代码无需修改它就可以在其他平台上运行” 当然,我们可以将其归咎于 App Store。我们都知道我们没有能力在 App Store 上修复任何东西,所以我应该继续前进。编码愉快!
  • 我怀疑我缺少某种 XCode 项目设置或标志或其他东西,但除了在 plist 文件中的“功能”中添加“wifi”标志之外,我找不到任何有用的东西,但即使这没有任何区别。所有其他移动设备项目我必须明确指出我需要该应用程序的“互联网”权限,但我找不到任何类似的 ios。我想这就是问题所在,但我不知道如何以及在哪里设置它。

标签: ios xcode http unity3d


【解决方案1】:

找到了解决办法。事实证明,我必须在 Info.plist 文件中指定我要允许 iOS 应用程序的“不安全”http 连接。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>just-an-example.com</key>
        <string></string>
    </dict>
</dict>

【讨论】:

    【解决方案2】:
    IEnumerator loadingImage()
    {
        string url = "http://picturekeyboardapps.in/UnityApp/CarStunt/getCarTextures.php";
        UnityWebRequest webrequest = UnityWebRequest.Get(url);
        yield return webrequest.SendWebRequest();
        if (webrequest.isNetworkError || webrequest.isHttpError)
        {
            print("Network Error"); // return Unkown Error IOS Mobile
        }
        else
        {
        }
    }
    

    【讨论】:

    • 如果您描述您的提议以及这与 OP 问题有何关系,这将是一个更好的答案。
    • 它用于从 api 下载图像但一直显示未知错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多