Вопрос проверяет знание основных технологий и протоколов для обмена данными между мобильным клиентом и сервером, что необходимо для создания сетевых функций приложения.
Клиент-серверное взаимодействие — основа большинства современных мобильных приложений, позволяющая получать данные, отправлять действия пользователя и синхронизировать состояние. Выбор технологии зависит от требований к производительности, объёму данных, частоте обновлений и сложности API.
Пример простого REST-запроса на Swift (iOS) с использованием URLSession:
// Запрос списка пользователей
let url = URL(string: "https://api.example.com/users")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else { return }
// Десериализация JSON
let users = try? JSONDecoder().decode([User].self, from: data)
// Обновление UI
}
task.resume()Пример подписки на обновления через WebSocket в Android с использованием библиотеки OkHttp:
// Создание клиента WebSocket
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url("ws://echo.websocket.org").build();
WebSocket ws = client.newWebSocket(request, new WebSocketListener() {
@Override
public void onMessage(WebSocket webSocket, String text) {
// Обработка входящего сообщения от сервера
runOnUiThread(() -> updateChat(text));
}
});
// Отправка сообщения на сервер
ws.send("Hello from Android!");Вывод: REST API — универсальный выбор для большинства типовых задач (загрузка ленты, отправка форм). GraphQL стоит рассмотреть при сложных данных и желании оптимизировать трафик. WebSocket необходим для функций реального времени. gRPC оптимален для внутренней коммуникации сервисов или мобильных приложений, где критична производительность и низкая задержка.