MSDN中文Webcast for Windows Phone

之前做了一个MSDN中文Webcast app。当时是为了参加Windows Phone Mango大赛而编写的,因此设想很多Mango的新功能,后来给炮灰了。第一个版本大概花了10到15天的业余时间进行开发。后来又用了大概2,3周业余时间更新,完成了基本功能。这个app提交了以后一直没有怎么维护,也没有做推广。这里的推广是指连论坛发贴神马的,不是指刷榜什么的。如果对app store有了解,中国区好多app都是靠刷榜什么的,国外的app dev聚会的时候一般聊聊创意,开发的问题什么的。国内的app开发者大会,有些演讲者直言不讳的说要了解app store的排名算法,花多少钱推广神马的。当然国外的app也推广,而且刷榜这事绝非中国人发明的,但在中国发挥到极致。我当时做这个app是想借参赛的机会学习和大量应用mango的新功能,后来发现还是能帮到别人,也有一些人下载使用的。

 

下载链接

http://windowsphone.com/s?appid=7208ef50-a57d-4b11-b5ab-22f228137288

 

给力评价

MSDN中文Webcast for Windows Phone

MSDN中文Webcast for Windows Phone

MSDN中文Webcast for Windows Phone

MSDN中文Webcast for Windows Phone

 

程序还没有在中国区上线。

功能

这个app包含了以下几个功能

按照系列,讲师和产品分类显示Webcast

MSDN中文Webcast for Windows PhoneMSDN中文Webcast for Windows Phone

 

课程简介功能

MSDN中文Webcast for Windows Phone

 

下载管理功能

由于官方的视频是zip文件,需要下载解压才能播放,所以有下载管理的功能。

MSDN中文Webcast for Windows Phone

 

搜索功能

MSDN中文Webcast for Windows Phone

 

收藏功能

MSDN中文Webcast for Windows Phone

 

Live Tile功能

MSDN中文Webcast for Windows Phone

 

基本功能都有了,但是与当初设想的还是缺少了不少功能。

难点

刚开始我觉得做这个app难度不大,我大概在一年多前,Windows Phone刚出来的时候就做了一个播放Windows Phone Webcast的英文app。

MSDN中文Webcast for Windows Phone

免费下载地址 http://www.windowsphone.com/en-AU/apps/ddac45bc-4f3f-e011-854c-00237de2db9e

 

但是在开发这个app的时候还是遇到不少问题,解决这些问题浪费了开发6,70%的时间。这里确实是“浪费”,因为这些工作都不是在做app的关键部分,导致了一些设想的功能并没有完成。导致大量时间浪费主要是如下几个问题:

后台下载

由于官方的Webcast是通过以zip文件的形式存储,因此不能直接在线播放,需要下载zip文件到Isolated Storage。后台下载是Mango的新功能,是Background Agent的其中一个,使用后台下载是有些限制的,例如只能最多同时下载5个任务,所以要自己管理下载文件,这个管理流程在程序重启,墓碑化以后有点麻烦。下载过程中,文件的大小与通信的媒介(WiFi或者3G)都有关联,代码编写的时候还需要避免内存泄漏,因此花了不少时间在编写稳定的后台下载代码。

 

解压

如上所述,视频是通过zip文件存储,所以需要解压才能观看,因此我也试了好几个解压的库和源代码,通过大量的测试和修改,最后发现在Windows Phone中SharpZipLib是最好的,但是这个库在Windows Phone中运行,有时候也会出问题,例如文件大小大于100M的时候。这里浪费的时间比后台下载要多。

 

播放

文件一旦解压成功,需要进行播放,由于官方的时候历史悠久,有些视频的压缩比率非常高,导致Windows Phone不知道这种视频的格式。在开发过程中,我反复使用MediaElement,Silverlihgt Media Framework或MediaLuancher来试图播放所有视频,最后发现有好多视频三种方式都无法播放,甚至通过zune软件传输到Windows Phone也不能播放。最后只好放弃对一些视频的支持,这里浪费的时间还要比解压功能多很多很多。

 

这些问题不但浪费时间,而且导致这个app不能为用户提供良好的用户体验,例如用户需要下载等待,下载完毕还需要等待解压,解压后有部分视频还是不能播放(已经屏蔽了一部分,但是没有完整测试所有不能播放的视频)。可以说这个app的用户体验有一部分是由于官方提供视频的格式所限制的,如果以后官方提供在线播放功能,这个app的用户体验会提高很多。

 

预计实现的功能

由于浪费了6,70%的时间在处理非核心功能上,导致有好些预先设计的功能没有完成,主要如下:

 

搜索关联功能

在bing搜索中,如果搜索Webcast相关的,可以直接搜索这个app里面的内容,这是Mango的新功能,好像国内的app很少有这个功能。

 

完善解压功能

通过后台定时任务自动解压,不需要用户等待。可以通过定时任务完成这个功能。

 

完善播放功能

记录用户播放进度,可以随时回到播放的进度中。需要客户化播放控件。

 

微博分享功能

加入社交功能,用户互相交流等等。

 

展望

如上所述,有些功能还没有完成,需要进一步完成上述的功能,同时进行一些功能的完善可以提高app的用户体验,所以在未来会考虑如下一些功能:

把主页面改成Pivot

Panorama是个好控件,但是有时候使用Pivot可能更合适,打算把app改成Pivot控件。

 

完善UI

由于时间仓促,UI基本没有进行设计,直接把数据通过数据绑定进行显示,需要完善UI,增加更多的margin,加入一些图片等等。

 

云同步功能

通过Azure或者其他云同步一些设置,更新视频列表等功能,官方的视频列表是一个xml文件,而且没有版本信息,检查更新的时候需要下载整个xml。导致更新困难,通过云平台可以方便更新。首选Azure,但也考虑其他平台,例如heroku+nodejs,因为平常工作都熟悉使用Azure,想试试其他平台。

 

支持其他设备

支持iOS,Windows 8,Android,PC等设备,用户可以通过云同步各个设备的配置信息,播放进度等等,就像Kindle一样。由于使用了MVVM,所以移植到Windows 8难度不大,而且我平常也做过不同设备的开发,如果有需要和时间,支持这些设备不是什么问题。

MSDN中文Webcast for Windows PhoneMSDN中文Webcast for Windows Phone

 

找帮手

以上还是有不少功能需要完善,我希望找一两个帮手帮我完成,要求如下:

1. 一到两个,本人以前也做过一些开源项目,一堆人,最终没有把事情做出来,精简人员,一步步不断迭代。

2. 有充裕的时间,最好是大学在读的同学,app开始拼创意,后期拼时间,没有充裕的时间,不能完善一个好app,所以希望有充裕的开发者参与。

3. 熟悉Windows Phone开发,Mango的功能,最好熟悉MVVMLight的开发,由于整个app都是基于MVVMLight编写,基本零code-behind代码,所以最好熟悉MVVM,对于没有基础的初学者,对不起,暂时不能参与,因为分隔两地,沟通成本太高,我没有能力把事情安排的很好。

4. 对Windows Phone开发具有浓厚的兴趣,因为没有报酬的。

5. 愿意接受下面的事先说明和合作方式。

 

事先说明:

1. 这里不是找廉价劳工,而是找无酬劳工。没有任何报酬,我没有打算通过这个app赚钱,这个app连ad也没有。这里没有大饼,入市前请谨慎。

2. 避免以后发生问题,app的总体发展方向由本人决定,本人甚至可以cancel整个app的开发。

3. 避免以后发生问题,如果在合作上有任何问题,本人有权随时终止合作关系。开发者也随时可以离开项目,但不能公开源码。

4. 没有说明的,一切解释权归本人。

 

合作方式:

1. 通过Agile的方式开发,分为BA和Developer,然后通过迭代的方式增量开发,每次迭代2到4周,视乎开发者的时间,如果专注开发,2周时间能做不少功能,上述的app我大概使用了6-8周的晚上时间进行开发,我试过5天晚上的时间做出4个小游戏,在快速开发方面,Windows Phone还是一个不错的平台。

2. 我将从开发者转成BA,主要整理故事,如果有必要会解决一些技术问题。虽然现在不是专门做Windows Phone的开发,但是我对这个平台还是很了解,可以挖掘这个平台的最大功能(任何平台都有限制,需要在限制条件发挥到最大的功能)。下面是一些故事的例子:

1) 作为一个用户,我在Bing搜索中能搜索到Webcast的视频。

2) 作为一个用户,下载完毕的视频可以直接打开观看。

3) 作为一个用户,我能直接参看上传观看的视频,保留播放进度。

    参照Agile的方式,一个迭代会完成几个故事,软件不断快速更新,就像当前版本,我当时做1周迭代,现在已经2.0版本了。

3. 快乐编程,平常上班,上课什么都很多苦逼的事,所以不能把这个项目作为负担来做,高兴的时候才专注做,不高兴,以后不想做可以随时离开项目。但我希望要把一个迭代的任务完成了,或者至少完成了一个单独的故事。

4. 如果有兴趣,请加我微薄 @林永坚Jake, 粉我,然后求粉,就可以通过私信沟通。

 

参与的好处 

虽然上述条件苛刻, 为了吸引人参与,下面讲述一下参与的好处:

1. 可以把参与部分分享到你的博客,(上面的条件也没有限制,而且我本人很喜欢分享,每天在微博回答大量问题),只是不能公开全部源代码,我的目的是想把这个app做好,在我看来,现阶段开源不是一种好的方式,如果开源能把这个app做好,我愿意开源。我之前也做个好几个开源,对于这个app我选择精简人员,闭源开发。 

2.  如果app做得足够好,可能放到中国MSDN的官方网站进行推广,对于参与者找工作什么的可能有帮助,对我就没什么用的。

3. 可以尝试很多新技术,mango功能,Async神马的,我都用上,这是一个试验场,参与者能把这个app做好,技术上完胜大部分国内的app。

4. 可以把我做app的想法分享出来,Metro什么的,各种设备什么的。

5. 可以体验Agile开发流程,看过不少博客,很多人对Agile什么都当神膜拜,作为在各个开发流程都做过,主要还是喜欢Agile的做法,逐步完善产品的路程。

6. 在本机功能完善后,做做cloud什么的,Azure什么的对我来说也是拿起就立刻出系统。我试过2天时间把一个surface 2 的app从本地变成Azure版本,所以我可以分享这些想法。

 

写了上述的对开发者的好处,我也确实在考虑做这个对我自己有什么好处, 好处就是有人帮我把想法实现了,可能让更多人使用这个app,而且从中受益。什么经济利益什么的确实没有。



    本文转自Jake Lin博客园博客,原文链接:http://www.cnblogs.com/procoder/archive/2012/04/05/MSDN-Webcast.html,如需转载请自行联系原作者


上一篇:《第三方JavaScript编程》——7.5 总结


下一篇:iOS信号量报错