Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
Архитектура клиент-серверного приложения подразумевает наличие удаленного сервера, обрабатывающего запросы клиентов. Клиенты, в данном случае, просто отображают информацию, полученную с сервера.
В приложении «KFU Guide» сервер реализован с помощью фреймворка Ruby On Rails. Клиентами являются мобильные приложения для платформ Windows Phone, iOS, Android.
Связь между клиентами и сервером на транспортно-сетевом уровне осуществляется по протоколу TCP/IP (набор сетевых протоколов передачи данных, используемых в сетях, включая сеть Интернет). Для организации информационного обмена используется протокол прикладного уровня HTTP и его расширение HTTPS, поддерживающее шифрование. Взаимодействие осуществляется согласно архитектуре REST – стиль построения архитектуры распределенного приложения, в котором данные должны передаваться в виде небольшого количества стандартных форматов (HTML, XML, JSON).
Моя задача заключалась в написании клиента для платформы Windows Phone. Общая архитектура системы KFU Guide изображена на рисунке 7.
Регистрация на сервере.
Для регистрации и авторизации на сервере было решено использовать социальные сети. Так как это позволяет наиболее точно идентифицировать личность зарегистрировавшегося пользователя с помощью Api, предоставляемого социальными сетями. Для этой цели были выбраны следующие социальные сети:
- Вконтакте – наиболее популярная в России социальная сеть; Facebook – международная социальная сеть.
Синхронизация с Вконтакте.
Перед использованием Api Вконтакте, необходимо зарегистрироваться в социальной сети как разработчик и зарегистрировать свое приложение. После этого выдается идентификационный номер приложения, с помощью которого осуществляется дальнейшее взаимодействие с сервисом.
Для авторизации и регистрации пользователя, социальная сеть Вконтакте использует протокол авторизации OAuth. OAuth – популярный протокол, который позволяет социальным сервисам интегрироваться между собой и предоставляет безопасный способ обмена персональной информацией.
Процесс авторизации приложения состоит из 3-х этапов:
- Открытие окна браузера для аутентификации пользователя на сайте Вконтакте; Разрешение пользователем доступа к своим данным; Передача в приложение ключа access_token для доступа к API.
В приложении авторизация осуществляется через страницу браузера. Данный способ не дает приложению сохранить личные данные пользователя, вводимые для авторизации в социальной сети.
Для отображение страницы авторизации Вконтакте необходимо перейти по адресу
https://oauth. /authorize? client_id=3737326&scope=pages&redirect_uri=https://oauth. /blank. html&display=wap&v=4.8&response_type=token, где
client_id – идентификационный номер приложения,
scope – запрашиваемые приложением права доступа,
redirect_uri – адрес, на который будет передан access_token,
display – внешний вид окна авторизации, поддерживаются: page, popup и mobile.
v – версия API.
После успешного входа на сайт, пользователь должен разрешить доступ приложению к необходимым настройкам, запрошенным при помощи параметра scope.
После успешной авторизации браузер пользователя будет перенаправлен по адресу redirect_uri, а ключ доступа к API и другие параметры будут переданы приложению в URL-фрагменте ссылки:
https://oauth. /blank. html#access_token= 533bacf01e11f55b536a565b57531ad114461ae8736d6506a3&expires_in=86400&user_id=8492, где
access_token – ключ доступа к API Вконтакте,
expires_in – время актуальности ключа доступа в секундах, если время ключа доступа истекло, необходимо повторить все предыдущие шаги,
user_id – идентификационный номер пользователя Вконтакте.
После получения ключа доступа, приложение получает доступ к API.
Синхронизация с Facebook
Алгоритм авторизация пользователя через Facebook схож с алгоритмом авторизации через Вконтакте.
Первым шагом синхронизации является регистрация приложения и получение его идентификационного номера.
Для авторизации пользователя Facebook так же использует протокол OAuth.
Процесс авторизации в социальной сети Facebook состоит из 3-х шагов:
- Открытие окна браузера для аутентификации пользователя на сайте Facebook; Передача в приложение ключа access_token для доступа к API ; Запрос и получение идентификационного номера пользователя user_id.
Для отображения страницы авторизации пользователя приложению необходимо перейти по ссылке
https://www. /dialog/oauth? client_id=497295983680210&redirect_uri=https://www. /connect/login_success. html&scope=email&display=wap&response_type=token, где
client_id – идентификационный номер приложения,
scope – запрашиваемые приложением права доступа,
redirect_uri – адрес, на который будет передан access_token,
display – внешний вид окна авторизации, поддерживаются: page, popup и mobile.
После успешный авторизации приложение получает ключ access_token в URL-фрагменте.
После получения ключа access_token необходимо получить идентификационный номер пользователя социальной сети. Для этого необходимо отправить запрос по адресу
https://graph. /me? fields=id&access_token=ACCESS_TOKEN, где ACCESS_TOKEN – ключ доступа, полученный на предыдущем этапе.
Передача информации на серверПосле авторизации через социальную сеть полученные данные отправляются по защищенному протоколу на сервер с помощью Post-запроса.
Запрос отправляется по адресу http://guiddy. fosslabs. ru/sessions.
Сервер обрабатывает данные и возвращает идентификатор сессии, с помощью которого осуществляется дальнейшее взаимодействие с сервером. Идентификатор сессии сохраняется в локальном хранилище настроек смартфона и передается параметром в запросах отправки событий на сервер.
Отправка нового события
Для реализации отправки события на сервер используется Post-запрос с параметрами: заголовок события, подробное описание события, дата проведения, время начала и время конца, идентификационный номер здания, идентификационный номер аудитории, в которой проводится событие, идентификационный номер типа мероприятия. К параметрам добавляется идентификатор сессии для того, чтобы установить личность автора события. Запрос отправляется по адресу http://guiddy. fosslabs. ru/event_with_room.
Получение списка событий
Для получения списка мероприятий нашего университета необходимо отправить запрос на сервер по адресу http://guiddy. fosslabs. ru/events.json. Ответ приходит в формате JSON – текстовый формат обмена данными, основанный на JavaScript. Его главное преимущество заключается в том, что JSON легко читается и понимается людьми. Для того чтобы осуществить разбор данного формата, была использована библиотека Newtonsoft. Json.
К событиям применяются два типа фильтров. Для того чтобы применить фильтр по типу события, необходимо отправить запрос по адресу http://guiddy. fosslabs. ru/TYPE_events, где TYPE – один из типов событий: study, science, sport, cultural, meeting, other. Ответ приходит в формате JSON.
Фильтр по аудитории применяется с помощью отправки запроса на сервер по адресу http://guiddy. fosslabs. ru/rooms/ROOM_ID, где ROOM_ID – идентификационный номер аудитории, по которой применяется фильтр. Ответ приходит в формате JSON.
Поиск свободной аудитории
Для получения списка свободных аудиторий необходимо отправить Post-запрос по адресу http://guiddy. fosslabs. ru/empty_rooms с параметрами: идентификационный номер здания и временной промежуток. В ответ приходит список аудиторий в формате JSON, которые свободны в выбранный промежуток времени.
Использование QR-кодов. Использование камеры для сканирования QR-кода
В 1994 году японская компания «Denso-Wave» представила матричной код – QR-код, который позволяет зашифровать до 7089 цифр или до 4296 символов. Основное достоинство QR-кода – легкое распознавание сканирующим устройством, что дает возможность широкого использования в различных сферах. QR-коды уже около 15 лет пользуются популярностью в Японии, и около 5 лет популярны в Европе и США. До России они дошли относительно недавно, но их уже можно встретить на рекламных вывесках, и телевизионной рекламе, а так же на продуктах массового производства.
В приложении QR-коды используются для доступа к геоконтекстным данным и представляют собой метки, связанные с информацией об институтах, находящихся в здании и о событиях, проводящихся в аудиториях.
Сканирования QR-кода осуществляется основной камерой телефона. Для использования основной камеры устройства, необходимо прописать разрешение на использование этой функции в манифесте приложения. После перехода приложения на экран сканирования, инициализируется камера и запускается процесс захвата изображения с камеры и передача его в функцию библиотеки для декодирования QR-кода. Если функция вызывает исключение – это означает, что декодирование не удалось – изображение не являлось QR-кодом или не удалось декодировать QR-код – в таком случае, функция захвата изображение рекурсивно запускается заново. После того, как удалось распознать QR-код и декодировать его, результат сканирования передается параметром на следующую страницу приложения.
Для декодирования QR-кодов использовалась библиотека ZXing. Данная библиотека была выбрана в связи с множеством положительных отзывов в сети Интернет, бесплатным распространением и хорошей документацией. Библиотека встраивается в приложение с помощью с помощью NuGet - расширения среды разработки Visual Studio, которое упрощает добавление, обновление и удаление библиотек в проекты Visual Studio.
Работа с картой
Для отображения карты был использован стандартный элемент управления Map (Карта). Страница карты необходима для отображения местоположения зданий институтов и соотнесения его с местоположением пользователя. Для использования GPS-служб устройства, необходимо было прописать в манифесте приложения данную возможность. А перед определением местоположения пользователя, необходимо объяснить пользователю, для чего приложение использует его местонахождение, и попросить подтверждения того, что пользователь согласен, чтобы приложение использовало его местоположение. Данное требование указано в требованиях к сертификации приложений для магазина Windows.
Определение местоположения осуществляется асинхронно, благодаря чему, карта все так же остается доступной для пользователя во время определения местоположения. Для визуализации того, что местоположение определяется, используется стандартный элемент управления под названием ProgressIndicator, отображаемый над системной панелью телефона. После того, как алгоритм определения местоположения завершит свою работу, генерируется событие, и карта центрируется по координатам местоположения пользователя.
В приложении реализована возможность изменять режимы карты и включать или выключать дополнительные функции.
Интерфейс и функционал
Интерфейс приложения составляют страницы с уникальным функционалом и правилами перехода. На рисунках 7 – 16 изображены UML диаграммы вариантов использования (use case diagrams) подсистем приложения.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |


