我有一个应用程序,在其中已为用户创建了入职培训。当他们第一次加入时,我将他们的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
并根据两者的组合显示不同的弹出窗口。但是,这非常混乱且令人困惑。我敢肯定有更好的方法。
欢迎任何帮助,我整天都在头!
答案 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]!