【发布时间】: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 和传递给它的参数。这包括
data、responseHandler和baseurl变量。 -
正如我所说,它可以在所有其他平台上运行,甚至可以在 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。我想这就是问题所在,但我不知道如何以及在哪里设置它。