【开源】开发者新闻聚合APP 2.0.3发布(第二个稳定版本)
聚合了博客园新闻、infoq新闻、36kr新闻、oschina新闻、51cto新闻、csdn新闻;
争取做到随时刷随时有开发者的新闻!
目前还只支持安卓APP
但用的人多了,我会发布苹果版的APP
最新版本的下载地址:http://shumanu.com/DeveloperNews.apk
开源代码的地址(包含采集程序、守护程序、APP客户端和WEB服务端):https://github.com/xland/DeveloperNews
扫码下载:
来看看系统截图:
这次更新的主要内容有:
一个屏幕只显示一条新闻;并且字体加大,方便用户在公车上刷新闻,(这样就不会晕车了!亲测!)
向上滑动家在更多新闻,向下滑动刷新新闻!
只提供了用系统浏览器打开新闻正文的功能!
去掉了用不到的权限!
修改了升级逻辑
升级部分的关键代码:
(正如你所见,客户端是JS写的,全部代码去GITHUB上看吧)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | function updateAndroid(fPath) { var date = new Date().getTime(); var fileN = "" ; fileN = "_doc/dn_" + date + ".apk" ; var options = { method: "GET" , filename: fileN }; var watiting = plus.nativeUI.showWaiting( "开始下载:0%" ); var dtask = plus.downloader.createDownload(fPath, options); dtask.addEventListener( "statechanged" , function (task, status) { if (!dtask) { return ; } switch (task.state) { case 1: // 开始 break ; case 2: // 已连接到服务器 break ; case 3: // 已接收到数据 var nowData = Math.floor(task.downloadedSize * 100 / task.totalSize); if (nowData % 10 == 0) { watiting.setTitle( "已下载:" + nowData + "%" ); if (nowData == 100) { plus.nativeUI.toast( "正在准备环境,请稍后!" ); plus.runtime.openFile(dtask.filename); plus.runtime.quit(); } } break ; case 4: // 下载完成 break ; } }); dtask.start(); } function checkVersion() { mui.get(baseUrl + '/Default.aspx?Action=CheckVersion' , {}, function (data) { if (data != plus.runtime.version) { plus.nativeUI.confirm( "有新版本,是否更新?" , function (msg) { if (msg.index == 1) { if ( 'iOS' == plus.os.name) { plus.runtime.openURL(baseUrl + "/update/ios.aspx" ); } else { updateAndroid(baseUrl+ "/DeveloperNews.apk" ); } } }, "友情提醒:" , [ "取消" , "确定" ]); } }); } |
webservice的代码页有更新,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | var pageSize = 8; var Index = Request[ "Index" ]; if ( string .IsNullOrWhiteSpace(Index)) { Index = "0" ; } var start = Convert.ToInt32(Index); var dbFactory = new OrmLiteConnectionFactory(ConfigurationManager.AppSettings[ "dbConnStr" ], MySqlDialect.Provider); var db = dbFactory.Open(); List<allen_news> obj; if (start == 0) { obj = db.Select<allen_news>( "select * from allen_news order by news_id desc limit 0," +(pageSize*2).ToString()); } else { obj = db.Select<allen_news>( "select * from allen_news where news_id < " +start.ToString()+ " order by news_id desc limit 0," + pageSize.ToString()); } db.Close(); db.Dispose(); if (obj.Count < 1) { Response.Write( "Sorry...我们不打算把不算“新”闻的内容提供给您,您收藏的内容可以在“我的收藏”中找到。" ); Response.End(); return ; } Response.Write(JsonConvert.SerializeObject(obj)); Response.End(); |
喜欢的朋友请帮忙点个推荐,或者到github上给我一颗星星,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
2010-11-10 NHibernate基础拾遗