@ios_ru

Страница 16 из 2351
Artyom
11.08.2016
12:20:46
Плюс запрос может просто напросто зафейлиться, значит нужно еще и различать стейты, когда запрос выполняется, а когда он уже выполнен (чтобы при нажатии кнопки знать, нужно ли отправлять запрос заново или нужно ждать) Вариант с флагами вообще адский

Ivan
11.08.2016
12:22:17
Так второй же отправляем уже при нажатии на кнопку?просто один флаг на первый запрос.

Artyom
11.08.2016
12:22:57
Так второй же отправляем уже при нажатии на кнопку?просто один флаг на первый запрос.
второй должен быть отправлен, только если пришел успешный респонз от первого

Konstantin
11.08.2016
12:23:24
можно отключить кнопку, пока первый запрос не завершится ?

Google
Artyom
11.08.2016
12:23:47
это чит)

Konstantin
11.08.2016
12:24:51
я бы делал на ReactiveCocoa, там вообще без единого флага всё было бы

но боюсь, меня сейчас обвинят в навязчивости)

Artyom
11.08.2016
12:26:48
Через GCD кто-нибудь делал подобное? (dispatch_suspend)

Maxim
11.08.2016
12:29:20
- (BFTask *)request1; - (BFTask *)request2; - (void)viewDidLoad { self.req1 = [self request1]; } - (void)handleClick { __weak weakSelf = self; [self.req1 continueWithSuccessBlock:^id(BFTask *task) { [weakSelf request2]; }]; }

Maxx
11.08.2016
12:32:16
а не проще в NSOperationQueue добавить dependency ? вторая операция зависит от первой

в том смысле, что сформировать queue, поместить туда op1 + op2 (addDependency: op1)

Artyom
11.08.2016
12:35:28
Да проще наверное, но вот решил спросить, делал на практике так кто-нибудь из здесь присутствующих. Мало ли какие подводные камни

Maxx
11.08.2016
12:36:41
в NSOperation никаких подводных камней, можно вручную всё отрегулировать, очередность, зависимости

Artyom
11.08.2016
12:37:12
А если первый запрос зафейлился, операция-то будет считаться выполненной

Ну да, без флагов тут в любом случае не обойтись

Maxx
11.08.2016
12:38:56
так мы всё равно к коллбэку апеллировать должны - что получили в обратку при 1ом запросе, то имеем, нетворкинг ерроры никто не отменял

Haile
11.08.2016
12:39:36
так а почему нельзя заблочить кнопку то, пока первый запрос не вернулся?

Google
Artyom
11.08.2016
12:40:53
Потому что некрасиво это

Ясное дело, что можно все заблочить, показать спиннер на весь экран и задача решена

Александр
11.08.2016
12:42:13
о какой красоте речь вообще, если кнопка явно должна слать запрос

Maxx
11.08.2016
12:42:20
просто смысла от кнопы никакого, пока op1 в процессе

Александр
11.08.2016
12:42:49
а молча не отсылать запрос когда юзер жамкает на нее, потому что не пришло еще ответа - красиво?

я бы просто кнопку задизейблил

Евгений
11.08.2016
12:43:14
можно вместо кнопки активити маленький повесить)

Maxx
11.08.2016
12:43:33
но тоже выглядит странно: загрузилась вьюха, кнопка disabled, чо куда кому - неясно

UI хромает

гипс снимают, юзер уходит

Alexey
11.08.2016
12:43:50
можно вместо кнопки активити маленький повесить)
я тут услышал знакомые слова "активити" говоришь? ?

Artyom
11.08.2016
12:44:13
Пользователь, попадая на экран, видит кнопку Он сразу её жмякает и ждет (ему плевать сколько там запросов) Это лучше, чем он сначала ждет, потом жмякает, потом опять ждет

Александр
11.08.2016
12:45:01
фидбэк с юзером какой вообще, ну то есть как юзер понимает, что он нажал кнопку и да, "что-то произошло"

?

Maxx
11.08.2016
12:45:13
мож ему картиночку какую анимашку показать, пока op1 отправляет - получает данные?

Александр
11.08.2016
12:45:22
а то тут вопрос больше не технический по-моему, а к UX

Artyom
11.08.2016
12:46:14
фидбэк с юзером какой вообще, ну то есть как юзер понимает, что он нажал кнопку и да, "что-то произошло"
при нажатии на кнопку появляется спиннер, который крутится, пока выполняется запрос №1 (если он не выполнился еще) и затем запрос номер 2

Ок, ладно, вот рассказываю прямо как есть. Наше приложение рассчитано не под одного клиента, поэтому у нас используются динамические адреса API. Попадая на экран логина, пользователь хочет сразу жмякнуть кнопку входа, а не ждать, пока подгрузятся url ки.

Прятать куда-то, дисейблить эту кнопку не вариант

Раньше у нас была загрузка перед переходом на экран авторизации, но такой вариант, ясное дело, никому не нравится

Google
Евгений
11.08.2016
12:51:29
я бы предложил вернуться к очереди, как предлагали, а если фейлится интернет, то показывать алерт с ним — так сразу будет понятно, что кина не будет. а если с интернетом все ок, то и с очередью будет все ок.

Haile
11.08.2016
12:51:46
так а какая разница, если у вас все равно кнопка неработает, пока первый запрос не завершится?

буду я теребить эту кнопку, пока там запрос придет первый

толку мне?

никакого отклика от UI

Artyom
11.08.2016
12:52:07
Можно, коненчо, начать выполнять запрос №1 после нажатия кнопки, а затем в коллбеке запрос №2, но в таком случае пользователь будет дольше ждать

Haile
11.08.2016
12:52:11
не понятно, толи она просто не работает

Евгений
11.08.2016
12:52:38
так ты теребить будешь и пока второй вопрос будет обрабатываться, это уже другая задача, на мой взгляд

Artyom
11.08.2016
12:52:41
никакого отклика от UI
так я же написал, что после нажатия на кнопку на её месте появлятся спиннер

Евгений
11.08.2016
12:52:45
*запрос

Александр
11.08.2016
12:53:10
так а какая разница, если у вас все равно кнопка неработает, пока первый запрос не завершится?
типа ты зашел на экран, и загрузка автоматически началась, а когда ты нажимаешь кнопку, появляется спиннер на весь экран, который ждет пока завершится первая операция и не убирая спиннера начинает вторую

то есть отклик есть

Maxim
11.08.2016
12:53:11
А что будете делать, если первый запрос в фоне зафейлился?

Haile
11.08.2016
12:53:49
+

Евгений
11.08.2016
12:54:02
зафейлиться он может только если интернет упадет

Artyom
11.08.2016
12:54:22
А что будете делать, если первый запрос в фоне зафейлился?
Ничего, будем повтороно отправлять при нажатии на кнопку Если он там зафейлится, то будем показывать ошибку

Haile
11.08.2016
12:54:25
ну вот он взял и упал

Евгений
11.08.2016
12:54:57
ну вот на алерт

в сафари если нет интернета то большая надпись висит что нет интернета

Haile
11.08.2016
12:55:21
ну вот если твой экран - 2 кнопки и 2 запроса, зачем тебе туда тащить реактивку?

Google
Haile
11.08.2016
12:55:24
чем плохи 2 флага?

Artyom
11.08.2016
12:55:34
Запрос упал, был отправлен при входе на экран – не будет алерта Запрос упал, был отправлен при нажатии на кнопку – будет алерт

Haile
11.08.2016
12:56:58
если у тебя все приложение повязано на реактивку - добавить реактивку и сюда

если дальше ожидаются такие же проблемы - взять реактивку

или накидать свою асинхронную операцию с композицией

и использовать их

Konstantin
11.08.2016
12:58:37
дело говорит

Artyom
11.08.2016
13:01:11
Из вышеизложенного можно выделить 4 варианта: флаги, nsoperationqueue, bolts, reactive Спасибо

Maxim
11.08.2016
13:02:04
https://gist.github.com/maximgavrilov/a4f2233d4f134feb92ff286833af9c97

Artyom
11.08.2016
13:03:23
https://gist.github.com/maximgavrilov/a4f2233d4f134feb92ff286833af9c97
Я как раз пока склоняюсь к Bolts, так что обязательно гляну, спасибо

Maxim
11.08.2016
13:04:06
Ну, реактивка тут выглядит слишком перегруженно, это всё-таки классическая задача на promise, если хочется чего-то большего, чем флаги

Александр
11.08.2016
13:04:49
имхо тут хватило бы флагов

оверинжинеринг какой-то на ровном месте иначе

Maxx
11.08.2016
13:07:41
тут всё-таки таски и dependency, или NSOp, или Bolts - удобно

NIKOLAY
11.08.2016
13:26:53
Ребята, подскажите. Можно ли создать приватный framework с закрытым кодом, в котором используются зависимости в виде pods?

Евгений
11.08.2016
13:30:07
я фреймворки не создавал, но использую один приватный с закрытым кодом, он использует разные открытые библиотеки и требует их подключение в любом удобном виде

NIKOLAY
11.08.2016
13:32:36
А как он создавался?

Евгений
11.08.2016
13:42:51
а вот это не знаю — он совсем чужой

а, сори, ввёл немного в заблуждение. на самом деле он не дистрибьютится как цельный фреймворк

Denis
12.08.2016
00:34:16
Супер https://developer.apple.com/news/?id=08082016a

Google
Artem
12.08.2016
03:59:12
Если есть ограниченное число запросов, которые надо выполнить последовательно (наример 2-3), я обычно обработку делаю в блоках и просто делаю вложенный запрос в блоке, т.е. первый_запрос:^(){ обработка_результатов_первого запроса; второй_запрос:^(){ обработка_общего_результата; } } Ну можно конечно через RAC компоновать, удобно, когда сложные интерфейсы.

Супер https://developer.apple.com/news/?id=08082016a
?? Прогресс не стоит на месте %))

Илья
12.08.2016
11:46:28
Подскажите, что можно использовать что-то типа IMEI, чтобы привязать к девайсу аккаунт, но при этом его пропустили в ходе ревью

Igor
12.08.2016
11:47:11
генерируешь рандомный UDID и сохраняешь в кейчейн

Maxx
12.08.2016
12:43:33
NSUUID

Семён
12.08.2016
15:15:54
identifier for vendor

Artyom
12.08.2016
17:41:43
Подскажите, через что можно дистрибьютировать Watch приложение? (кроме TestFlight)

Artem
12.08.2016
17:42:51
Fabric.io

Artyom
12.08.2016
18:03:13
Fabric.io
А лично пробовал? (именно Watch) Терзают смутные сомнения

Artem
12.08.2016
18:08:50
А чет про часы упустил. Часы не пробовал.

Сергей
12.08.2016
18:11:34
Приложения для часов никак не отличаются от приложений для iPhone

Можете хоть в Dropbox .ipa файл выкладывать

Artyom
12.08.2016
18:13:11
Можете хоть в Dropbox .ipa файл выкладывать
Спасибо конечно, но хочется что-то удобное наподобии Fabric Погуглив, я не нашел свидетельств того факта, что Fabric поддерживает Watch

Сергей
12.08.2016
18:14:12
Поддержка Watch не требуется, бандл для часов зашивается в .ipa файл. Мы распространяли приложения для часов как через TF, так и через Fabric, Diawi и так далее

Крашей на часах вообще нигде не увидите - такого просто не придумали еще

Хотя я могу ошибаться, давно это было)

Artyom
12.08.2016
18:15:42
Только я хотел написать "Круто, буду пробовать")

Страница 16 из 2351