У меня есть многоплатформенное приложение Compose, и мне нужно, чтобы оно взаимодействовало с сервером. Следовательно, у меня есть клиент Ktor внутри модуля shared/
и сервер Ktor в модуле server/
.
Я разместил сервер в своей локальной сети и установил приложение на свой модуль. Однако в logcat есть сообщение:
Я обнаружил, что это связано с тем, что у меня нет сетевых разрешений в приложении Android для моего телефона Android. Исходя из собственной разработки Android, я подумал, что могу добавить это в файл манифеста (по адресу composeApp/src/androidMain/AndroidManifest.xml
):
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android">
<uses-permission android:name = "android.permission.INTERNET" />
<application>...</application>
</manifest>
В родной версии Android это будет работать. Однако приложение не установилось на мой телефон Android со строкой uses-permission
.
Как запросить сетевые разрешения в моем многоплатформенном приложении Compose?
Вам не нужны сетевые разрешения, вам нужны разрешения в виде открытого текста. Это разные вещи. Сеть позволяет сделать запрос на сервер. У вас это есть выше. Открытый текст позволяет отправлять запросы, отличные от HTTPS (HTTP-запросы без шифрования). Ошибка, которую вы показываете, связана с отсутствием разрешений на открытый текст. Для этого вам необходимо запросить открытый текст, добавив android:usesCleartextTraffic="true" к тегу приложения в вашем манифесте. Обратите внимание, что это может привести к тому, что ваше приложение будет отклонено из Play Store по соображениям безопасности.
Этот код используется для моего университетского группового проекта, поэтому я не против, если это пока не HTTPS. Спасибо за Ваш ответ. Знаете ли вы, будет ли это работать на iOS? Если нет, то какие шаги мне следует предпринять, чтобы платформа iOS также могла выполнять этот сетевой вызов?