MSDN中文Webcast for Windows Phone
更新了最后的部分“参与的好处” -- Good Friday放假没事写博客。-2012年4月6日。
之前做了一个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
给力评价
程序还没有在中国区上线。
功能
这个app包含了以下几个功能
按照系列,讲师和产品分类显示Webcast
课程简介功能
下载管理功能
由于官方的视频是zip文件,需要下载解压才能播放,所以有下载管理的功能。
搜索功能
收藏功能
Live Tile功能
基本功能都有了,但是与当初设想的还是缺少了不少功能。
难点
刚开始我觉得做这个app难度不大,我大概在一年多前,Windows Phone刚出来的时候就做了一个播放Windows Phone Webcast的英文app。
免费下载地址 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难度不大,而且我平常也做过不同设备的开发,如果有需要和时间,支持这些设备不是什么问题。
找帮手
以上还是有不少功能需要完善,我希望找一两个帮手帮我完成,要求如下:
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,而且从中受益。什么经济利益什么的确实没有。
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。