Olá a todos! Meu nome é Artyom Peskishev, sou desenvolvedor iOS no Avito. Quero contar como começamos um script orientado por back-end para publicar novos anúncios em nossos aplicativos para celular.
Vamos ver o que há scripts passo a passo nos aplicativos e quais problemas tivemos com o script para colocar um anúncio. O artigo é sobre uma ferramenta que desenvolvemos para resolver esses problemas e os resultados de sua implementação.

Interface do usuário orientada por back-end
Backend-driven UI — , , , , , .
Backend-driven UI , . , . , . . , .
backend-driven — backend-driven UI.
— , . — . : , Wi-Fi, Apple ID. .

— . , MyFitnessPal, . , .

. «». . , . , , , « ». .

« ». , , . , . , « ».
. . , , .
, . , . , . , QA-. .
, . , , . , . , .
, , , , . . - . . iOS, Android, Desktop .

, , . .
:
- .
- .
-
«». :
- Select .
- Input .
- Address .
- Photos .
- Bool .
. , , . , , . , , .
«» , . .
. — , .
, — , . . , , , . , , . — -.
— . - . select. . , . , , .
— . , .
— . , . , , . .
. , . « », . , . , «».
, « » . . .
«». VIN, VIN . 18 .
, , , , , . - , , . , .
, :
- , ?
- ? , . , — , , . .
- ? , . .
, . , -. .
:
- Pretend, , .
- . , .
- . .
, backend-driven UI , .
: , .
— UI- . , , . . : , , .
"steps": [{
"id": 1133,
"title": " ",
"fields": [],
"type": "wizard"
}, {
"id": 1169,
"title": " ",
"fields": [],
"type": "request",
"subtype": "steps",
}, {
"id": 1168,
"title": "",
"fields": [499],
"type": "params"
}, {
"id": 1134,
"title": "VIN ",
"fields": [838],
"type": "vin"
}, {
"id": 1163,
"title": " ",
"fields": [549, 498, ...],
"type": "params"
},
{...}]
. , . , .
, . , «», . , , . , , "value" . — iOS, Android .
.

DynamicPublish , , , .
, — . DataService, , - -, . .
— StepHandler. , , .
StepHandler, . , Wizard — StepHandler, . Steps -. Select . Params .
. -, . . , , «» .
StepHandler. StepHandler - , . .
, «», , . , «».
. StepHandler . - — , , . n , — , .
. , , , . . - , .
. . — , , . , , , , , . . .
42 , . .

— . , . , , .
. /- .
. , .
. . , — . , , , .
. , . — . , MVP , . , , .