手机通讯录用户关系和好友推荐
国内国外做产品的思维有着非常大的差异,就社交软件好友来说,国内更喜欢的是在应用内维护用户关系,一般添加都是需要经过对方同意,删除时会双向删除。而国外的软件更愿意用手机的通讯录,只要在手机通讯录添加即可,不需要对方同意,删除对对方也没有影响。
野火IM是非常灵活的,针对不同的产品需求都能满足,这里简单介绍一下。
1. 手机通讯录好友关系
野火IM只需要一个用户ID就可以聊天,这种情况下可以不用在野火IM中添加用户,但需要建立一个用户手机号码和用户ID的对应关系,或者简单的使用手机号码作为用户Id,这样只要知道手机号码就可以给对方发送消息了。
- 当用户登录或注册时,以用户的电话号码作为用户ID获取IM token,并记录下来该手机号码为野火IM用户,IM token返回给客户端,客户端进行连接。
- 客户端读取通讯录,然后上传通讯录到应用服务,应用服务判断出哪些手机号码是野火IM用户并把结果返回给客户端,这样客户端就知道通讯录中哪些是IM用户了。如果通讯录非常庞大,可以分批去查询,或者异步处理,甚至做成自定义消息通知客户端。
- 客户端要重新开发好友界面,显示为手机的通讯录。如果联系人是IM用户则点亮他,点击他可以发起聊天;如果非IM用户点击可以提示发送短信给联系人邀请下载软件。
- 步骤2可以优化,第一次需要把所有通讯录都上传,得到是IM用户的结果后,以后以一定的频率上传非IM用户去检查。另外为了避免隐私的风险,不用在应用服务保存每个用户的联系人信息。
- 监听手机通讯录的变化,如果添加用户,则触发上传验证是否是IM用户。
使用手机号码作为用户ID是非常方便的,但如果考虑到更换手机要保持离线消息和历史消息,最好是使用手机号码和用户ID的映射,可以让用户更换手机号码而保持用户ID不变。处理方法是一样的,只是在应用服务维护一个用户ID和手机号码的一一对应关系即可。
2. 好友推荐
国内的做法都是需要用户在应用内添加好友,跟手机通讯录是两套系统。但好友推荐功能也是产品经理们喜欢的一个功能,好友推荐功能就是发现手机通讯录中的IM用户,推荐给用户进行添加好友请求,把用户的社交向应用内导流。最早的微信就是使用了QQ进行导流,只不过是关系来源变成了QQ,所以所有的应用都可以导流只要给你开放用户关系。
- 用户注册时,保留有用户的手机号码,其实在IM系统中已经有了,可以不用在应用系统中保存。
- 应用服务逐个的检查手机号码,查看是否是IM用户,如果是IM用户,他的用户ID是多少,最后把结果返回给客户端。如果通讯录非常庞大,可以分批去查询,或者异步处理,甚至做成自定义消息通知客户端。
- 客户端收到消息后就知道手机通讯录中那些联系人是IM用户,且知道了他们的用户ID,这时就可以检查应用好友关系,把不在好友列表中的IM用户展示给用户,提醒引导用户添加对方为好友。
- 步骤2可以优化,第一次需要把所有通讯录都上传,得到是IM用户的结果后,以后以一定的频率上传非IM用户去检查。另外为了避免隐私的风险,不用在应用服务保存每个用户的联系人信息。
- 修改现有联系人UI,添加推荐栏。点开推荐栏展示推荐信息。另外监听手机通讯录的变化,如果联系人有变化,触发新的处理流程。