- 10 best chat room apps for Android
- The best chat room apps for Android
- Amino
- Discord
- Grouvi
- MeetMe
- Telegram
- Viber
- Whisper
- Zello
- Как создать чат приложение для Android с помощью Firebase
- Предпосылки
- 1. Создадим проект Android Studio
- 2. Добавим зависимости
- 3. Зададим макеты (layouts)
- 4. Управление аутентификацией пользователя
- Шаг 1. Обработка входа пользователя
- Этап 2. Обработка выхода пользователя из системы
- 5. Создание модели
- 6. Отправляем сообщение в чат
- 7. Отображение сообщений чата
- Вывод
10 best chat room apps for Android
Chat rooms don’t get the love they once did. AOL Instant Messenger, IRC, and other similar chat services don’t really exist much anymore despite the spike in data-driven messaging services. However, there are still some excellent chat room experiences out there if you know where to find them. There are a ton of messenger apps that allow for group chats. In fact, very nearly all of them do to our knowledge. However, those apps rarely have public chat rooms to join and engage with random people. If all you want is a group messaging, we might recommend our best messenger apps list linked up just below. Otherwise, let’s check out the best chat room apps for Android!
The best chat room apps for Android
Amino
Price: Free with in-app purchases
Amino is a popular chat room app similar in scope to apps like Band or Discord. There are a variety of communities for a variety of topics and you can create your own if you want to. Discord likes to cater mostly to gamers, but Amino likes to cater to as many people as possible and that’s probably why it’s so popular. In any case, you can explore the app, join communities, chat with people, and customize your profile. However, people stay for the various extras like Instagram and Snapchat-style stories, the ability to add polls and quizzes, and even watch videos or read blogs. It’s a weirdly neat all-in-one style chat if you’re into that sort of thing.
Price: Free
Band is a popular group chat app with a focus for general topics. You can create ones for work, sports, games, school, video games, family, friends, etc. It has features that work for almost all of those kinds of things. The actual chat experience is very similar to your standard chat app so there are no surprises there. The app doesn’t have public chats like many others. However, there are plenty of organizations and groups that use this so you may run into it on your own eventually. We would like some more power over things like notifications because this app sends a lot of them, but otherwise it’s a very decent experience.
Discord
Price: Free / $4.99 per month
Discord is one of the most popular chat room apps on the list. It’s predominately for gamers rather than normal folks. However, normal folks can use it as well. It’s just a chat room app with a lot of features so don’t feel like you only have to use it for gaming. This one mostly dabbles in private chat rooms, but there are some public chats out there if you search for them. Some other features include voice channels, direct messages between individual members, and you can join as many servers as you want to. It’s also entirely free to use. The $4.99 subscription only adds cosmetic extras like GIF emotes and the ability to use any emote on any server.
Grouvi
Price: Free
Grouvi is a bit of a wild card on this list. It’s newer, not very popular, and we don’t know a lot about it. However, it boasts a classic public chat experience with a number of chats for a variety of topics. There seems to be a trend toward tech savvy topics like ethical hacking or Linux. This is definitely not some random dating site chat room style of app. It wasn’t overly active during our testing, but again it’s rather new and there aren’t a ton of people. It may be fun, it might not be, but only time will tell. In the meantime, the app is free with no ads or in-app purchases as of the time of this writing.
Price: Free
ICQ is one of the classic chat room apps. It underwent several changes over the years. It now functions like your standard chat apps do these days. You can direct message, video chat, and all of that stuff. However, it also still offers random public chat room similar to the old AIM or IRC services. There are chats for students, new users to ICQ, people in their 30’s, people in their 20’s, people from various parts of the world, some late night chat rooms, and a lot more. Those looking for the classic late 1990’s, early 2000’s style chat rooms should look no further because ICQ still has them after all these years.
MeetMe
Price: Free with in-app purchases
MeetMe is a cross between a dating service and a chat room app. It boasts a load of active users, but they aren’t well distributed between genders. Thus, it’s not great as a standalone dating site. It’s a good way to meet people, though, and you do get into chats with random strangers so it technically fulfills the qualifications. It is one of the weaker options on this list, though. The app claims to be for all ages, and that’s ridiculous. It’s obviously for adults only. It’s acceptable occasionally, and the large number of people increases your chances of finding interesting people. However, we’d probably recommend one of the other nine chat room apps first.
Telegram
Price: Free
Telegram is one of the most popular messaging apps on the list. It functions primarily as a private chat app with group chat functionality. However, you can create chat rooms in the app (referred to as channels). These channels are private. However, tons of organizations, people, groups, etc make their chats public for the sake of communication. You can also create channels and share the link with whoever to create your own. It would be awesome if Telegram had a public chat room community, but the private chat room community is so good that it’s almost just as good. You may just need to search around for readily available channels on Google Search.
Viber
Price: Free with in-app purchases
Viber is like a much more popular version of Nimbuzz. It focuses mostly on text chats, voice calls, and video chats along with fun stuff like stickers, group chats, and other stuff. You can also make phone calls to landlines Skype style for a nominal fee. However, it does have a selection of public chat rooms for meeting new people, discussing topics, and stuff like that. You can find chats for basically anything or you can create your own and people will join eventually (probably). The in-app purchases are for things like the regular phone call fees and sticker packs. The majority of the service is completely free to use.
Whisper
Price: Free
Whisper is one of the few classic chat room style apps with some popularity. It boasts a community of 30 million monthly active users and chat rooms for all sorts of fun topics. Additionally, you can find chat rooms popular on the service, stuff happening nearby (location permission required), and the newest chat rooms on the service. The biggest difference is that it uses a tweet-style posting system instead of a standard chat UI. That makes it different for sure. There are also a sizable number of negative people who say and do negative things, but how much that matters depends on your tolerance level for that kind of behavior. It’s fun, but it has its problems.
Zello
Price: Free
Zello is a dual purpose app. It has a walkie talkie feature with a push-to-talk style that lets you communicate with basically anybody on the fly. However, this one also has a variety of chat room style features as well. You can create public chat rooms or private ones with up to 6,000 users at once and you can use the PTT function to actually talk to them ham radio style. We don’t recommend this for your standard, old school Internet chat room experience. However, it does have its own charms.
If we missed any great chat room apps for Android, tell us about them in the comments! You can also click here to check out our latest Android app and game lists!
Источник
Как создать чат приложение для Android с помощью Firebase
Russian (Pусский) translation by Ellen Nelson (you can also view the original English article)
С Firebase, создание «живого» социального приложения, покажется вам прогулкой в парке. И самое хорошее: вам не нужно писать ни одной строчки кода на стороне сервера.
В этом уроке я покажу вам, как использовать Firebase UI для создания приложения группового чата, которым вы можете поделиться с друзьями. Это будет очень простое приложение с одним чатом, доступным для всех пользователей.
Как вы, возможно, догадались, приложение будет зависеть от Firebase Auth для управления регистрацией и регистрацией пользователей. Он также будет использовать базу данных Firebase в реальном времени для хранения сообщений группового чата.
Предпосылки
Чтобы выполнить это пошаговое руководство, вам понадобится следующее:
Инструкции о том, как настроить учётную запись в Firebase и подготовиться к разработке с Firebase в Android Studio, смотрите мой учебник Начало работы с Firebase для Android здесь на Envato Tuts+.
1. Создадим проект Android Studio
Запустите Android Studio и создайте новый проект с пустой активити под названием MainActivity.
Для того, чтобы настроить проект для использования платформы Firebase, откройте окно Firebase Assistant, нажав на Tools > Firebase.
При использовании платформы Firebase, как правило, хорошей идеей будет добавить в проект Firebase Analytics. Таким образом, внутри окна помощника Firebase, перейдите в раздел Analytics и нажмите Log an Analytics event.
Затем нажмите кнопку Connect to Firebase и убедитесь, что выбрана опция Create new Firebase project. После того, как соединение установиться, нажмите кнопку Add Analytics to your app.
На данный момент проект Android Studio не только интегрирован с Firebase Analytics, но и готов использовать все другие службы Firebase.
2. Добавим зависимости
В этом проекте мы будем использовать две библиотеки: Firebase UI и библиотеку поддержки дизайна Android. Поэтому, откройте файл build.gradle модуля app и добавьте следующие зависимости, как compile :
Нажмите кнопку Sync Now, чтобы обновить проект.
3. Зададим макеты (layouts)
Файл activity_main.xml, который уже привязан к MainActivity , определяет содержимое главного экрана приложения. Другими словами, он будет представлять чат-комнату.
Как и большинство других приложений для группового чата, доступных сегодня, наше приложение будет иметь следующие элементы интерфейса:
- Список, который отображает все сообщения группового чата в хронологическом порядке
- Поле ввода, в котором пользователь может ввести новое сообщение
- Кнопка, которую пользователь может нажать, чтобы отправить сообщение
Поэтому activity_main.xml должен содержать ListView , EditText и FloatingActionButton . После размещения их внутри виджета RelativeLayout ваш XML-макет должен выглядеть так:
Обратите внимание, что я поместил виджет EditText в виджет TextInputLayout . Это добавит плавающий ярлык в EditText , что очень важно, если вы хотите придерживаться принципов материального дизайна.
Теперь, когда макет исходного экрана готов, мы можем перейти к созданию макета для сообщений чата, которые будут элементами внутри ListView . Начните с создания нового XML файла макета под названием message.xml, чей корневой элемент RelativeLayout .
Макет должен содержать виджеты TextView для отображения текста сообщения чата, времени его отправки и его автора. Вы можете разместить их в любом порядке. Вот макет, который я буду использовать:
4. Управление аутентификацией пользователя
Разрешить пользователям общаться в чат-комнате анонимно, не самая лучшая идея. Это может привести к спаму, проблемам с безопасностью и к другим не идеальным ситуациям в общении. Поэтому давайте настроим наше приложение так, чтобы только зарегистрированные пользователи могли читать и публиковать сообщения.
Для начала, перейдите в раздел Auth в Firebase Console и включите возможность регистрации по Email/Password.
Не стесняйтесь подключать поставщиков OAuth 2.0. Однако, FirebaseUI v0.6.0 без проблем поддерживает только вход в Google и Facebook.
Шаг 1. Обработка входа пользователя
Как только приложение запускается, оно должно проверять, вошёл ли пользователь в систему. Если да, приложение должно отобразить содержимое комнаты для дискуссий. В противном случае оно должно перенаправить пользователя на экран входа или регистрации. Для создания этих экранов с FirebaseUI требуется намного меньше кода, чем вы можете себе представить.
Внутри метода onCreate() в MainActivity проверьте, был ли пользователь зарегистрирован, проверив, не является ли текущий объект FirebaseUser null . Если оно равно NULL , необходимо создать и настроить объект Intent , который открывает активити входа. Для этого используйте класс SignInIntentBuilder . После этого, вы должны запустить активите входа, используя метод startActivityForResult() .
Обратите внимание, что вход в систему также может зарегистрировать нового пользователя. Поэтому у вас нет необходимости писать дополнительный код для обработки регистрации пользователя.
Добавьте следующий код в метод onCreate() :
Как вы видите в приведенном выше коде, если пользователь уже вошёл в систему, мы сначала отображаем Toast приветствуя пользователя, а затем вызываем метод displayChatMessages. Пока что, просто создайте для этого заглушку. Код в него мы добавим позже.
Как только пользователь выполнит вход, MainActivity получит результат от Intent . Чтобы обработать его, вы должны переопределить метод onActivityResult() .
Если код результата — RESULT_OK , это означает, что пользователь выполнил вход успешно. Если это так, вы должны снова вызвать метод displayChatMessages() . В противном случае вызовите finish() , чтобы закрыть приложение.
На этом этапе вы можете запустить приложение и посмотреть на экран входа и регистрации.
Этап 2. Обработка выхода пользователя из системы
По умолчанию, FirebaseUI использует Smart Lock для паролей. Поэтому, как только пользователи входят в систему, они останутся в системе, даже если приложение будет перезапущено. Чтобы пользователи могли выйти из системы, мы добавим параметр «Выход» в меню MainActivity .
Создайте новый файл меню ресурсов с именем main_menu.xml и добавьте к нему один элемент item , название title которого — Выход. Содержимое файла должно выглядеть так:
Чтобы создать экземпляр ресурса меню внутри MainActivity , переопределите метод onCreateOptionsMenu() и вызовите метод inflate() объекта MenuInflater .
Затем переопределите метод onOptionsItemSelected() для обработки событий клика по пункту меню. Внутри этого метода вы можете вызвать метод signOut() класса AuthUI для выхода пользователя. Поскольку операция выхода из системы выполняется асинхронно, мы также добавим туда OnCompleteListener .
Когда пользователь выйдет из системы, приложение должно автоматически закрыться. Вот почему вы видите вызов метода finish() в коде выше.
5. Создание модели
Чтобы сохранять сообщения чата в базе данных Firebase в реальном времени, вы должны создать для них модель. Макет сообщения чата, который мы создали ранее в этом уроке, имеет три представления. Чтобы иметь возможность заполнить эти представления, модель также должна иметь как минимум три поля.
Создайте новый Java класс под названием ChatMessage.java и добавьте к нему три переменные: MessageText , messageUser и messageTime . Также добавьте конструктор для инициализации этих переменных.
Чтобы сделать модель совместимой с FirebaseUI, также нужнжо добавить конструктор по умолчанию, а также геттеры и сеттеры для всей группы переменных.
На этом этапе класс ChatMessage должен выглядеть так:
6. Отправляем сообщение в чат
Теперь, когда модель готова, мы можем легко добавлять новые сообщения чата в базу данных Firebase в реальном времени.
Чтобы отправить новое сообщение, пользователь будет нажимать FloatingActionButton . Поэтому вы должны добавить к ней OnClickListener .
Внутри слушателя вы должны сначала получить объект DatabaseReference , используя метод getReference() класса FirebaseDatabase . Затем вы можете вызвать методы push() и setValue() , чтобы добавить новые экземпляры класса ChatMessage в базу данных реального времени.
Экземпляры ChatMessage должны, конечно, быть инициализированы с использованием содержимого EditText и отображать имя текущего пользователя.
Соответственно, добавьте следующий код в метод onCreate() :
Данные в базе данных реального времени Firebase всегда сохраняются в виде пар «ключ-значение». Однако, если вы посмотрите код выше, вы увидите, что мы вызываем setValue() без указания какого-либо ключа. Это возможно только потому, что вызову метода setValue() предшествует вызов метода push() , который автоматически генерирует новый ключ.
7. Отображение сообщений чата
FirebaseUI имеет очень удобный класс под названием FirebaseListAdapter, что значительно снижает попытки, необходимые для заполнения ListView , используя данные, имеющиеся в базе данных Firebase. Сейчас мы будем использовать его для извлечения и отображения всех объектов ChatMessage , которые присутствуют в базе данных.
Добавьте объект FirebaseListAdapter в качестве новой переменной класса MainActivity .
Внутри метода displayChatMessages() инициализируйте адаптер, используя его конструктор, который ожидает следующие аргументы:
- Ссылка на Activity
- class объекта, который вас интересует
- Расположение элементов списка
- Объект DatabaseReference
FirebaseListAdapter является абстрактным классом и имеет абстрактный метод populateView() , который должен быть переопределен.
Как следует из его названия, populateView() используется для заполнения представлений каждого элемента списка. Если вы знакомы с классом ArrayAdapter , вы можете думать о populateView() как альтернативе методу getView() .
Внутри метода, вы должны сначала использовать findViewById() , чтобы получить ссылки на каждый TextView , который присутствует в файле макета message.xml. Затем вы можете вызвать их методы setText() и заполнить их с помощью геттеров класса ChatMessage .
На этом этапе содержимое displayChatMessages() должно выглядеть следующим образом:
Приложение группового чата готово. Запустите его и отправьте новые сообщения, чтобы они сразу же появились в ListView . Если вы поделитесь приложением с друзьями, вы также сможете видеть их сообщения, как только они их отправят.
Вывод
Из этого урока вы узнали, как использовать Firebase и FirebaseUI для создания очень простого приложения группового чата. Вы также видели, как легко работать с классами, доступными в FirebaseUI, для быстрого создания новых экранов и реализации сложных функций.
Чтобы узнать больше о Firebase и FirebaseUI, перейдите к официальной документации. Или ознакомьтесь с некоторыми другими нашими уроками по Firebase здесь, на Envato Tuts+!
Источник