首页 > 解决方案 > Xamarin.ios 不能在真正的 iOS 设备上运行,但它可以在模拟器上运行

问题描述

我构建了一个移动应用程序。这个应用程序在 iOS 模拟器、Android 模拟器和 Android 真机上运行良好。但是当我在 TestFlight 上发布它并安装在真正的 iOS 设备上时,这个应用程序就不起作用了。我没有收到任何错误。我的微调器(激活器指示器)一直在运行,我无法从 HttpResponse 获得任何响应。我用Web 服务构建了这个应用程序。因此我使用http://46.221..... url 来发布或获取请求。我以为 iOS 不支持http请求是因为安全。但如果这是真的那么为什么这个应用程序在模拟器上运行得很好?我找不到任何解决方案。这是我的部分代码:

public async Task<BSUser> ValidateUser(string userName, string password)
    {
        string url = Xamarin.Essentials.Preferences.Get(Constants.URL_KEY, "") + "/api/Validateuser";
        HttpClient _Client = new HttpClient();

        var data = new Dictionary<string, string>
        {
          {"userName", userName},
          {"password", password}
        };

        string jsonData = JsonConvert.SerializeObject(data);
        HttpContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");

        try
        {
            HttpResponseMessage httpResponse = await _Client.PostAsync(url, content);
            if (httpResponse.IsSuccessStatusCode)
            {
                var responseData = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);
                var result = JsonConvert.DeserializeObject(responseData).ToString();
                UserInfo userInfo = JsonConvert.DeserializeObject<UserInfo>(result);

                BSUser value = new BSUser();
                value.UserName = userInfo.userCode;

                return value;
            }
            else
            {
                return null;
            }
        }
        catch (SystemException)
        {
            return null;
        }
    }

在此处输入图像描述

标签: c#iosweb-servicesxamarin.iosrest

解决方案


我发现了我的项目的问题。它与 HTTPS-HTTP 或安全情况无关。这太荒谬和不合逻辑,但这是真正的问题。我的应用程序可以在任何 iOS 模拟器上运行良好,但是,Visual Studio 中模拟器的最低版本是iPhone-8但是当我在iPhone-6 的真实设备上安装我的应用程序时,我得到了Newtonsoft.Json.JsonSerializationException错误。但是我的 HttpResponse 返回了 200OK,我看到所有来自我的服务的值都是 json。我认为旧 ve 新版本的 iPhone 转换 Json 序列化之间存在一些差异。


推荐阅读