问个逻辑问题,据说标题长才有人看。。
想让大家帮忙想个逻辑
最近在用iphone上的某款程序,对其中的通讯录功能有点迷惑。避免广告嫌疑,程序名字用字母Z表示。
1. Z程序里的通讯录跟用户手机的是同步的,当系统检测到用户A通讯录里的某个号码B也是Z的用户时,就会在Z程序内部通讯录该号码B后边加一个logo,表示这个人也在用。
2. 当用户A通讯录里的某个人B新注册成为这款程序的用户时,系统会给A的手机发Push提示,说用户B已经开始使用该程序。用户A只有已经是该程序的注册用户才会收到通知,如果A没有使用过该程序,则不会收到通知。
对于以上两个功能怎样实现一直想不明白,我大体想的方法是:
当用户A注册该程序时,程序会先读取用户的通讯录信息,并检查其中哪些人已经是注册用户,检查过后把用户A通讯录里的所有注册用户的号码储存到数据库里,假设数据库的表格中有两栏C1和C2,C1用来储存所有未注册过的号码,C2只储存注册过的号码。
储存过后在用户手机里生成一个本地文件用来储存C2里的号码,并且在程序内部的这些号码后边附加程序的logo。当用户打开程序时,程序会同步网上的数据库来更新这个本地文件以及数据库。
但是自己又觉得自己想的不对,因为还有一种情况:
当发Push通知的时候,假设两个人A和B,A已经注册,B未注册,A的通讯录里有B,但是B的通讯录里没有A,当B注册时,系统会给A发Push通知,所以当发Push通知的时候系统不是查询数据库里B的数据,应该是查询别的,或者查询以上所述的数据库里所有用户的C1这一栏,如果C1中含有B的号码,则系统发送通知,并且把B的号码从C1移至C2?
想了几天没想明白,希望高人指点或讨论。