Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
#1

Поддержка нескольких версий API в одном проекте - Программирование iOS

22.05.2014, 13:29. Просмотров 692. Ответов 11
Метки нет (Все метки)

Такая ситуация: есть два сервера с разными REST Api - рабочий и тестовый.
К проекту в Xcode прикручен github.
Как организовать проект, чтоб можно было коммитить в разные ветки для разных API?
Как вообще в одном проекте можно поддерживать несколько версий API?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 13:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поддержка нескольких версий API в одном проекте (Программирование iOS):

Загрузка DLL библиотек разных версий в одном проекте - C#
Есть две одинаковые DLL библиотеки, но с разными версиями, т.е. набор пространств имен и имен классов практически одинаков. Хочу...

Поддержка приложением различных версий ОС и размеров экрана - Программирование Android
Добрый день! подскажите как реализовать различные версии android и различные размеры экранов в приложении? может есть интересная инфа на...

В Ubuntu 10.10 может появиться поддержка установки новейших версий программ - Ubuntu Linux
В настоящее время для установки более новых версий программ, чем те, что помещены в репозитории уже выпущенных релизов Ubuntu, приходится...

Поддержка M. Speech API - Windows 10
Какая версия поддерживает win 8 и 10?

PyQT5 и SIP несоответствие версий API - Python
Установил пакет Anoconda (W7/64), соответственно из Anoconda promt установил SIP и Pyqt5. Вернее сначала пробовал поставить сам Pyqt5, но...

2 Unit-а в одном проекте - Delphi
Столкнулся с небольшой проблемой, пишу первую курсовую и задача такова: Написать программу, к которой изначально нужен будет пароль....

11
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
22.05.2014, 13:41 #2
версии API нужны для, того чтобы старые приложения могли работать со старым API. А новые с новым API, при этом методы запросов могут быть идентичными.
это значит прежде всего то что, в одном приложении будет все равно 1 версия API, актуальная на текущий момент.
Изменение версии API это просто сообщение серверу, API какой версии приложение запрашивает.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 14:05  [ТС] #3
Может я неправильно сказал, а может и не до конца понимаю, что есть API... Но смысл в следующем: есть тестовый сервак и есть рабочий, как между ними переключаться в проекте? На них разные API - один и тот же запрос выдает разные ответы. Или для получения одних данных требуются разные запросы. Под этим же и подразумевается, что версии API разные?
Как это в проекте поддерживать? Как переключаться с тестового на рабочий?

Добавлено через 14 минут
А может просто у меня структура кода неправильная.
Вот допустим, мне надо получить некоторые данные.
Для этого я в контроллере создаю NSURLSession, тут же определяю NSURL для запроса, и собственно получаю сами данные через NSURLSessionDataTask.
Это правильно?
NSURL по факту ведь и является тем самым API ?
Как по грамотному то сделать?
0
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
22.05.2014, 14:20 #4
Как это в проекте поддерживать? Как переключаться с тестового на рабочий?
В разделе "настройки" организовать переключатель между API.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 14:28  [ТС] #5
Нет, я точно уверен, что сам пользователь не должен ничего переключать и не должен знать о версиях АПИ.
0
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
22.05.2014, 14:30 #6
что сам пользователь не должен ничего переключать и не должен знать о версиях АПИ.
Пасхальное яйцо, авторизация администратора. Можно придумать массу способов спрятать дополнительный функционал.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 14:36  [ТС] #7
Может в файл .plist прописать URL рабочего сервера, в коде брать этот URL и использовать.
Скоммитить этот файл в ветку мастер.
В проекте поменять на URL тестового сервера и дальше работать с тестовым и коммитить всё в другую ветку.
А когда приложение будет готово, скоммитить всё, кроме файла .plist.
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.05.2014, 15:01 #8
Цитата Сообщение от aply Посмотреть сообщение
Как организовать проект, чтоб можно было коммитить в разные ветки для разных API?
Как вообще в одном проекте можно поддерживать несколько версий API?
СОздаете 2 ветки и работаете.
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
22.05.2014, 15:14  [ТС] #9
2 ветки это понятно. Допустим я работаю с тестовой веткой, все норм. Новые АПИ с тестового сервака накатили на рабочий. Как быть? Мне видится один вариант:
определить дефайн
Objective-C
1
#define MAINURL @"https://server.com/"
Когда надо скоммитить в мастер, меняем
Objective-C
1
#define MAINURL @"https://server1.com/"
Но в один прекрасный момент можно забыть это сделать и собрать рабочую версию со ссылками на тест.
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.05.2014, 21:13 #10
Objective-C
1
2
3
4
5
#ifdef DEBUG
#define MAINURL @"https://server_test.com/"
#else
#define MAINURL @"https://server_distribution.com/"
#endif
0
aply
0 / 0 / 0
Регистрация: 19.11.2013
Сообщений: 40
23.05.2014, 08:57  [ТС] #11
А где этот DEBUG определить? Или это какая-то встроенная?
С этими директивами никогда не работал, можете поподробнее объяснить, от себя?
0
noname_club
104 / 95 / 11
Регистрация: 01.05.2013
Сообщений: 600
23.05.2014, 09:01 #12
http://stackoverflow.com/questions/4...only-statement

в настройках проекта можно флаг добавить соотвествующий, чтобы он макрос дефайнил при релизе.
0
23.05.2014, 09:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2014, 09:01
Привет! Вот еще темы с ответами:

Поддержка нескольких компиляторов - C++ Qt
Привет. Хочу попробовать сделать следующее: В программе есть textEdti, кнопка и combobox, в котором можно выбрать...

MySQL Поддержка нескольких запросво - PHP БД
Поддержка нескольких запросов. вычитл что PDO MYSQL поддерживает несколько запросов по сравнению с обычным методом. приведите пример. ...

HttpS и http в одном проекте - Java EE
Добрый день, подскажите пожалуйста, такое вообще возможно? Имеет ли смысл подобное вообще гуглить или искать альтернативные решения? ...

Несколько задач в одном проекте - C++
Вопрос такой. Даны несколько очень лекгих задач . Решил легко. Хотел бы спросить, можно ли их объединить в один проект или для каждой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.