iCloud通讯录同步机制分析

iCloud是苹果公司提供的云端服务,用户可通过PC客户端、web以及IOS5平台对通讯录、邮件、日程等数据进行同步。

iCloud是苹果公司提供的云端服务,用户可通过PC客户端、web以及IOS5平台对通讯录、邮件、日程等数据进行同步。

用户可在IOS终端上进入设置中的iCloud选项通过Apple ID登录设置自己的云端服务,可以自主打开/关闭iCloud中的通讯录、邮件、日程等数据的同步功能。

本报告对icloud的通讯录同步机制进行调研和分析。

开启同步功能:

iCloud通讯录同步功能需在IOS终端中开启,用户通过AppleID登录后打开通讯录同步功能,系统会提醒用户您的通讯录将与iCloud合并,按下合并按钮后,iCloud进行一个双向合并操作,云端和终端的通讯录数据全部更新为两者的并集。

在线操作同步机制

当多个终端设备均保持在线状态时,iCloud定时自动同步云端与所有终端之间的数据,同步的时间间隔在10S左右。

 同步机制包括

 

1  云端与终端:

  在一个同步时间间隔内,只有一端(终端或云端)的数据有更新,则以更新后的数据为准,所有在线终端和云端均更新为最新数据;

  在一个同步时间间隔内,在云端和终端分别对同一个联系人进行不同的修改操作,则最终以云端版本为准,覆盖终端数据(见测试case1.1 1.2 1.3 1.4);

  在一个同步时间间隔内,在云端和终端分别对同一个联系人做出修改和删除的操作,则删除联系人,云端和终端均删除该联系人数据(见测试case1.5)。

2  多终端:

  在一个同步时间间隔内,若两个在线终端分别对同一联系人进行不同的修改操作,则以先完成的操作为准同步所有在线终端和云端的数据,该规则与终端类型无关。

  在一个同步时间间隔内,若两个在线终端分别对同一联系人进行删除和修改操作,则不管先完成的操作是修改还是删除,最终该联系人都将被删除,包括所有在线终端和云端,该规则与终端类型无关。

离线操作同步机制

若多个终端在离线状态下进行数据增、删、改操作造成通讯录数据不一致,终端在线后将会进行同步操作,icloud的同步机制可概括为:

1  若同一联系人的同一不可扩展字段(如联系人姓名)不一致,同步时以云端版本为准,详见测试case2.3

2  若同一联系人的同一可扩展字段(如手机号)不一致,同步时直接将所有不同的字段值合并,详见测试case2.2 2.4 2.6

3  若新增、删除操作造成同一联系人不是在所有终端和云端中都存在,同步时直接进行合并操作,同步后所有终端和云端中都是最齐全的通讯录版本,包括新增联系人以及还没有在所有终端、云端中都已经删除的联系人,详见测试case2.1 2.5

 

关闭通讯录同步功能

关闭iCloud通讯录同步功能时,用户还可以选择将自己的通讯录保留在IOS设备上或者从IOS设备上删除,根据用户需求保证数据不外泄。

 

从以上结论可以看出,icloud通讯录的同步机制还是比较简单和保守的,重点保护用户的数据齐全和安全。遵循宁可不够智能,也不能丢失用户数据的原则。但是删除功能有点儿过于保守,还有比较大的优化空间,我觉得可以考虑添加一个垃圾箱的机制简化删除步骤,同时也能为用户数据添加一个缓冲地带,避免丢失用户数据。

附录:测试case

1、在线操作

测试1.1

【操作对象】同一联系人同一字段

【操作方式】修改

操作

结果

先从云端将其修改为1,后从终端将其修改为2

云端、终端均修改为1

先从终端将其修改为1,后从云端将其修改为2

云端、终端均修改为2

 

 

 

 

结论

与修改顺序无关,以云端为准

测试1.2

【操作对象】同一联系人同一字段

【操作方式】修改/删除

操作

结果

先终端删除,后云端修改

云端为准

先云端修改,后终端删除

云端为准

先云端删除,后终端修改

云端为准

先终端修改,后云端删除

云端为准

结论

与修改顺序无关,以云端为准

测试1.3

【操作对象】同一联系人不同字段

【操作方式】删除

操作

结果

先终端删除字段1,后云端删除字段2

云端为准

先云端删除字段2,后终端删除字段1

云端为准

 

 

 

 

结论

与修改顺序无关,以云端为准

测试1.4

【操作对象】同一联系人不同字段

【操作方式】修改

操作

结果

云端修改字段1,终端修改字段2

云端为准

云端修改字段1,终端删除字段2

云端为准

 

 

 

 

结论

与修改顺序无关,以云端为准

 

测试1.5

【操作对象】联系人

【操作方式】删除/修改

操作

结果

先终端删除联系人,后云端修改联系人信息

删除

先云端修改联系人信息,后终端删除联系人

删除

 

 

 

 

结论

与修改顺序和终端/云端无关 ,以删除为准

 

测试1.6

【操作对象】联系人

【操作方式】删除/修改

操作

结果

先通过Iphone删除联系人,再通过ipad编辑联系人姓名

联系人被删除

先通过Ipad编辑联系人姓名,再通过Iphone删除联系人

联系人被删除

先通过Ipone编辑联系人姓名,再通过Ipad删除联系人

联系人被删除

先通过Ipad删除联系人,再通过Ipone编辑联系人姓名 

联系人被删除

结论

以删除为准

 

测试1.7

【操作对象】同一联系人不同字段

【操作方式】添加

操作

结果

先通过iphone添加一个电话号码,再通过ipad添加一个邮箱

该联系人添加了一个电话号码,没有添加邮箱

先通过ipad添加一个电话号码,再通过iphone添加一个邮箱

该联系人添加了一个电话号码,没有添加邮箱

先通过ipad添加一个邮箱,再通过iphone添加一个号码

 

 

 

结论

与终端和字段无关,以先完成的操作为准

 

测试1.8

【操作对象】同一联系人不同字段

【操作方式】修改

操作

结果

先通过iPad修改字段1,后通过iphone修改字段2

字段1修改,字段2没修改

先通过iPhone修改字段2,后通过ipad修改字段1

字段1没修改,字段2修改了

先通过iPad修改字段2,后通过iphone修改字段1

字段1没修改,字段2修改了

先通过iPhone修改字段1,后通过ipad修改字段2

字段1修改,字段2没修改

结论

与终端和字段无关,以先完成的操作为准

 

测试1.9

【操作对象】同一联系人相同字段

【操作方式】修改/删除

操作

结果

先通过IPad修改,后通过Iphone删除

ipad结果为准

先通过iPhone删除,后通过ipad修改

iphone结果为准

先通过iPhone修改,后通过ipad删除

iphone结果为准

先通过iPad删除,后通过iphone修改

ipad结果为准

结论

与终端和操作方式无关,以先完成的操作为准

 

测试1.10

【操作对象】同一联系人相同字段

【操作方式】修改

操作

结果

先通过iPhone 修改为A,后通过ipad修改为

均同步为A

先通过iPad修改为B,后通过iphone修改为A

均同步为B

 

 

 

 

结论

与终端无关,以先完成的操作为准

 

2、多终端离线操作

测试2.1

【操作】

1.         ipad上添加联系人A

2.         iphone上添加联系人B

3.         通过web在云端通讯录中添加联系人C

【结果】同步后云端和终端通讯录中都添加了ABC

【结论】同步操作会对所有通讯录中的所有联系人进行合并操作。

测试2.2

【操作】

1.         ipad上给联系人A添加号码1

2.         iphone上给联系人A添加号码2

3.         通过web在云端通讯录中给联系人A添加号码3.

【结果】同步后所有通讯录中联系人A均添加了123三个电话号码

【结论】同步操作会将不同通讯录中同一联系人的可扩展字段进行合并操作。

测试2.3

【操作】

1.         ipad上将联系人A的姓名换成A1

2.         iphone上将联系人A的姓名换成A2

3.         通过web在云端通讯录中将联系人A的姓名换成A3.

【结果】同步后所有通讯录中联系人A姓名均为A3.

【结论】当不可扩展字段不一致时,同步后以云端版本为准。

测试2.4

【操作】

1.         ipad上将联系人A的手机号换成1

2.         iphone上将联系人A的手机号换成2

3.         通过web在云端通讯录中将联系人A的手机号换成3.

【结果】同步后所有通讯录中联系人A的手机号均为三个,分别为123.

【结论】当可扩展字段不一致时,同步后将把所有数据合并。

测试2.5

【操作】

1.         ipad上将联系人A删除;

2.         iphone上将联系人B删除;

3.         通过web在云端通讯录中将联系人C删除.

【结果】同步后所有通讯录中联系人ABC均被恢复;.

【结论】同步操作会恢复所有联系人删除操作,要删除联系人必须在连线状态下通过某一终端或者云端删除,然后等所有终端都同步完毕后才能完成。

 

测试2.6

【操作】

1.         ipad上将联系人A的手机号1删除;

2.         iphone上将联系人A的手机号2删除;

3.         通过web在云端通讯录中将联系人A的手机号3删除.

【结果】同步后所有通讯录中联系人A的三个手机号均被恢复;.

【结论】同步操作会恢复所有联系人可扩展字段的删除操作,要删除联系人的某一可扩展字段必须在连线状态下通过某一终端或者云端删除,然后等所有终端都同步完毕后才能完成。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注