基于网络的客户端开发技巧——第四篇多账号的处理与注重细节

来源:互联网 发布:超级祝福油数据库 编辑:程序博客网 时间:2024/04/28 18:51

好像微博已经没啥要说的了,这次就说说多账号的处理吧。

多账号无非就是可以让你登录N个账号,我个人比较倾向于将个人信息存在nsuserdefault中,所以先讲讲我nsuerdefault中的结构。

nsuserdefault中,nsuserdefault->accounts(nsarray)->任一account(nsdictionary)->key:username,userpwd,userallinfo(获取用户信息时所返回的数据,主要保存ID,name等)

nsuserdefault->current account(nsdictionary)表示当前使用的账号

再说说缓存,就像之前所说,公共信息可以放在同一个文件夹,像个人信息就放入以id为标识的文件夹中方便存储。比如我现在的账号名为aaa,密码bbb,用户ID为1001,那么必然要选择用户id来命名文件夹名,当然也可以选用表的,选择原则是无重复,不私密。

比如我的documents里面的目录结构 documents-> public(存用户头像,图片) dir_1001(ID为1001的缓存信息),dir_1002(ID为1002的缓存信息)

最后再说说如何处理多账号。

切换账号不必多说了,根据UI设定来搞吧。这里主要提几个比较需要注意的地方:

1.api的封装,最外层一定是错误处理,否则你的用户名在非本客户端修改之后,必然会出问题。增加错误检测的好处还有可以明确知道是哪的问题,不要以为只有开发者需要,用户也同样需要。

2.在写程序之前就要提前划分好哪一些是公共数据,哪一些是个人账号私有数据,提前封装好,这样不管是修改,还是以后作扩展,都会快很多。

3.缓存分账户存放是有一个好处的,不必每次启动程序都去检测密码,每次调用API的时候有前端错误检测,所以可以完全放心由于api引起的crash问题。同时每个账号进入的时候都是会有缓存信息的,不会太空,既然你的密码已经不一致。坏处嘛,就是你就算修改了密码,还是能看到之前缓存过的数据。

总之一句话,多账户主要就是信息存储,存储的明确了,做起来那是相当容易。。

 

在制作微博的过程中,要特别注重的一些细节问题。

1.本来这篇名字想叫“一根线”的,但是发现要说的细节还是比较多的,所以改了下名。我要说的这一根线,当然就是tableview的cell分隔线。相当现在iPhone应用,cell的默认分隔线已经满足不了多数开发人员的要求了,所以制作分隔线再所难免。那么,这根分隔线如何去做呢?

至少我相信,基本很少人会用画的方式把线画到Cell上,多数还是用图片。那么图片怎么做,将是非常值得讨论的。

把线合到背景上,虽然可以解决问题,但是明显是不可取的,对于现在的iPhone内存,也许不算什么,但是对于将来UI变化,实在是相当之不方便,而且效果不能说是完美。

那么如何去处理这一根线呢,可以利用1像素的线与- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight 配合拉伸实现,也可以单独做一个图片,当然这2种方法效率谁快我还真没做过测试。。。

2.既然是基于网络服务的客户端,那么网络传输是必然少不了的。所以状态栏的网络状态必不可少。@property(nonatomic, getter=isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible 千万不要忘记哈~同时不要太频繁的set Yes,太频繁,你会发现状态栏的activityIndicator是一直在闪的。

3.UINavigationItem 的左右按钮,虽说已经给定好了位置,但是对齐还是相当必要的。这就要求图片对齐,或者用代码控制image contentoffset。同时还有一点需要注意,按下状态也是要对齐一下的,不要以为手按下去看不见就无所谓,细节真的可以决定成败。

4.每个cell中的排版,间距一定需要注意,该对齐的地方一定要对齐,这样看起来才舒服。有条件最好研究一下视觉范围。

5.每个页面加载的速度。open api必然会有限制发挥的地方,要合理利用api,而不要盲目的使用api来达到预先的效果。尽可能的节省流量,为用户节约每一分钱。

6.比较杯具的ip4的高清屏,想要显示清楚就必然要缩小图片在屏幕上的size,这方面只能将就了。

7.在textview中不管是转发,还是@以及##,记得尽量处于用户的角度想一下,移动好光标的位置。移动方法是修改textview的@property(nonatomic) NSRange selectedRange

8.在手势冲突的时候,设置好优先级。

9.使用尽量简单,尽量隐蔽的动画,来达到最好的效果。

10.没有摄像头的设备,记得不要弹出来自摄像头。。。

11.textfield/textview的键盘类型,返回键类型

12.注重细节并不是意味着到处加效果。

13.程序员也是设计师,也有义务和美工一起搞好UI。要重构的时候必须重构,就算你把制作程序当成工作,当成赚钱的手段,那么你也必须要和美工一起达到目前能达到的最好效果,这是对你工作的交代。当然,我一直认为这样的人不适合做一名程序员,至少我一直认为我从事的是我的兴趣,我完成的是我的创作。

14.activityindicator如果是IB拖出来,一直是转动状态,而代码只是控制显示和隐藏,记得测试后台返回的时候activityindicator是否还在转。

15.尽量避免出现由于加载而导致用户无法操作的情况。

16.整体风格的统一。

17.使用gps时,需要的时候再打开,用完关闭。

18.字体大小特别要注意,可以设有几套字号,但是同类微博的展示位置的字号要统一。

原创粉丝点击