Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Анализ конкретного проекта. 
:(
    Опции темы
Dimanoss
  Дата 22.7.2013, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



День добрый, всемогущий и всёзнающий All,

Начальство решило клиенту написать программульку такого плана:

1. при старте приложения, если доступна сеть, идёт обращение к серверу в интернете и происходит обновление локальной БД.
2. пользователь проходит аутентификацию и попадает в что-то, сильно напоминающее онлайн-шоп.  Т.е. - есть товары, распределённые по категориям, и есть "корзина", которую пользователь может наполнять/редактировать.
3. по требованию пользователя и/или при выходе из приложения происходит синхронизация локальной базы с интернет-сервером.

По задумке клиента, он выдаёт своему работнику iPad, тот выезжает к клиенту, и "в поле", в процессе консультации, заказывает те или иные товары.  Заказчику важна возможность работы в офф-лайне и контроля, кто из консультантов кому что заказал.

Никогда не писал для мобильных платформ, когда-то писал на Яве и совсем немного - на С++.  Последние лет пятнадцать работал исключительно в xAMP, поэтому с серверной частью проблемы вряд ли возникнут.  Но вот с iOS заковык много.  Есть кое-что под рукой из литературы, но там пока что ответов на некоторые вопросы найти не смог.  Поэтому обращаюсь к тем, у кого опыта явно поболе...

Итак, задумка такова.  Первый ViewController проводит синхронизацию, тянет с сервера XML-файл, парсит его и обновляет локальную базу.  По результатам, если нужно, тащит с сервера картинки товаров.  Затем проводит аутентификацию и переходит к другому.  Там уже - навигация по товарам, возможность посмотреть более детальную инфу по каждому наименованию и работа с корзиной.

А теперь - вопросы.  Во первых - годится ли такой план, на Ваш взгляд в целом.  Во-вторых - как избежать подключение к серверу сторонних пользователей?  На первое время, думаю, можно будет закрытую директорию создать, но потом, конечно же, хотелось бы чего-то более изящного.  В третьих - как тормознуть процесс аутентификации до того, пока БД не будет полностью обновлена.  Думаю, вопросы не все, по ходу дела ещё появятся...

Заранее спасибо за посильную помощь..
PM MAIL   Вверх
Bitter
Дата 22.7.2013, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Нет, схема плохая однозначно. Должна быть примерно такая
1. Первым делом загружается рабочий вьюконтроллер, который должен отображать навигацию по товарам. И Этот контроллер при загрузке отображает контроллер логина. Таким образом при старте пользователь видит контроллер логина.
2. Контроллер логина первым делом пробует автологиниться использую сохраненные ранее логи и пароль. Если нет логина и пароля или логин не удался, то показываете поля ввода логина/пароля и кнопки Login, Register и тд.
3. Когда логин произошел, запускаете синхронизацию базы, это должен делать отдельный класс, отвечающий за базу данных. Что-то типа DatabaseManager.
4. Когда синхронизация закончилась (ее надо делать не с помощью XML, а с помощью JSON) - закрываете контроллер логина, возвращаясь в рабочий контроллер.
5. Если пользователь нажимает LogOut - снова отображаете контроллер логина

Избежать подключения... Если пользователи не знают логина/пароля то не подключатся. Для синхронизации базы можно использовать сгенерированный на сервере sessionKey во время логина.
PM MAIL ICQ Skype   Вверх
Dimanoss
Дата 22.7.2013, 12:09 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



Цитата(Bitter @  22.7.2013,  11:51 Найти цитируемый пост)
Когда синхронизация закончилась (ее надо делать не с помощью XML, а с помощью JSON)

хм, это такая принципиальная разница?  Вроде, iOS и с XML неплохо работает?  Там вот в чём заковыка - не исключено, что к серверной части впоследствии ещё что-то будет прикручиваться (тот же Android), поэтому хотелось бы как-то поуниверсальнее это сваять (чтоб впоследствии не переписывать).

Ах, да, вот вопросец вдогонку возник.  При передаче/сохранения пароля по понятным причинам используется hash. iOS с MD5 дружит?
PM MAIL   Вверх
Bitter
Дата 22.7.2013, 12:52 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Цитата(Dimanoss @  22.7.2013,  12:09 Найти цитируемый пост)
хм, это такая принципиальная разница?

JSON намного проще и удобнее

Цитата(Dimanoss @  22.7.2013,  12:09 Найти цитируемый пост)
iOS с MD5 дружит?

с MD5 дружит даже листик бумаги, так как это всего лишь алгоритм
PM MAIL ICQ Skype   Вверх
Dimanoss
Дата 14.8.2013, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



Цитата

1. Первым делом загружается рабочий вьюконтроллер, который должен отображать навигацию по товарам. И Этот контроллер при загрузке отображает контроллер логина. Таким образом при старте пользователь видит контроллер логина.
2. Контроллер логина первым делом пробует автологиниться использую сохраненные ранее логи и пароль. Если нет логина и пароля или логин не удался, то показываете поля ввода логина/пароля и кнопки Login, Register и тд.
3. Когда логин произошел, запускаете синхронизацию базы, это должен делать отдельный класс, отвечающий за базу данных. Что-то типа DatabaseManager.
4. Когда синхронизация закончилась (ее надо делать не с помощью XML, а с помощью JSON) - закрываете контроллер логина, возвращаясь в рабочий контроллер.
5. Если пользователь нажимает LogOut - снова отображаете контроллер логина


Попробую следовать.  С некоторыми изменениями.  Тут вот что открылось.  Количество синхронизируемых наименований, оказывается - порядка 15.000.  И это только на сегодня, само собой - возможно расширение.  И каждое наименование - не только Название/описание, но и картинка (вообще,  iPad такое вытянет?)  Так что синхронизацию при старте, если делать и буду, то только - таблицу с пользователями.  И автологин тоже не нужен - клиент просил, т.к. количество iPad'ов будет явно превосходить сотрудников, с ними работающих.




PM MAIL   Вверх
Bitter
Дата 14.8.2013, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Цитата(Dimanoss @  14.8.2013,  10:49 Найти цитируемый пост)
вообще,  iPad такое вытянет?

Вытянет столько, сколько есть свободного месте на диске. Только не забудьте делать синхронизацию в отдельном потоке, иначе зависните на долго. В этом потоке можете возвращать в главный поток какой нибудь прогресс, чтобы показывать пользователю сколько осталось до конца.
PM MAIL ICQ Skype   Вверх
Dimanoss
Дата 14.8.2013, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



Да, как-то я примерно так и думал.  Должна быть какая-то кнопка для синхронизации, синхронизация шуршит паралельно, возвращая процент сделанного (например - кол-во переработанных записей из БД по отношению к общему).

Если таковая возможность имеется, не ткнёте носом в примерчик обращения к внешней базе / аутентификации / получения данных?

PM MAIL   Вверх
Bitter
Дата 14.8.2013, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 10
Всего: 27



Ну это можно сделать сервисами. Пишете сервис на пхп или на чем-то другом, который делает запрос и шлет вам JSON. Вы его ловите и парсите, загоняя при этом в базу. Ну вот такая схема
PM MAIL ICQ Skype   Вверх
Dimanoss
Дата 16.8.2013, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.10.2010

Репутация: нет
Всего: нет



проект потихоньку меняется.  Клиент отказался от картинок вообще, плюс к тому - сократил всю базу до 300-т наименований, плюс планирует обновление базы товаров не более 4-х раз в год.  Тут всё упрощается.  Усложняется история с синхронизацией - там у них какой-то свой интерфейс, который поковырять не дают.  XML есть точно, а вот с  JSON, похоже, облом...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | iOS | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.