作者:soultim
 
 

先用户之所想

  亚德里安.斯莱沃斯基在《需求》一书提到,真正的需求并不是用户明确提出的,用语言表述的部分。这些部分你看得见,你的竞争对手也同样看得见,只抓住看得见的部分,你就已经陷入红海了。

 

  只有想用户之所想,急用户之所急,在用户了解自己的需求之前,就帮他们提供可行的解决方案,才能创造出抓住人心的产品。

 

  上图是当前iphone播放歌曲的锁屏界面,ios系统在锁屏界面提供显示的信息目前只有4个:播放歌曲名字(十年)、演唱者(陈奕迅)、歌曲所属专辑(黑白灰)和专辑图片,而且在锁屏环境下,应用程序在后台运行的时候,程序的能力范围十分有限,系统也没有提供在锁屏界面下可以显示歌词的api接口,目前市面上的音乐播放器也都只能做到这一步。

 

  传统上,我们在使用在使用音乐播放器播放歌曲时,当我们离开状态做其他事情时,通常的习惯是锁住屏幕,让音乐在后台播放。当对某句歌词突然触动了你的心扉或者引起你想看歌词的兴趣时,可能需要如下的操作步骤:

 

  第一步,解锁屏幕,甚至可能需要你输入密码才能解锁。

 

  第二步,双击Home键,从后台打开音乐客户端。

 

  第三步,通过一次或几次的点击操作跳转到歌词界面才能查看到歌词。

 

  我们发现至少要经过上面的3个步骤才能满足这个需求,相关数据统计也表明每多一步操作转换率折损是50%。那么是否在iphone锁屏情况下,无论用户是通过Home键还是电源键,只要点亮了屏幕,就能显示当前的歌词,而不需要经过如此多而繁杂的操作步骤呢?

 

功能需求提炼

 

  通过背景介绍基本能明确需要解决的功能需求点:1、锁屏情况下,点亮屏幕,显示歌词;2、设计开关,用户也可以选择关闭锁屏条件下显示歌词的功能。

 

技术实现分析

 

  通过前面介绍过,基本了解应用程序在锁屏界面的展示能力范围非常有限,在锁屏界面条件下显示歌词本身就是一个难题,在这基础上又要追求显示效果美观优雅,要让用户拥有卓越的体验,更不是一件容易的事情。既然iosSDK没有提供相关的api和歌词显示位置给锁屏界面,运用几种不同方案不断进行尝试,基本能实现显示歌词,但显示效果不够理想,也会引发各种不可预知的问题,只能想想还可以通过怎样的特殊方法来实现。

 

  经过思考与分析,不断尝试,可以找到这样的突破点: 锁屏界面显示的专辑图片是我们通过应用程序来设置的,这个是程序控制范围内,利用这个突破点,考虑通过图片合成与截取技术,把当前歌词截取成图片快照,和专辑图片一起合成一张新的图片,再将新合成的专辑图片设置给系统,相当于换了新的专辑图片,这张专辑图片带有当前歌词信息,当下一句歌词更换的时候,再重新合成另一张新图片。
 
 

实现流程及解释:

 

 

1. 歌词更新:应用程序通过NSTimer定时器,每隔一个时间周期,定时器NSTimer回调我们的应用程序接口,更新歌词信息;当用户点亮屏幕或者屏幕暗的时候,应用程序是如何捕获到这种状态的改变呢?

 

  这又是另一个技术难点,通过研究发现,有两种方法可以监听,一种是监听内核层DarwinNotification,在Darwin中,有很多的系统事件,但appleapi文档描述这些api使用有限制,也就是灰色地带的api,所以能不用则不用;另一种方法可以通过notify_get_state来获取com.apple.springboard.hasBlankedScreen 的状态值,通过状态值我们可以判断屏幕状态,屏幕亮或者暗系统会给出不同状态值,然后根据状态值,通过NotificationCenter发送消息通知给相应的函数处理,处理的流程如下图:  
 
 
 

2.合成新图片,调用ios系统的api截取和合成新的专辑图片。

 

3. 更新系统信息,通过sdk提供接口,MPNowPlayingInfoCentersetNowPlayingInfo方法,把锁屏显示的专辑图替换成我们新合成的图片,从而实现锁屏歌词功能。

 

迭代改进优化

 

         精品不是一蹴而成的,更不可能因为功能需求实现就告终,而是要不断经过打磨,迭代改进与优化。

 

1.性能考虑,歌词每隔一小段(不到1)时间,就会进行更新,在没有必要的情况下,不需要做额外的图片合成操作,比如程序处于后台,屏幕暗的状态,又如程序处于前台的状态。以节省系统CPU和电量的开销,经过几次的打磨,做到不浪费一次额外操作,把性能消耗做到最优。

 

2.体验考虑,添加此功能的开关控制,用户可以自己定义是否需要在锁屏状态下显示歌词。

 

3.歌词显示位置、字体大小、渐变的字体颜色等细节进行美化及调适,让显示效果更富有有立体感。

 

  前后效果对比:
 
 

用户体验反馈

 

  AppStore上一些网友评论:

 

@我亦飘零 B,能显示歌词了

 

@爽。。  就冲这个锁屏歌词也得赞一个,虽然绿砖的各种特权让人有点儿不爽

 

@Tinlud Liew   新版本真的好棒,最喜欢锁屏歌词这个新功能了,很炫!希望QQ音乐继续努力,开发出更多使用的功能!!!

 

@Kenny_Cheney   锁屏时有歌词显示,喜欢

 

@大力小健   走在了前面!锁屏歌词大赞!

 

  腾讯微博一些网友评论:

 

    @Taurus-小太  新版QQ音乐锁屏能滚动歌词了?还是我火星了?app store竟然通过审核了?

 

    @武获皓  吓到了,ios7锁屏界面中QQ音乐的歌词居然会动!

 

    @百功  QQ音乐和ios的锁屏界面整合得不错,歌词的字体再清楚一点就好了

 

    @  突然发现QQ音乐很牛B,在iphone的锁屏界面能同步显示歌词!How they did it?!