powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Android [игнор отключен] [закрыт для гостей] / Посоветуйте по плиз по приложению Kotlin Android
3 сообщений из 3, страница 1 из 1
Посоветуйте по плиз по приложению Kotlin Android
    #40121343
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет, до этого никогда не писал мобильные приложения, но тут пришлось и столкнулся со следующими вопросами ввиду отсутствия опыта. Посоветуйте пожалуйста по следующим пунктам.
1) Есть форма аутентификации (логин+пароль) отправляет POST запрос через Retrofit и в случае успеха получает acsess_token и переходит на основной экран приложения.
Как правильно организовывать login form и main form- как 2 разные Activity или как два Fragment одной Activity?
Где правильно хранить acsessToken, чтобы при сворачивании приложения он не убивался? В SharedPreferences или Singleton классе?
В текущий момент RetrofitClient реализован следующим образом
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
object RetrofitClient {
    const val MainServer = "http://10.0.2.2:5000"
    val retrofitClient: Retrofit.Builder by lazy {
        val okhttpClient = OkHttpClient.Builder()

        Retrofit.Builder()
            .baseUrl(MainServer)
            .client(okhttpClient.build())
            .addConverterFactory(GsonConverterFactory.create())
    }

    val apiInterface: RetrofitApiService by lazy {
        retrofitClient
            .build()
            .create(RetrofitApiService::class.java)
    }
}


Это конфигурация, когда нужно отправить http запрос без токенов. При получении acsessToken нужно будет добавить Interceptor, который проставляет в каждый последующий запрос Header с Bearer = AcsessToken
Соответственно вижу 2 варианта- уничтожить старый RetrofitClient и создать новый уже с учетом Interceptor или использовать Observer, который будет смотреть доступен ли token в TokenRepository например, и когда он появится там, то встроить этот интерсептор. Как это на практике делается?
2) Необходимо реализовать механизм приема данных мобильным приложением по инициативе сервера (push Notification). То есть backend посылает команду мобильному приложению- "Посмотри для тебя появились новые данные-загрузи их". Эта функциональность должна работать и в случае с "свернутого" состояния приложения.
Подойдет ли Bound service для этой задачи или нужно использовать какой-либо другой?
Для отправки push-notification на android-устройства рекомендуется использовать Firebase Cloud Messaging. Есть ли какой-либо вендоро-независимый аналог с такой-же функциональностью типа как SignalR в веб-приложениях?
Спасибо
...
Рейтинг: 0 / 0
Посоветуйте по плиз по приложению Kotlin Android
    #40121375
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
Как правильно организовывать login form и main form- как 2 разные Activity или как два Fragment одной Activity?
на это трудно ответить однозначно - можно и так и так. это имхо непринципиальный вопрос. Главное, если решите использовать фрагменты, то воспользуйтесь jetpack navigation - худшее, что можно сделать в данном случае, это городить велосипед.

vb_sub
Где правильно хранить acsessToken, чтобы при сворачивании приложения он не убивался? В SharedPreferences или Singleton классе?
в Singleton он полюбому не выживет так как приложение в фоне может быть убито. Где хранить - зависит от постановки задачи. Если пользователь должен быть залогинен, пока не закроет приложение, выйдя из него явно, то можно хранить где угодно, при сворачивании приложения его нужно сохранить в состоянии приложения, при восстановлении - восстановить (смотреть тут ). Если пользователь должен быть залогинен постоянно пока не выйдет явно или не протухнет токен, то да - можно в shared preferences.

vb_sub
Как это на практике делается?

я добавляю Interceptor, который имеет доступ к классу, где хранится токен (как он имеет к нему доступ, это уже вопрос архитектурный - синглтон, dependency injection - кому что). Если токен есть, он добавляется к header, если нет, то нет

vb_sub
Подойдет ли Bound service для этой задачи

Нужен Background Service

vb_sub
рекомендуется использовать Firebase Cloud Messaging

да

vb_sub
Есть ли какой-либо вендоро-независимый аналог с такой-же функциональностью
как бы это сказать, с одной стороны сколько угодно - берешь xmpp клиент + свой сервер и вот уже есть push но!!! В андроид чем дальше, тем труднее работать с background сервисами, ибо ограничивают их по всем фронтам. По-этому любое решение кроме "родного" в перспективе обойдется массой головной боли, проблем и работать будет сильно хуже. Например, когда включается Doze, то даже через FCM своевременно будут доходить только сообщения с приоритетом high, все остальное будет откладываться до какого-то момента в будущем, когда телефон выйдет из doze. По-этому нужно ну очень хорошо подумать, прежде чем грести против течения, серьезно - не даром большинство мессенджеров стараются использовать для каждой платформы ее стандартный push, потому что как только система начинает экономить батарейку, всячески закручивать гайки и безобразничать - только на него и надежда
...
Рейтинг: 0 / 0
Посоветуйте по плиз по приложению Kotlin Android
    #40121842
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpasha,
благодарю
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Посоветуйте по плиз по приложению Kotlin Android
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]