为 iPhone 设计个完美的快推客户端
App Store 上的 Twitter 客户端恐怕要有上百款,而我需要的,其实只有两款:全功能的,和快速发推用的。
全功能的 Twitter 客户端以前已经分析过了。我最终的选择是 Tweetie(推送通知还需要用 IM+解决)。
快速发推用的,有著名的 qTweeter,很酷,可惜实现机制不容于 App Store,而且要常驻内存。App Store 现有的快推客户端也有不少,免费的有 Tweetfire,iTweetSong 等,收费的有 Post 等,不过总是有一些令人遗憾的问题。
最后选择了 iTweetSong,但还心有不甘。索性,设计一个完美的快推客户端,如果有开发者感兴趣,不妨拿去实现。既然要做成最好的,买 1.99 美金问题不大吧?设计包括 QA 对应都免费,注明设计者为 KKK@www.ifanr.com 即可。:)
需求分析
作为全功能 twitter 客户端的补充,功能不需要全面强大,只专注于最基本的功能:发推。只做一件事,做到最好。
1 快速启动
快速启动是这种软件的立身之本。如果比 Fon 之类的全功能 Twitter 客户端启动慢就失去存在的意义了。
2 简洁
发推这么简单一件事,用户肯定不希望看到层层窗口。像 Tweetfire 的用户选择窗口不是好例子,宁可放弃这个功能。
3 字数统计
发推的最基本功能之一。
4 图推
这也是发推的最基本功能之一。
5 歌推
拿到 iPod 正在播放的乐曲的歌手和歌曲名并发推。对我来说很实用的功能。而且似乎也比较流行。很多全功能 Twitter 客户端不具备这个功能,所以是快推客户端的一个卖点(比如免费的 iTweetSong,收费的 TuneTweet)。
6 网页推,并缩短网址
Twitterrific 和 Fon 有通过书签调用并发推的功能。这也是很实用的功能。在 Safari 上看到什么有趣的文章,如果有启动快速发推软件的机会,用户一定不会考虑更重型,更慢的 Twitterrific 和 Fon。既然可推网页那么缩短网址功能就是必须的。
7 可离线发推
手机不会总有信号,但是用户不会在离线时就不思考。这似乎也是目前 AppStore 上没有软件支持的功能。大卖点!
8 发推后自动退出
Send 之后,还需要按一下 Home 显得多余,很贴心的功能 (Post 已经实现)。连续发推的场合应该比较少,大不了再启动一回。当然,也可以考虑像 Post 那样在 Setting 里面加上是否自动退出的开关。
9 自动保存
打了 7,80 个字,然后按了 Home,这些内容一定要保存住,否则用户再进来发现又要打一次,肯定很恼火。
其中高速启动(当然要真的够快),离线推都应该是独一无二的特性。通过书签发推虽然有 Twitter 客户端实现了,但是在快推软件中似乎还没有。这三个特性足够让 AppStore 上所有的快推软件甘拜下风了。
UI
最主要的窗口如下图。改自 Twitterrific 的发推窗口。
还有一些窗口没有画,比如第一次至少蹦出个窗口让用户输入用户名和密码。选择图片什么的也需要另外的窗口。不过不需要特别设计,系统自带的 UI 就可以了应该。
另外配色比较单调,这个可以适当调整。(配色可以参考 Twinkle 的发推窗口。)
功能
为了讲解加了数字标记。大概功能其实应该以看就能猜出来吧。那个乐谱符号是我手画的,比较难看还请包含。:)
标记 1 为剩余自数表示。随输入变化而变化。
标记 2 显示用户名,让用户知道到底谁在发推。
标记 3 为状态信息显示,让用户知道软件现在的工作状态。“sending(5)” 表示正在发推,队列里一共有 5 个推。图片添加成功等消息也可以这里表示。
标记 4 是输入框,不用多说。
标记 5 用来选择图片。
标记 6 用来得到当前 iPod 播放的音乐的名称和歌手,并自动输入在输入框中。
标记 7 用来缩短输入框中的网址。
标记 8 用来加上自己当前的地点信息。
标记 9 是发送并清空输入框。在线既时发送,离线则把当前推排入队列。
标记 10 为系统自带键盘。
不需触摸的部分 (剩余自数,当前用户,和状态表示) 放到了画面最上面。这样是为了腾出键盘上面的黄金位置,放那些常用的功能按钮。5 个功能按钮,都安排在了整个屏幕中最好按的位置上。
唯一令我有些担心的是 “Send”,他应该最常用,所以安排到了最右边。但是因为离键盘很近,所以可能有误按的问题。如果担心,可以考虑给 “Send” 加确认。
或者,把上面的状态栏,挪到功能按钮和键盘中间。:)
设置
用户名,密码,是否打开发送并推出。。。这三项足够了吧?(xpoint 提醒说,这里还需要一个选项来设置 API。:))
实现要点
速度!!!
启动软件之后,建立网络连接,登陆 Twitter 都先不要做。先弹出输入框和键盘,让用户达到可输入的状态。
在用户打字的时候,再做连接网络,登陆 Twitter 等动作。(iPhone 的软件是可以多线程动作的,内置的短信可以在发送时输入,Byline 也可以在同步时浏览。)
同样道理,“取得当前播放歌曲信息”,“缩短网址”,还有 “加入当前位置信息” 这几个功能,也都不做成自动的。用户去点那些同能按钮才执行。虽然缩短网址这种东西做成自动的会显得贴心,但是为了速度还是宁可让用户多点一下吧。
发送也是,直接把当前内容排入发送队列,然后清空输入框,达到可输入的状态。(如果发送并退出被用户设置成 Off 的话)
将来可追加的功能
其实实现了以上的功能已经相当到位了。当然下面的功能也可以考虑实现,但是最好保持克制。不要忘了,这个软件的宗旨是,只做一件事,做到最好。
1 多账户
在设置里加个增加用户的选项,并且可设置当前用户。主窗口的 “iFanr Tweeting” 相应点击,每点一次切换一个用户。
2 mentions 提示
D 或者@后面如果输入字母的话,追加个列表显示并过滤 Following 和 Follower 的用户。不过技术上似乎有难度。可能必须追加窗口了。
3 离线推发送管理
可能也需要追加窗口。可以删掉未发出但是排在发送队列中的推。
4 视频推
5 Push 和启动全功能 Twitter 功能
等等。
最后,别忘了做个好看的图标,起个一目了然的名字。。。比如:
FastestTweeter。
ps 关于离线推的补充:
多谢@lawrencelry 和 @nAODI,他们推荐了一个可离线推的软件 birdhouse。
用了一下发现,他的离线推是通过草稿实现的。如果你选择公布,没有网络仍然会报错。下次连接到网络时,你仍然需要再次指示 birdhouse 一次。
这和我所说的离线推还有不同。
我的设想是有个发推队列,只要按 send,无论成功与否,先进入队列再说。离线的话队列不断增加,如果在线就一个一个发。那么 send 只需要指示一次就够了。
是否在线不需要用户考虑,指示也完全没有必要多次。用户只需要告诉软件一次,我要发这个推就够了。在网络连接正常的情况下把它发出去是软件的任务。
这里有个问题是队列中的发送出错的处理。连接超时过后重试就好了,140 字已经检查过了。如果有错,应是用户名密码不正确等等,应该比较少见。所以不想为此追加发送一览和管理窗口。可以弹出个 Popup 对话框,说以下内容发送失败,用户可以选择 “再试” 或者 “删除并拷贝到剪贴版”。
这个级别的实现应该仍然是独家特性吧?:)