在不影响旧用户的情况下更新代码流

时间:2018-09-30 13:37:51

标签: swift

我有一个应用程序,在其中已为用户创建了入职培训。当他们第一次加入时,我将他们的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 :(得分:1)

没有什么可以说是您真正需要的,所以要利用这一事实。

在旧流程中,当用户完成步骤2时,便转到步骤3。在新流程中,完成步骤2会将用户转到步骤5,而完成步骤5则将用户转到步骤3。

答案 1 :(得分:1)

为什么不添加版本号?仅当您还看到该用户尚未启动序列时,才添加它。然后,那些没有版本号的将被假定为版本0,并且它们仍然具有旧的序列。具有版本1的用户将获得新序列。如果您再次修改顺序,此方法将继续向前发展。

答案 2 :(得分:1)

您应该记录每个用户最近使用的应用程序版本并将其存储在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]!