У меня есть один из тех вопросов, которые трудно задать или ответить на форуме. Недавно мне было поручено разработать (и реализовать) приложение, которое будет работать на ОС Android. Поскольку я пришел из мира .net, я решил использовать платформу Xamarin.Android (ранее известную как моно для Android). Я провел небольшое исследование целевой структуры и придумал грубый дизайн. Но так как я новичок в мире Android, я не уверен, что мой дизайн лучший (или даже приемлемый). Постараюсь быть максимально кратким в своем описании. Основные требования к заявке:
- Приложение должно быть способно предоставлять различный графический интерфейс для разных пользователей.
- Приложение должно отображать данные, полученные с сервера.
- Приложение должно предоставлять пользователю средства для изменения данных сервера.
- Когда один из пользователей изменяет данные сервера, другие пользователи должны быть уведомлены.
На основании своих исследований я прихожу к следующему:
Чтобы предоставить индивидуальный графический интерфейс для каждого пользователя, приложение сначала аутентифицирует пользователя, а затем извлекает XML-файл с сервера, который затем используется для программного создания графического интерфейса. Поскольку я должен поддерживать ротацию устройств и различные устройства, это означает много работы, поэтому любые мысли по этому поводу будут очень кстати.
Я думаю, что лучший способ связи приложения с сервером - это вызов служб на основе REST (GET для получения исходных данных и PUT для обновления состояния сервера).
Когда состояние сервера будет изменено одним из пользователей, все остальные пользователи будут уведомлены с помощью уведомлений (обмен облачными сообщениями Google или GCM, который заменил старый C2DM). Поскольку большинство действий будет зависеть от уведомлений для отображения обновлений, я думаю, что лучший способ реализовать это — создать службу Android. Служба будет запущена с приложением и будет работать до тех пор, пока приложение. Когда служба будет запущена, она зарегистрирует себя в GCM, а затем будет использовать широковещательную рассылку, чтобы уведомить текущую активность о том, что что-то изменилось.
Прошу прощения за длинное сообщение, но я старался быть кратким, насколько это было возможно. Как я уже сказал, это очень грубый дизайн, поэтому любые мысли, идеи или критика будут приветствоваться.
Урош