Код: Выделить всё
using Acr.UserDialogs;
using Seraphis.Model;
using System;
using System.Diagnostics;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
namespace Seraphis.Api
{
class FetchCoinDeskDataApi
{
private readonly HttpClient _client;
public FetchCoinDeskDataApi()
{
_client = new HttpClient();
}
public async Task FetchCoinDeskDataAsync()
{
string url = "https://api.coindesk.com/v1/bpi/currentprice.json";
try
{
var response = await _client.GetStringAsync(url);
if (string.IsNullOrEmpty(response))
{
Debug.WriteLine("Empty response received.");
UserDialogs.Instance.Toast("No data received from API.");
return null;
}
Debug.WriteLine($"Response: {response}");
return response;
}
catch (HttpRequestException httpEx)
{
Debug.WriteLine($"HTTP Error: {httpEx.Message}");
UserDialogs.Instance.Toast("Failed to fetch data. Please check your internet connection.");
return null;
}
catch (Exception ex)
{
Debug.WriteLine($"Error: {ex.Message}");
UserDialogs.Instance.Toast("An error occurred while fetching the data.");
return null;
}
}
}
}
API отлично работает в режиме отладки, но в режиме выпуска — нет. t показать данные. Обработка ошибок: я добавил блоки try-catch для регистрации ошибок в случае сбоя, но в режиме выпуска ничего не отображается. Инициализация HttpClient: я повторно использую HttpClient на протяжении всего срока службы приложения. Разрешения: я проверил, что необходимые разрешения в Интернете объявлены как для Android (AndroidManifest.xml), так и для iOS (Info.plist). Ведение журнала: я использую Debug.WriteLine для ведения журнала, но он не отображается в режиме выпуска.
Вещи, которые я подозреваю:
Проблема компоновщика/обрезки. Возможно, некоторые части кода обрезаются или удаляются во время компиляции релиза. Разрешения, связанные с сетью. В режиме выпуска могут возникнуть проблемы с доступом к сети. Проблемы с тайм-аутом/сетью. Между отладкой и выпуском могут быть некоторые различия, из-за которых сетевые запросы не выполняются в режиме выпуска.
Что я пробовал:
Я подтвердил, что конечная точка API доступна и с самим API проблем нет. Пытался отключить обрезку в файле .csproj в целях отладки (ложь). Я также убедился, что разрешения в Интернете установлены правильно.
Что я ищу:
Почему отображаются данные в режиме отладки, но не в режиме выпуска? Как я могу исправить эту проблему, чтобы вызов API работал и в режиме выпуска? Есть какие-нибудь советы о том, как отлаживать проблемы API в режиме выпуска или конфигурации, которые могут нуждаться в корректировке для выпуска?
Будем очень благодарны за любую помощь!
Подробнее здесь: https://stackoverflow.com/questions/791 ... pplication