Обновление потока кода, не затрагивая старых пользователей - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть приложение, в котором я создал интерфейс для пользователей.Когда они впервые присоединяются, я устанавливаю для них значение onboarding, равное 0. Затем, в зависимости от действий, которые они предпринимают, число onboarding увеличивается до тех пор, пока они не завершат вход в систему.

Теперь я хочу изменить процесс адаптации, чтобы сделать его более интуитивным.Это работает для новых пользователей, потому что они начинаются с onboarding: 0.Однако пользователи перед обновлением, которые находятся на разных стадиях адаптации (1, 2 и т. Д.), Имеют запутанный процесс, поскольку поток отличается.

Что мне делать, чтобы старые пользователи не затрагивались, а новые пользователи проходили через новый поток?

Пример кода:

switch onboardingStep {
case 0:
  //step 1
case 1:
  //step 2
case 2:
  //step 3
default:
  break
}

Новый поток включаетбольше шагов, с некоторыми положенными между старыми.До сих пор я пытался ввести еще одну переменную newOnboardingStep, которая работает отдельно от onboardingStep и отображает различные всплывающие окна в зависимости от их комбинации.Тем не менее, это очень грязно и запутанно.Я уверен, что есть лучший способ.

Любая помощь, добро пожаловать, я бился головой весь день!

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

Почему бы не добавить номер версии?Добавьте его, только если вы также видите, что этот пользователь не запустил последовательность.Затем предполагается, что те, у кого нет номера версии, являются версией 0, и они все еще получают старую последовательность.Те, у кого есть версия 1, получают новую последовательность.И этот подход продолжит работать, если вы снова пересмотрите последовательность.

0 голосов
/ 30 сентября 2018

Вы должны записать последнюю использованную версию приложения каждого пользователя и сохранить ее в UserDefaults.Чтобы определить, является ли это старый пользователь, открывающий приложение после обновления, просто проверьте следующее условие:

lastUsedBuild != currentBuild && lastUsedBuild != 0

lastUsedBuild, равное 0, означало бы, что это новый пользователь.

После того, как выопределив, является ли пользователь старым пользователем, открывающим приложение в первый раз после обновления, вы выполняете новую регистрацию, если он новый пользователь, и если это старый пользователь, открывающий приложение в первый раз после обновления,Вы должны сопоставить текущий номер шага с новым номером шага.Это можно сделать с помощью словаря:

let stepMappings = [
   1: 1, // this means that originally people on step 1 will still be on step 1
   2: 3, // originally people on step 2 will be on step 3
   3: 4, // originally people on step 3 will be on step 4
   ... // you should decide which new step should the old user be on, for each old step
]

И тогда вы можете сделать:

onboardingStep = stepMappings[onboardingStep]!
0 голосов
/ 30 сентября 2018

Ничто не говорит о том, что ваши интты действительно должны быть в порядке, поэтому воспользуйтесь этим фактом.

В старом потоке, когда пользователь завершает шаг 2, они переходят к шагу 3. В новом потокевыполнение шага 2 приводит пользователя к шагу 5, а завершение шага 5 - к шагу 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...