- Социальная сеть на Android за несколько выходных — часть II (сервер)
- Краткое содержание первой части
- Содержание
- Введение
- Регистрация
- Синхронизация контактов
- Загрузка фотографий
- Push-уведомления
- Очереди асинхронных задач
- Простой и удобный способ добавления социальных сетей в Андроид приложение на примере Вконтакте и Одноклассники
- Регистрация приложения в социальной сети
- Интеграция Вконтакте и Одноклассники в приложение
- Запросы к Социальным сетям
- 5 шагов к успешной мобильной соцсети
- #1. Определите цель
- #2. Составьте портрет целевой аудитории
- #3. Продумайте функционал мобильной соцсети
- #4. Проработайте интерфейс
- #5. Переходите к разработке и тестированию
- Подпишитесь
Социальная сеть на Android за несколько выходных — часть II (сервер)
Краткое содержание первой части
Содержание
Введение
Регистрация
Синхронизация контактов
Для построения графа друзей на сервере ведется учет контакт-листов пользователей и сопоставление его с телефонными номерами пользователей, указанными при регистрации. Все контакт-листы хранятся в хэшированном виде. Телефонные номера должны быть приведены к нормальной форме, для чего используется библиотека libphonenumber от Google.
Стоит отметить один нюанс – код страны определяется в формате ISO-3166 относительно устройства пользователя, т.е. даже если в моей контактной книге находятся телефонные номера других стран, то при нормализации этих номеров необходимо использовать код страны «приписки» sim-карты моего устройства — RU.
Сопоставление телефонов происходит в одном из двух случаев:
- При регистрации нового пользователя, его телефон сравнивается с уже существующими контакт-листами
- Также при каждом запуске приложения контакт-лист повторно отправляется на сервер для выявления новых контактов
Для описанного сценария на БД сервера создается две таблицы – одна для самого контакт-листа и вторая для списка подтвержденных друзей (сам граф друзей). Такая схема позволяет изменять существующие контакты, не нарушая сформированные ранее ребра графа друзей.
Загрузка фотографий
В качестве хранилища фотографий мы выбрали два варианта – бесплатный аккаунт(free tier) AWS S3 как основной и собственный сервер как запасной (например на случай превышения лимита запросов в бесплатном аккаунте S3).
Рис 1. Загрузка изображений на AWS S3 |
Перед загрузкой клиент запрашивает у сервера временную публичную ссылку с правами записи, выполняет загрузку по этой ссылке напрямую на S3, после чего сообщает на сервер об успешной загрузке. Для работы с AWS S3 мы использовали aws-sdk gem. Перед работой необходимо завести аккаунт в AWS Web Services (на момент разработки была возможность завести бесплатный тестовый аккаунт на 5GB и 20,000 запросов) и получить пару ключей ACCESS_KEY/SECRET_ACCESS_KEY
Push-уведомления
При загрузке новых фотографий или добавлении комментариев подписчикам пользователя в реальном времени отправляются push-уведомления. Самым популярным и достаточно простым способом доставки push уведомлений в Android является GCM – Google Cloud Messaging. Перед использованием сервиса необходимо зарегистрировать свой проект в консоли разработчика, получить API-ключ и Project Number. API-ключ используется для авторизации сервера приложения при запросах к GCM, он добавляется в заголовок HTTP-запросов.
Со стороны клиента уникальным идентификатором получателя уведомлений является PushID, который получается путём обращения через GoogleCloudMessaging SDK с Android устройства напрямую к серверу GCM, при этом необходимо указать полученный ранее ProjectID. Полученный PushID отправляется на наш сервер приложения и впоследствии используется при доставке уведомлений.
Код 6. Пример отправки push-уведомлений (HTTP) |
lib/push.rb Очереди асинхронных задачЧтобы ускорить взаимодействие с клиентом, некоторые задачи на сервере выполняются в фоновом режиме. В частности это отправка Push уведомлений, а также масштабирование изображений. Для таких задач мы выбрали resque gem. Список решений по обработке очередей и краткое описание можно изучить по ссылке. Мы выбрали resque за его простоту установки и конфигурации, поддержку персистентности с помощью БД redis, наличие минималистского веб-интерфейса. После запуска rails сервера необходимо отдельно запустить обработчик очередей resque следующим способом: После этого постановка новых задач в очередь осуществляется следующим способом (На примере отправки push-уведомлений) Источник Простой и удобный способ добавления социальных сетей в Андроид приложение на примере Вконтакте и ОдноклассникиВо время разработки приложений на Андроид часто встает вопрос интеграции социальных сетей в приложение. Логин через социальную сеть, рассказать друзьям, просмотреть список друзей — встречаются почти в каждом приложении. Для этого можно воспользоваться модулями библиотеки ASNE. Используя модуль библиотеки вы подключите SDK или API выбранной социальной сети и интерфейс для наиболее часто используемых запросов к ней, тем самым сэкономив время и упростив добавление другой социальной сети. Благодаря использованию SDK, пользователь может залогиниться или расшарить запись через уже установленное приложение социальной сети. А добавить социальную сеть как модуль, если ее нет в разработанных, не составит труда — это легко сделать по аналогии с любым другим модулем. В данной публикации я покажу, как можно легко добавить поддержку VK и Odnoklassniki в приложении под Android, используя соответствующие модули ASNE. В статье рассмотрен упрощенный пример, включающий добавления логина, записи с ссылкой на стену пользователя и вывода списка друзей. Регистрация приложения в социальной сетиДля добавления социальной сети в приложение потребуется ключ для совершения запросов. Поэтому первым шагом необходимо зарегистрировать приложение — по ссылкам вы увидите краткое руководство по созданию приложения для:
Для продолжения работы потребуются следующие ключи, которые используются в SDK социальных сетей.
Интеграция Вконтакте и Одноклассники в приложениеПосле создания нового проекта сохраним ключи в values/strings.xml: Затем добавим uses-permission для работы с интернетом и activity, необходимую «Одноклассниками» для взаимодействия с приложением в манифест. Теперь добавим зависимости для модулей ASNE, например, в Android Studio для этого необходимо: Открыть Project Structure => выбрать модуль приложения и открыть Dependencies => Add new library dependency Затем по запросу asne вы увидите все модули доступные в библиотеке и добавьте в зависимость asne-vk, asne-odnoklassniki: Либо вручную добавьте зависимости в build.gradle. Немного украсим наше приложение: Для обработки ответа после запроса логина переопределим в MainActivity.java метод onActivityResult. При обработке запроса логина социальная сеть отправляет onActivityResult проверяем его и отправляем в SocialNetworkManager, который передаст его в соответствующую SocialNetwork. Теперь интегрируем социальную сеть в MainFragment.java — это просто:
Создадим SocialNetworks с соответствующими разрешениями: Проверим существует ли SocialNetworkManager
Если SocialNetworkManager существует(задали в activity или другом фрагменте) — выберем все инициализированные социальные сети и установим им OnLoginCompleteListener Теперь необходимо обработать ответ после инициации SocialNetworks Весь исходный код onCreateView и onSocialNetworkManagerInitialized из MainFragment c инициацией социальных сетей. Запросы к Социальным сетямДля начала запросим логин в социальной сети, для этого потребуется лишь id Код OnClickListener loginClick с проверкой состояния подключения к социальной сети, а если пользователь уже вошел через социальную сеть — откроем ProfileFragment.java После обработки логина приложением социальной сети получим onLoginSuccess(int networkId) или onError(int networkId, String requestID, String errorMessage, Object data) — выведем соответствующее сообщение. Откроем ProfileFragment.java с помощью метода: В ProfileFragment.java получим идентификатор социальной сети из MainFragment.java Теперь с помощью networkId мы выберем социальную сеть и запросим данные профиля текущего пользователя следующим образом: не забудьте добавить OnRequestSocialPersonCompleteListener Для выхода из социальной сети необходимо использовать метод logout() И, честно говоря, это все — добавили ВК и Одноклассники в приложение. Как оказалось это достаточно просто и быстро. Аналогично можно добавить и другие социальные сети Facebook, Twitter, Linkedin, Instagram или Google Plus лишь добавив соответствующую зависимость и добавив их в SocialNetworkManager Конечно же вы можете использовать выше описанные методы для работы с ними Но давайте разберем еще несколько запросов — поделиться ссылкой и вывод списка друзей Для отправки ссылки на стену пользователя нам необходимо ее передать в Bundle И конечно же обработать ответы Итак в OnClickListener shareClick покажем пользователю простой диалог в котором спросим, хочет ли он поделиться ссылкой, и если да, отправим ее И на стене пользователя успешно появилась ссылка с предпросмотром и описанием Теперь выведем список друзей пользователя: Используя модули библиотеки ASNE можно легко и быстро добавить любую популярную социальную сеть в приложение. Конечно же в библиотеке содержится больше методов которые возможно пригодятся в вашем приложении. А так же можно использовать любые методы SDK или API используя токен или объект SDK Если данное приложение вам показалось простым, вы можете посмотреть реализацию всех методов библиотеки в демо для библиотеки Так же вы можете изучить аналогичную статью по подключению Facebook, Twitter and LinkedIn на codeproject.com. В данный момент библиотека стабильна и находится в состоянии добавления социальных сетей. Буду рад вашим советам или помощи в разработке. В планах развития библиотеки:
Источник 5 шагов к успешной мобильной соцсетиВремя чтения: 5 минут Отправим вам статью на: У вас есть идея крутой социальной сети? Мечтаете подвинуть Facebook с пьедестала, но не знаете, с чего начать? Как говорил американский философ Ральф Эмерсон, “Трудности существуют для того, чтобы преодолевать их”. Мы поможем — подскажем ключевые шаги для создания мобильной соцсети. #1. Определите цельПодумайте, зачем вы создаёте мобильную соцсеть, как вы планируете её продвигать и монетизировать. Например: “Я хочу сделать соцсеть для ветеринарных клиник и зарабатывать на рекламе кормов”. Или: “Я придумал социальную сеть для любителей усов”. Или: “Мне, фотографу, всегда не хватало профессиональной соцсети, чтобы находить коллег по цеху. И я решил её разработать”. Именно с таким запросом к нам обратился наш партнёр из США, Уильям Апшоу. Мы разработали для Уильяма мобильную социальную сеть Pro Photo Shoot. В приложении пользователи выбирают роль: фотограф, модель или визажист. Загружают портфолио и ищут деловые контакты. Соцсеть монетизирована: пользователи могут купить платный аккаунт и продвинуть свой профиль в топ выдачи. Сейчас приложение Pro Photo Shoot активно продвигается и насчитывает более 10 тысяч пользователей в США. Берите пример Уильяма на вооружение — тщательно продумывайте идею соцсети и способы её монетизации. Затем переходите к следующему шагу. #2. Составьте портрет целевой аудиторииУниверсальных соцсетей не бывает, у каждой своя аудитория — люди определённой возрастной категории, интересов. 83% пользователей Facebook моложе 45 лет. Они проверяют новости примерно 8 раз в день, любят обновлять статусы и загружать фотографии. 81% аудитории Pinterest — женщины до 40 лет. 45% юзеров Snapchat ещё не достигли 24 лет. Они активно общаются в соцсети и пишут до 20 сообщений ежедневно. Пользователи Pro Photo Shoot — профессионалы фотоиндустрии. Они используют соцсеть, чтобы организовать фотосессии и найти коллег в радиусе своего местоположения. Чем подробнее портрет ЦА — тем лучше. Как минимум, определите гендерные характеристики пользователей, возраст, ценности и целевые действия в приложении. #3. Продумайте функционал мобильной соцсетиПервое, что пользователь делает в соцсети — регистрируется и заполняет профиль. Если на этом этапе что-то пошло не так, пользователь вполне может отказаться от вашего приложения в пользу конкурента. Поэтому решите заранее, как юзер будет вносить в свой профиль персональные данные: вручную или информация автоматически подтянется из других соцсетей. Для нашего клиента из Германии, Creative Construction, мы разработали мобильную социальную сеть Hidence, которая собирает личную информацию из учётных записей LinkedIn или Facebook. Лента событий — ещё одна обязательная фича. Людям нравится смотреть обновления, комментировать и шарить интересные посты, делиться статусами. Как именно пользователи будут взаимодействовать с лентой событий — зависит от идеи приложения. Facebook предлагает реагировать на посты разными эмодзи: пару лет назад к классическому “Like” добавились ещё 5 смайликов. В Pinterest пользователи сохраняют интересные пины на своей доске, а приложение подбирает новые пины на основе предпочтений юзера. Последние в списке, но не по значимости — мессенджеры. Они нравятся пользователям, и это подтверждает Snapchat — соцсеть стартовала в 2011 году как приложение для обмена сообщениями. Сегодня у Snapchat 191 миллион активных пользователей ежедневно, а её генеральный директор, Эван Шпигель — один из самых богатых бизнесменов в сфере соцмедиа. Хотите разбогатеть как Шпигель? Сделайте удобную регистрацию в соцсети, мессенджер для личного общения юзеров с поддержкой разных форматов сообщений. Решите, каким будет контент ленты обновлений — и двигайтесь на следующий этап. #4. Проработайте интерфейсВы изучили аудиторию. Выяснили, какие целевые действия пользователи будут совершать в соцсети и какой им нужен функционал. Пора заняться интерфейсом. В идеале он должен быть настолько интуитивным, чтобы людям не приходилось постоянно заглядывать в FAQ. Сгруппируйте ключевые информационные блоки в личном профиле, менее важные функции скройте в меню навигации. Позаботьтесь о том, чтобы юзеры легко взаимодействовали с контентом соцсети — включите в интерфейс приложения шеринг-иконки, кнопки репоста, эмодзи. И не перегружайте соцсеть сложными цветовыми схемами и шрифтами. Вполне нормальная ситуация, когда интерфейс приложения меняется в ходе разработки. Так случилось с одним из наших проектов. Free For Lunch — одновременно социальная сеть и сервис знакомств. В первой версии дизайна Free For Lunch мы сделали цветовую шкалу времени с бегунком. Чем ближе подходило время ланча, тем теплее становился цвет бегунка. Но практика показала, что пользователям интереснее самим создавать встречи и знакомиться. Поэтому в финальной версии мы отказались от цветовой шкалы и придумали ставить на карте пины для событий и профилей пользователей. А чтобы пины не накладывались друг на друга — реализовали систему кэширования и фильтрации пользователей и событий. Когда функционал приложения понятен, а дизайн утверждён, можно приступать к разработке. #5. Переходите к разработке и тестированиюВы успешно прошли все этапы разработки приложения, от концепции мобильной соцсети до её дизайна и функционала. Нашли классную команду разработчиков. — Пора стартовать проект. Будьте готовы, что разработка — один из самых сложных и долгих этапов на пути к вашей мобильной соцсети. Философски относитесь к переделкам — они сделают ваш продукт лучше. Когда мы только начали работать над приложением Free For Lunch, задача казалась простой. Но чем больше мы изучали концепцию, тем больше задумывались: как объединить сложный функционал и удобную навигацию в приложении? У нас получилось. Мы учли все возможные действия пользователей в приложении, реализовали user-friendly интерфейс. Решили задачу больших нагрузок на соцсеть: настроили специальное ПО, которое следит за состоянием сервера и определяет узкие места. Изменили конфигурацию сервера и базы данных, оптимизировали логику приложения. Результат нашей работы — мобильная соцсеть с широким функционалом, готовая к нагрузкам на сервер, с ярким дизайном и удобным интерфейсом. Если вы решили сделать мобильную соцсеть — изучите целевую аудиторию, продумайте функционал и юзабилити приложения. Выберите исполнителей и в путь. Если вопросов больше, чем ответов — начните с MVP приложения и проверьте жизнеспособность соцсети в тестовой сборке. А затем расширяйте возможности приложения шаг за шагом.
—> ПодпишитесьОставьте адрес, и каждый месяц мы будем высылать свежую статью Источник |