【完全开源】知乎日报UWP版(上篇):界面设计、官方API分析
目录
说明
使用Fiddler分析android版API
部分效果图
关于源码
说明
在做博客园UWP版的时候其实就有做知乎日报的打算了,前段时间一直出差,在酒店里用Fiddler简单的分析了一下Android官方版本使用到的API,刚开始以为很复杂,后来发现其实很简单。windows商店里知乎日报的应用有好几个,但是网上基本没有什么开源的,这篇文章将介绍一下知乎日报用到的API(Android版)以及目前已经完成的部分界面(为了测试效果,我还特意买了一部lumia 535,399元还送一部移动电源,当天就升级到了Windows 10 Mobile)。等所有的功能都做完了之后我再将源码传上来。
注:后来上网查了一下,发现其实早有人分析了知乎日报的API。
使用Fiddler分析Android版API
首先要准备的工具:
android手机+知乎日报APP;
Fiddler(大名鼎鼎Telerik出的,Telerik);
局域网。
原理很简单,打开Fiddler,将它设置成为一个代理,然后将同一局域网中的Android手机代理设置为Fiddler所在的电脑。
之后Android手机所有的HTTP请求都会先经过代理(Fiddler所在的电脑),Fiddler当然也能捕获到请求的各种数据。(注意如果捕获的回话过多,请通过Fiddler右侧的Filter进行过滤)。
如果对Fiddler不熟悉的童鞋可以看这里:http://kb.cnblogs.com/page/130367/
之后,打开Android手机中的知乎日报APP,你就会看到所有的HTTP请求:
如上图,注意一定要使用filter进行过滤(图中右侧)。可以看到,知乎日报APP中各种操作都能看到对应的API,大概有以下:
Android APP版本更新检查;
APP启动图片
日报主题列表抓取
首页最近文章
首页分页文章(按天)
主题页面文章
主题页面分页文章
文章正文
文章额外信息(评论数、点赞数等等)
获取短评论
分页获取短评论
获取长评论
分页获取长评论
(有关登录的API本人没有分析)
每个API都是通过Get方式请求的,返回的大部分都是Json格式的数据(有一部分是HTML)。下图是我整理出来的一些API:
等源码传上来之后,大家可以下下去看看。每个API返回的格式如下(以抓取主题日报列表为例):
返回的JSON数据很好处理,使用Windows.Data.Json命名空间的类型就可以全部解决。这是获取API部分的准备。
以上。
部分效果图
功能还没有做完,先看几张图:
关于源码
等做完之后上传全部源码(这次项目结构稍微设计了一下:))。
12年的时候我买了一部Lumia 800(WP7的系统),发现系统很差劲,后来没怎么用了,花了我3000块。之后Wp8/8.1一直没怎么关注,现在用了一段时间的Win 10 Mobile,发现进步相当大,应用商店里的一些大厂开发的APP体验也很好吧,要是开发者给点力,还是可以做出好的APP的。就我目前个人认为,认真做出来的APP还是可以让一些本已适应了Android、IOS的人接受的,昨晚把我做的半成品给我媳妇用,她也没感觉出来跟IOS哪里差了。
开源有益,多谢点赞。
作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: UWP
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5056217.html,如需转载请自行联系原作者
【开源】知乎日报UWP 更新
说明
大概十天之前我更新了一次APP,后来又仔细看了一下Store里的评论,发现还有几个地方没有改过来。于是前天晚上抽时间改了一下,顺便完善了一下UI体验。
没有看前面文章的童鞋可以看一下下面的链接:
这里是之前的一些文章:
【完全开源】知乎日报UWP(上篇):界面设计、官方API分析。
【完全开源】知乎日报UWP(下篇):商店APP、github源码。Windows APP良心出品。
【开源】知乎日报UWP 更新(1.2.8.0)
这里是源码下载:
github源码
这里是Windows Store下载地址:
商店APP (最新版本 1.3.0.0) 如果之前下载过但是现在没有提示你更新,那么请卸载原来的APP重新下载。
修复BUG+完善UI
1)解决了StatusBar一片黑(或者一片白)的bug,现在直接隐藏了StatusBar,APP整个界面全屏了;
2)各个列表支持下拉刷新,去掉了之前手动刷新的按钮;
3)页面切换时增加了“过渡效果”(Transition Animation),实现起来很简单,看一下源码就知道;
4)去掉了APP底部的AppBar,“设置”和“收藏”功能移到了SplitView.Pane中去了。
新版视频
简单地录了一下视频,方便大家看一下效果:
作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: UWP
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5384637.html,如需转载请自行联系原作者
【开源】知乎日报UWP 更新
说明
清明节看了一下后台数据,好几个月没管,发现这个App下载量有3K多了,评分4.6也不低,多谢没有一个给1分的:)。看了一下下面的评论,发现有好几个比较严重地问题,遂找了点时间更新了一下。
这里是之前的一些文章:
【完全开源】知乎日报UWP(上篇):界面设计、官方API分析。
【完全开源】知乎日报UWP(下篇):商店APP、github源码。Windows APP良心出品。
这里是源码下载:
github源码
这里是Windows Store下载地址:
商店APP (最新版本 1.2.8.0)
修复Bug+新增功能+完善UI
1.增加“关闭Toast通知”的功能(这个反应的人数最多);
2.修复文章浏览时,blockquote标签字体过大的bug;
3.完善各个页面中ListViewItem的触摸效果,之前是默认的效果按下时有阴影;
4.设置页面增加版本号显示的Label;
5.加载速度优化了一下,但是感觉不是也别明显。
其余评论里有人反映的问题,由于在我这里无法重现,所以无法修复 :(
新版视频
由于公司发了新的950XL,装在上面试了一下,配置高果然用着爽。录了一个简短的视频:
作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: UWP
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5353275.html,如需转载请自行联系原作者
【完全开源】知乎日报UWP版(下篇):商店APP、github源码、功能说明。Windows APP 良心出品。
目录
说明
功能
截图+视频
关于源码和声明
说明
陆陆续续大概花了一个月的时间,APP算是基本完成了。12月份一直在外出差,在出差期间进行了两次功能完善,然后断断续续修补了一些bug,到目前为止,我在自己的Lumia 535手机上测试过没有问题。现在算是告一段落,所以将稳定版的APP上传到了应用商店,源码也随着上传到了github。
Windows应用商店:https://www.microsoft.com/store/apps/9NBLGGH5KG9W (Windows 10 Mobile设备)
github源码仓库:https://github.com/sherlockchou86/ZhiHuDaily.UWP
说明一下,如果对这个不太熟悉的童鞋可以看之前的一篇博客:
【完全开源】知乎日报UWP版(上篇):界面设计、官方API分析
我博客中关于UWP开发的系列文章在这里:
UWP开源系列
功能
能做
功能除了登录(回复、点赞)没有以外,其余所有与android版本一致;
支持分享到朋友圈、分享给微信好友、windows 10内置分享;
支持网络类型(wifi、234g)自动判断、234g不下载图片;
支持离线缓存(无网络连接可以查看缓存内容)、缓存清除;
收藏、已读文章以及一些配置数据均可漫游,在多个windows 10设备上共享(该功能没有充分测试)。
不能做
不能登录账号;
不能评论、点赞、回复。
截图+视频
视频
截图
注:界面主题颜色跟系统设置一致(UWP默认的)。
关于源码和声明
本APP只适用于Windows 10 Mobile设备(其他设备也能运行,但是界面需要重新调整);
APP使用到的Web API均通过Fiddler侦测分析得到(不包含登录部分API),因此使用到的API接口非官方渠道发布(本人不负责任何法律问题);
ZhiHuDaily.UWP.Core项目包含了Web API的封装、ViewModel、Model以及一些控件、自增集合、工具类的定义。ZhiHuDaily.UWP.Mobile项目 中只包含View部分的代码以及一些素材;
所有源代码均遵循MIT协议,可以随意使用;
任何问题都可以在本篇博客下留言。
已知不足:
文章显示页面我没有使用官方的CSS样式表(不太好控制),而是自己粗略的定义了一些样式,因此个别文章的格式显示有些乱;
不知道是不是我手机配置不行的原因(lumia 535最便宜的windows 10 mobile设备),列表加载过多时,列表项出现黑色背景(但马上恢复正常)。
开源有益,多谢点赞。根据APP的使用情况和下载量,后期我会完善功能。
作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: UWP
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5093438.html,如需转载请自行联系原作者
UWP开发:APP之间的数据交互(以微信为例)
目录
说明
UWP应用唤醒方式
跟微信APP交互数据
APP之间交互数据的前提
说明
我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据。比如我在使用知乎APP的时候,需要使用新浪微博账号登录,点击“微博登录”后,系统自动唤醒新浪微博APP,并将知乎请求登录的数据传给了微博APP(微博APP界面上可以看到是知乎请求登录授权),见下图:
如上所示,依次点击“微博登录”、“确定”,手机界面自动来回切换,不需要人为干预。另外,如果我们在知乎看到一篇有意思的文章,需要分享给好友(会发送到朋友圈)时,我们可以点击“分享”菜单中的“发送给QQ好友”,那么系统自动唤醒QQ APP,并将要分享的链接(标题)数据传给了QQ APP,见下图:
如上图,依次点击“分享-QQ”、“发送/或取消”,手机界面可以自动来回切换,不需要人为干预。
那么,手机中怎样做到APP之间的相互唤醒,并且能够传递数据的呢?上面举得例子都是android里面的APP,接下来给大家分析一下UWP应用怎样唤醒另外一个UWP应用并且给它传递数据。
UWP应用唤醒方式
注意这里“唤醒”的意思,是指打开另外一个APP的界面,不管该APP是否曾经打开过。APP之前的状态可以是Stopped、也可以是Suspended。
在UWP中,一个APP唤醒另外一个APP有两种方式:
文件唤醒;
协议唤醒。
前者很好理解,跟传统桌面软件类似,将APP与某一类文件进行关联,之后我只要打开该类文件,那么与之关联的APP就可以自动唤醒,并且可以将文件路径传递给唤醒的APP,之后APP便可以读取文件中的内容。
后面的一种其实我们也见过,比如我们在程序中碰到“HTTP://”开头的文本字符串时,通常直接可以打开与之关联的程序(浏览器),这里的“协议唤醒”大概也是这个意思,只是这里的协议可以自定义,比如我可以将我的APP与“MYAPP://”这样的协议关联上,之后碰到所有的“MyAPP://”开头的协议类型时,系统都会自动打开我的APP,注意协议头后面可以接一些参数,这个跟http中get方式类似。
Windows 10系统中存在一些预定义的协议,这些协议已经关联上了一些APP:
ms-windows-store:// (打开windows 应用商店APP)
ms-settings://(打开系统中设置 APP)
mailto://(打开默认邮件 APP)
还有好多
比如我要打开 Windows应用商店APP,并且查找所有“周见智”发布的APP时,可以使用下面的方式:
Uri uri = new Uri("ms-windows-store://publisher/?name=周见智");
var success = await Windows.System.Launcher.LaunchUriAsync(uri); //协议启动对应APP
系统自动打开Windows 应用商店APP,并且APP能跳到“周见智”发布APP的结果页面。这个原理很好理解,APP接收到协议字符串后,会分析之中的参数(比如publisher、周见智等),然后执行一些命令(比如查找、跳转页面等)。
详细请访问:https://msdn.microsoft.com/en-us/library/windows/apps/mt228340.aspx?f=255&MSPPError=-2147217396
跟微信APP交互数据
下面我以UWP版微信为例,讲一下自己开发的APP怎样与微信APP交换数据(自动唤醒)。假设现在我开发了一款APP,当在APP中看到一篇好的文章时,我需要有一个功能,那就是分享到微信朋友圈、或者微信好友。
如上图所示,一个分享过程包含两次界面切换。My APP->微信APP、微信APP->My APP,同时包含两次数据交换:
My APP将数据传给微信APP(比如要分享的链接、标题、缩略图等);
微信APP将结果传给My APP,My APP根据结果显示“分享成功/分享失败”。
那么这里就有一个疑问了,靠什么传递数据呢?其实根据上面唤醒APP方式的说明,我们不难看出,完全可以使用协议字符串或者文件传递数据。没错,UWP版微信APP就是通过文件和其他APP进行数据传递的。默认情况下,微信APP与.wechat类型的文件进行关联,当我们需要给微信APP传递数据时,只需要往一个.wechat类型的文件中写入数据,然后将其打开即可,这样微信APP就可以被唤醒并且读取文件中的数据。反过来,微信APP如果要给我们的APP传递数据,它也会向一个文件中写入数据(至于这个文件的类型需要你开发的时候指定)。
传递数据的介质我们知道怎么搞了,那数据传递的格式是怎样的呢?微信开放平台提供了WP版的开发SDK,使用该SDK开发与微信交互的APP时,不用关心具体传递数据的格式,只需要调用相关API接口写入即可:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419315810&token=&lang=zh_CN
下面看我完成分享的功能(知乎日报UWP版中的一个分享功能,具体可以参考 ):
如上图,知乎日报UWP版现将数据传递给微信APP,微信收到数据后,直接转到分享界面,分享完成后(成功),自动切换到知乎日报UWP版界面,然后给出提示。最后一张是我朋友圈的效果,分享给好友的原理类似。界面在两个APP之间自动来回切换。以下是分享网页给微信好友的代码:
注意:我目前的APP并没有在微信开发平台上创建应用并通过审核,所以微信APP上显示“未审核的应用”。这个不影响使用,因为分享的过程并不要求登录授权,毕竟最终的分享决定权还在微信界面上。
具体的代码会在整个知乎日报UWP版完成之后上传到github,有兴趣的童鞋可以关注一下本博客,到时候下下去看一下。另外,为了验证,我的APP是通过.wechat类型的文件唤醒微信APP的,我在自己电脑上做了一个测试,由于电脑没有安装微信,当我点击“分享到微信好友”时,奇迹发生了:
如上。当电脑上没有APP与.wechat文件关联时,会出现这种情况,是不是很熟悉?
APP之间交互数据的前提
APP之间交互是两个人的事情,单方面是不可能单独完成的,传递数据需要双方同时遵循一套规范(协议),不然你说我不懂,我说你不懂。所以,在开发一款要与其他APP进行交互的APP时,必须使用其他APP的SDK,这样发送的数据别人才能理解。另外,其他APP收到数据后要知道该怎样去处理,所以总的来说,两个APP之间必须是你情我愿的。
再次说一下,源码稍后不久会上传,感兴趣的可以关注本博客,谢谢。多谢点赞。
注意单纯的交互数据是不需要其他APP登录授权的,所以不要跟OAuth授权搞混淆了。如果APP之间可以交互,那么Oauth授权就可以很简单,直接找安装在本地的APP就行,比如微博APP,它授权完成后会告诉你对应的AccessToken。
作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: UWP
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5061283.html,如需转载请自行联系原作者
移动开发之微信小程序——资料集合
本文转载自:知乎 有需要下载的客官可可以点击知乎去下载相关资料
一:官方地址集合:1:官方工具:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=14764346784612:简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=14764346775993:设计指南:https://mp.weixin.qq.com/debug/wxadoc/design/index.html4:设计资源下载:https://mp.weixin.qq.com/debug/wxadoc/design/#资源下载5:腾讯云教程:https://www.qcloud.com/doc/product/448/6405二:免费视频地址:均为网络收集的免费视频:视频资源 - Demo/资源下载三:新手教程集合:原创不易,请大家多多支持作者专栏,教程系列均得到了原作者的授权;1:顺子_RTFSC把玩系列:博客地址:顺子_RTFSC的专栏微信小程序把玩《一》:window配置,tabBar底部导航,应用生命周期 ...微信小程序把玩《二》:页面生命周期,模块化,数据绑定,view组件 ...微信小程序把玩《三》:scroll-view组件,swiper组件,icon组件微信小程序把玩《四》:text组件,progress组件,button组件微信小程序把玩《五》:checkbox组件,form组件,input组件微信小程序把玩《六》:picker组件,radio组件,slider组件微信小程序把玩《七》:switch组件,action-sheet组件,modal组件微信小程序把玩《八》:toast组件,loading组件,navigator组件微信小程序把玩《九》:audio组件,image组件,video组件微信小程序把玩《十》:wx.request(object) API,wx.uploadFile(object)微信小程序把玩《十一》:Image API,Record API,Audio API2:秀杰实战系列:博客地址:博客 - 秀杰的个人空间秀杰实战教程系列《一》:记账应用开发秀杰实战教程系列《二》:微信小程序绘图课程之饼图秀杰实战教程系列《三》:下拉筛选菜单WXDropDownMenu组件秀杰实战教程系列《四》:倒计时组件,LXStepper组件-商品数量加减 ...秀杰实战教程系列《五》:实战课程之记账应用开发(续)秀杰实战教程系列《六》:服务端之用户注册与登录基于ThinkPHP5描述 ...秀杰实战教程系列《七》:实现购物车页面秀杰实战教程系列《八》:记账应用实战服务端之用户注册与登录基于Codeigniter3描述 ...秀杰实战教程系列《九》:应用实例教程服务端登录篇秀杰实战教程系列《十》:服务端实现账目CRUD秀杰实战教程系列《十一》:对接服务端账目CRUD3:有渔入门系列:博客地址:编程艺术 - 51CTO技术博客有渔微信小程序系统概述《一》认识微信小程序与HelloWorld有渔微信小程序系统概述《二》了解.js文件及.json文件有渔微信小程序系统概述《三》view层及小程序框架概述有渔微信小程序系统进阶《四》小程序组件有渔微信小程序技术分析《五》Mustache语法要点总结有渔微信小程序系统概述《六》小程序的API有渔微信小程序技术分析《七》实例开发教程有渔微信小程序系统概述《八》:小程序开发中应注意的几个问题4:疯狂的猫入门系列:博客地址:疯狂的猫 - 博客园微信小程序入门系列《一》:入门正确姿势微信小程序入门系列《二》:开发工具使用与设计规范微信小程序入门系列《三》:生命周期微信小程序入门系列《四》:触控事件微信小程序入门系列《五》:数据绑定5:栁罗风尘的攻略系列:博客地址:不忘初心,才能始终微信小程序简易全攻略《一》开始构建与创建页面微信小程序简易全攻略《二》设置页面标题与底部导航微信小程序简易全攻略《三》创建轮播图与数据请求,表单的创建、提交、与接收 ...微信小程序简易全攻略《四》模板条件列表渲染完成模拟公众号自动回复 ...6:Bison试水系列:博客地址:Bison的技术博客IOS开发者试水:微信小程序开发教程-从零开始(1)IOS开发者试水:微信小程序开发教程-从零开始(2)IOS开发者试水:微信小程序开发教程-从零开始(3)7:二当家小武零基础系列:博客地址:u012491227的专栏零基础入门篇:微信小程序开发博客项目《上》零基础入门篇:微信小程序开发博客项目《中》8:dzp_coder学习点滴系列:博客地址:dzp_coder微信小程序学习点滴《一》:如何获取时间,页面跳转,传递参数 ...微信小程序学习点滴《二》:开发者工具快捷键,轮播图 swiper图片组件 ...微信小程序学习点滴《三》:开发工具及开发环境配置,尺寸单位rpx与px,rem相互转换 ...微信小程序学习点滴《四》:网络请求微信小程序学习点滴《五》:网络请求(POST请求)填坑指南微信小程序学习点滴《六》吐司toast(消息提示框)微信小程序学习点滴《七》选项卡(窗口顶部TabBar)及(窗口底部TabBar)页面切换9:Two_Water的学习系列:博客地址:【微信小程序】微信小程序学习《一》:目录文件详解,视图渲染详解微信小程序学习《二》:事件详解10:oopsguy实战系列:博客地址:oopsguy - 博客园精品教程:微信小程序实战之知乎日报精品教程《二》:微信小程序实战之小豆瓣图书四:demo合集;网络上的demo十分分散,我专门集中了大部分目前可以搜寻到的demo,方便大家查找,每个demo均提供了github地址,方便查看最新更新代码;官方开发者工具导入demo教程
微信小程序demo:百度小说搜索
微信小程序demo:果库
微信小程序demo:爆米花popcorn
微信小程序demo:Testerhome
微信小程序demo:公众号热门文章信息流
优质demo推荐:空气质量查询
微信小程序demo:环球小镇商城
微信小程序demo:小林早餐
微信小程序demo:狼人杀
微信小程序demo:仿QQ,重点UI绘制 和微信
微信小程序demo:半个医生的探索版
微信小程序demo:模仿city games 看还原度
微信小程序demo:元宝币钱包 YBCWallet
微信小程序demo:骰子游戏
微信小程序demo:500px
微信小程序demo:有调商城
微信小程序demo:巴爷商城
微信小程序demo:礼物说
微信小程序demo:德泽微特产
微信小程序demo:备忘录2
微信小程序demo:24点计算游戏
LeanCloud 的微信小程序用户登陆Demo
微信小程序demo:V2EX
微信小程序demo:We重邮(亲测可用)
新手学习福音:基于微信小程序官方教程的代
学习用demo:电影
微信小程序demo:搜索歌词(亲测可用)
微信小程序demo:电影app(亲测可用)
微信小程序demo:乐词
微信小程序demo:查询号码归属地
微信小程序demo:帮你妹
微信小程序demo学习示例:加载更多
微信小程序demo:豆瓣电影, 照片, 地图
微信小程序种子项目demo
微信小程序demo:flex布局页面
微信小程序demo:指尖书香
微信小程序demo:火车票查询
微信小程序demo:新闻客户端
微信小程序demo:花礼网
微信小程序demo:实现movecss效果
微信小程序demo:新闻头条
微信小程序demo:滴滴公交
微信小程序demo开发教程:地图定位
微信小程序demo:大好商城(新增功能天气查
微信小程序demo:吃货APP(实现上拉加载更多
方涛:微信小程序demo:智能机器人
A闪:微信小程序demo:汇率计算器
微信小程序demo:水浒传
Demo设计教程:Flex布局demo-4种必备常用
腾讯云微信小程序一站式解决方案客户端示例
微信小程序demo:五十音图(附作者感受)
微信小程序demo:电商(附简易教程)
微信小程序demo:IT-EBOOKS
微信小程序demo:英雄联盟(LOL)战绩查询
微信小程序demo:影讯
微信小程序demo:分答
微信小程序demo:ToDoList
微信小程序demo:gank.io
微信小程序demo:烩面APP
微信小程序demo:北欧风格家居设计馆
微信小程序demo:Artand
微信小程序demo:番茄时钟
微信小程序demo:基本功能实现
微信小程序demo实战教程:仿UC天气预报
微信小程序demo:可以播放音乐的 Apple Mus
微信小程序demo:计时器(两个demo)
微信小程序demo:健康菜谱
微信小程序demo:扫雷(挖金子)
微信小程序demo:A岛
微信小成都demo:小推车首页展示 购物车的
微信小程序demo:1024小游戏
微信小程序 cnode社区版本
VR视频资源——微信小程序
Gank——微信小程序Demo
移动端商城——微信小程序Demo
TeamToy——微信小程序Demo
Hiapp——微信小程序Demo
商城——微信小程序Demo
计算器——微信小程序Demo
开发模板 vue init——微信小程序
github博文展示——微信小程序Demo
购物车——微信小程序Demo
抢红包——微信小程序Demo
热门文章信息流——微信小程序Demo
微票——微信小程序Demo
微信小程序demo:资讯类demo;功能实现列表
微信小程序demo:知乎日报(附:知乎日报AP
微信小程序demo:移动端商城
微信小程序demo:简易情绪音乐播放器V0.04
微信小程序demo:小姨妈
微信小程序demo导入小教程
微信小程序demo详解:今日头条
拉勾网App:微信小程序demo分享
微信小程序demo分享:豆瓣电影
微信小程序demo:搜索音乐小程序,调用酷狗
【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释
目录
说明
项目结构
关键代码
演示视频
说明
上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的。项目不算复杂但是也不算简单,这篇文章我尽我所能将整个项目结构、关键的代码全部解释一下,希望能给对本项目感兴趣的童鞋、以及那些UWP初学者一些帮助。
背景了解
【完全开源】知乎日报UWP(上篇):界面设计、官方API分析。
【完全开源】知乎日报UWP(下篇):商店APP、github源码。Windows APP良心出品。
github源码
商店APP
项目结构
项目截图
类型说明
ZhiHuDaily.UWP.Core.Controls
里面只有一个SwipeableSplitView控件,该控件继承自SplitView。该控件来自github:https://github.com/JustinXinLiu/SwipeableSplitView
ZhiHuDaily.UWP.Core.Data
支持自增式加载的集合,继承自ObservableCollection,并且实现了ISupportIncrementalLoading接口。一共4个:
CollectionsStoriesIncrementalLoadingCollection(对应收藏页面文章列表)
HomeStoriesIncrementalLoadingCollection(对应主页文章列表)
StoryCommentsIncrementalLoadingCollection(对应评论页面评论(长/短)列表)
ThemeStoriesIncrementalLoadingCollection(对应主题日报页面列表)
ZhiHuDaily.UWP.Core.Https
对Web API接口的封装,包含Web API URL、HTTP请求、JSON序列化。
ZhiHuDaily.UWP.Core.Models
用到的所有实体类。注意每个实体类并没有对应到返回的Json数据体(因为返回的Json中很多字段都没有使用到)。
ZhiHuDaily.UWP.Core.Share
微信分享相关的代码。以后新增的其他分享(如QQ分享、微博分享)的代码都可以放在这里。
ZhiHuDaily.UWP.Core.Tools
工具类。网络类型管理类、文件管理类、Dispatcher管理类(解决非UI线程更新数据源引起的bug)。
ZhiHuDaily.UWP.Core.ViewModels
用到的所有ViewModel。基本每个页面对应一个ViewModel。命名规则跟Xaml页面一致(将Page改为ViewModel)。
ZhiHuDaily.UWP.Mobile
所有的Page页面。
UI页面
包含以下(按项目结构从上到下):
CollectionPage.Xaml
收藏页面,使用到了ListView控件、自增式集合
EditorsPage.Xaml
主编列表页面,使用到了ListView控件
HomePage.Xaml
主页,使用到了ListView、FlipView控件,自增式集合
RecommendersPage.Xaml
推荐者列表页面,使用到了ListView控件
SettingPage.Xaml
设置页面,使用到的都是普通控件
SplashPage.Xaml
启动页面,使用到的都是普通控件
StoryCommentPage.Xaml
文章评论页面,使用到了Pivot控件、ListView控件,自增式集合
StoryPage.Xaml
文章内容页面,使用到了WebView控件,自己格式化HTML
ThemePage.Xaml
主题日报页面,使用到了ListView控件,自增式集合
关键技术
粗略的总结一下,大概用到了以下技术:
Data Binding。这个必须会,wpf、uwp开发都要用到;
页面导航。Frame.Navigate()、Frame.GoBack()等等,导航时传参;
页面缓存。NavigationCacheMode枚举值;
HttpClient类型的使用。主要是get请求;
Json格式化。在.NET中很方便,using Windows.Data.Json;
缓存处理。我做的很粗糙,大概就是将不变的内容下载下来后存成json格式文本,下载直接使用,包括图片也是,并没有将url直接赋值给Image.Source属性;
自增式加载。这个也是重点,大概就是要实现ISupportIncrementalLoading这个接口,具体的做法参考源代码;
依赖属性注册。有的控件并没有某个属性,导致我们不能使用Data Binding(数据绑定),这时候就需要给控件注册一个属性;
MVVM模式。这个不用说,不过我项目中并没有严格按照这个来;
WebView控件的使用。WebView很强大,参照我之前的一篇博客:WebView做聊天框;
微信分享。参考微信官方文档即可,怎样唤醒APP,参考这篇博客:APP之间的数据交互。
其它没什么。至于页面Xaml的编写,这个要熟,多写写,就能控制好格式,就像你写html/css一样。
演示视频
上一篇博客中有一个视频,但是不清楚,后来录了一个稍微清楚的:
开源有益,多谢点赞!
作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: UWP
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5099407.html,如需转载请自行联系原作者
【完全开源】知乎日报UWP版:增加Live磁贴、Badge、以及Toast通知
目录
说明
实现方法
APP生命期
后台任务
说明
之前网上有人建议增加磁贴(tile)、徽章(badge)功能。利用周末的时间,将这两个功能添加上去了。如果将磁贴固定到开始屏幕,磁贴就会循环播放首页5条“头条文章”所包含的的图片及标题,并且会显示还未阅读的条数(badge)。另外,当用户点亮屏幕,后台任务自动执行刷新首页数据,如果有新的“头条文章”,便会向用户发送Toast通知。下面是效果图:
背景了解
【完全开源】知乎日报UWP(上篇):界面设计、官方API分析。
【完全开源】知乎日报UWP(下篇):商店APP、github源码。Windows APP良心出品。
github源码
商店APP(写这篇文章的时候,最新版还没有审核完毕)
注:点击通知,只能唤醒APP主界面,并不能跳转到指定页面(该功能后期完善)。
实现方法
实现方法其实很简单,主要用到了“后台任务”(后面会讲到),当用户点亮屏幕时,会触发后台任务,后台任务刷新数据,更新磁贴、badge以及看情况是否发送通知:
点亮屏幕(可以设置成每隔30分钟、1小时);
请求数据;
更新磁贴。将头条文章的图片、标题update到tile中(注意这里是指定tile更新计划:ScheduledTileNotification);
更新badge。如果头条文章有未阅读的,则将未阅读条数更新到Badge;
显示Toast通知。如果有未阅读的文章并且还未曾向用户提醒,那么发出Toast通知。
具体实现:
1.指定tile更新计划:
2.更新badge:
3.显示toast通知:
用到的库:
NotificationsExtensions
主要用来操作显示tile、badge以及toast的xml,如果不用它的话,那么我们需要使用XmlDocument来手动构建xml(很麻烦),使用NotificationsExtensions的话,写代码时带智能提示,比如提示你使用到的tile模板需要两个text、一个image等等。
APP生命期
其实这块本来想单独写一篇文章的,只是光前面的内容感觉凑不齐一篇文章。
移动设备有很多资源限制,比如内存、存储、电量等,它不同于传统PC等设备,可以24小时插上交流电源,日夜工作不关机、不关屏幕,移动设备显然做不到这样。既然它存在短板,那么设备中运行的软件也必须做出让步(妥协)。怎样妥协呢?就是让你的APP代码大部分时间不运行。是的,没错,你手机APP的代码运行时间只占一小部分。
传统桌面软件运行状态:
APP运行状态:
如上图所示,APP的状态有三个。只有当APP界面处于手机屏幕最前端时,它才处于Runing状态,其余时间要么是Suspended(或即将进入Suspended)状态、要么就是没运行(Not Runing)。APP运行机制只有设置成这样才会避免移动设备的短板,因为它只要不运行就能够相对性地节约资源啊。
那么现在有一个问题,男刀系统中真的同一时间只能运行一个APP吗?如果是这样,那么大部分APP怎样完成一些实时功能呢?比如怎样接收短信、怎样接收QQ消息?不可能让QQ APP一直处于手机屏幕最前端吧?万一屏幕关闭了呢?为了解决这个问题,Windows 10(Mobile)中引入了“后台任务”的概念,即使APP没有运行(not running或者suspended),后台任务还是可以运行的,也就是说它的运行不受APP运行状态的影响。
后台任务
什么是后台任务?说白了,后台任务就是一个被系统回调的代码块,当系统满足某个条件时自动调用,而这完全不受APP本身运行状态的影响(哪怕APP都没有启动过)。
有了后台任务,我们就能开发出具备实时功能的APP了,首先向系统注册一个后台任务,给定后台任务执行的条件,这样就OK了。下次不管APP本身状态如何,一旦条件满足(比如收到QQ消息),后台任务立即执行。
(请忽略图中手机)
使用后台任务步骤:
检查系统中是否已存在该后台任务,若否;
创建后台任务;
指定后台任务入口;
指定后台任务触发器(回调的条件);
向系统注册。
之后就OK了。需要注意的是,注册前必须检查是否已经存在、后台任务的定义(入口)必须放在一个单独的Windows Runtime Component项目中。
后台任务和APP本身可以被看做是两个相互独立的Process,所以他们之间的数据交互最好通过永久性存储介质(比如文件)来传递,具体内容这篇文章不讲了。关于后台任务的内容可以看MSDN。后面如果有计划再细说。
特殊提示:
在Windows 10开发中,我们要充分利用Tile(磁贴)、Badge(徽章)以及Toast 通知,这些东西是诱导用户打开APP查看信息的主要方式。因为一个APP可能被用户遗忘了从来不会处于手机屏幕的最前端,我们只能通过后台任务接收一些推送信息、实现一些实时功能,然后再通过tile、badge以及toast的方式诱导用户打开app。
开源有益,多谢点赞!
作者:周见智
出处:http://www.cnblogs.com/xiaozhi_5638/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
分类: UWP
本文转自周见智博客博客园博客,原文链接:http://www.cnblogs.com/xiaozhi_5638/p/5120575.html,如需转载请自行联系原作者
微信小程序(应用号)资源汇总整理(转)
微信小应用资源汇总整理
开源项目
WeApp - 微信小程序版的微信
wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list
wechat-weapp-gank - 微信小程序版Gank客户端
wechat-dribbble - 微信小程序-Dribbble
wechatApp-demo - 微信小程序 DEMO
weapp-ide-crack - 微信小应用资源破解
API - API 文档
weapp-quick - 微信小应用示例代码
weapp-gold - 掘金主页 微信小应用示例
weapp-douban - 豆瓣电影 微信小程序
wechat-app-zhihudaily - 微信小程序版的知乎日报
SmallApp - 小 Demo,可参考
微信小程序开发 DEMO - 地图定位
TCP/IP 长连接服务,支持微信小程序 Websocket
微信小程序-v2ex - 微信小程序版的v2ex
微信小程序 - 公众号热门文章信息流
teamtoy-mina-demo - 一个调用 TeamToy API 的微信小程序 Demo
weapp-snippet-for-sublime-text-2-3 - sublime text 2&3 微信小程序 snippet
wxapp-cli - 微信小程序的脚手架
wxapp-todolist - 微信小程序之练手小玩意儿——Todo List
wxapp-2048 - 微信小程序之2048小游戏
文档
官方文档
简易教程
设计指南
开发者工具文档
API 文档
视图组件文档
常见问题
微信 UI/WEB 设计规范标注
教程
微信小程序开发文档
微信公众平台 API 文档 - GitHub
微信小程序怎么开发?玩物志用一个上午上线了电商应用 | 爱范儿
首个微信小程序开发教程!
抢先看:微信官方发布的微信应用号(小程序)设计规范
开发微信小程序入门前
微信小程序开发教程!
微信小程序开发环境搭建
全球首个微信应用号开发教程!通宵吐血赶稿,每日更新!
微信小程序「官方示例代码」浅析【上】
微信小程序「官方示例代码」浅析【下】
IDE常用快捷键——微信小程序
微信小程序开发:MINA
知乎讨论
如何评价 9 月 21 日开始内测的「微信小程序」?
如何看待微信将推应用号?
微信小程序(应用号)价值是什么?
开始内测的「微信公众平台 · 小程序」可能有哪些应用场景?
微信小程序(应用号)来了,对创业者来说到底是不是好机会?
微信小程序的出现会给前端开发带来什么?
微信应用号是否真能颠覆APP?
在微信应用号(微信小程序)开发什么什么应用爆发概率大?
如何获得「微信·小程序」的内测资格?
微信“小程序”真的来了!移动端会炸吗?Native开发何去何从?
微信的小程序会导致安卓和ios开发失业吗?
微信小程序(应用号)是如何通过苹果审核的?
做微信小程序的开发者,需要掌握哪些编程技能?
媒体报道
关于微信小程序(应用号),我能透露的几个细节
微信应用号来了,程序猿要涨工资了!
微信推出小程序应用号,移动互联网第二春会来吗?
一篇文章读懂微信小程序(应用号)是什么,是否值得投入进来做?
你的产品适不适合做微信小程序?你需要这篇产品逻辑分析
微信应用号正式公开,一个开放的微信已经上路?
一文读懂微信小程序(应用号)是什么,创业者是否值得投入进来做?
一张图看懂微信“小程序”
关于微信小程序,我联想到的几点
你想做个怎样的微信小程序?
微信小程序动了谁的蛋糕,又会把蛋糕分给谁?
文章
从程序员的角度分析微信小程序
微信小程序,一个有局限的类似 React Native 轮子!
关于微信小程序(应用号)的底层逻辑分析和拥抱建议
微信小程序常见问题汇总 微信小程序有什么功能 如何申请?
关于微信小程序(应用号)的全部看法
微信应用号相关资料集合
封闭一周开发微信应用号(小程序)
微信应用号「小程序」最全的Q&A列表
为什么要发布微信应用号
微信小程序,仅仅是 Web App 么?
规范抢先看!微信小程序的官方设计指南和建议
其他
公众平台小程序文档和工具http://dwz.cn/4dH0ga
WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。https://weui.io/?from=singlemessage&isappinstalled=0
开发微信小程序入门前http://lattecake.com/post/20098
微信小程序资源汇总整理http://dwz.cn/4dH6ew
全球首个微信应用号开发教程!通宵吐血赶稿。http://dwz.cn/4dH5rd
简易教程做的页面,让更多人看到小程序后台。http://wx.chiki.org/?from=singlemessage&isappinstalled=0
微信小程序内测版- 开发工具与文档http://yaosimin.com/477.html?from=singlemessage&isappinstalled=0
知友陈宇强的回答http://dwz.cn/4dH7ze
微信小程序设计规范(优化版)抢先看了!http://dwz.cn/4dH8wb
微信小程序,制作工具解析http://dwz.cn/4dH9gn
前端开发学习资源教程http://dwz.cn/4dH9Ry
微信小程序视频教程链接:https://pan.baidu.com/s/1o8cuiG6 密码: v1vt
为什么我们需要一个兼容「微信小程序」的Web框架?(内含三个超链接)http://dwz.cn/4ekUaS
官方教程http://dwz.cn/4eA0X8
开发资源汇总http://dwz.cn/4eNQhO
微信小程序前端学习资源教程http://dwz.cn/4f0VZf
微信移动UI设计规范http://gold.xitu.io/entry/57e9cbc5a0bb9f0058560585?from=timeline&isappinstalled=0
集体学习第一课(1,2,3,4节内容)http://dwz.cn/4ekX7c
本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/6680793.html,如需转载请自行联系原作者
微信小程序(应用号)资源汇总整理
微信小应用资源汇总整理
开源项目
WeApp - 微信小程序版的微信
wechat-weapp-redux-todos - 微信小程序集成Redux实现的Todo list
wechat-weapp-gank - 微信小程序版Gank客户端
wechat-dribbble - 微信小程序-Dribbble
wechatApp-demo - 微信小程序 DEMO
weapp-ide-crack - 微信小应用资源破解
API - API 文档
weapp-quick - 微信小应用示例代码
weapp-gold - 掘金主页 微信小应用示例
weapp-douban - 豆瓣电影 微信小程序
wechat-app-zhihudaily - 微信小程序版的知乎日报
SmallApp - 小 Demo,可参考
微信小程序开发 DEMO - 地图定位
TCP/IP 长连接服务,支持微信小程序 Websocket
微信小程序-v2ex - 微信小程序版的v2ex
微信小程序 - 公众号热门文章信息流
teamtoy-mina-demo - 一个调用 TeamToy API 的微信小程序 Demo
weapp-snippet-for-sublime-text-2-3 - sublime text 2&3 微信小程序 snippet
wxapp-cli - 微信小程序的脚手架
wxapp-todolist - 微信小程序之练手小玩意儿——Todo List
wxapp-2048 - 微信小程序之2048小游戏
文档
官方文档
简易教程
设计指南
开发者工具文档
API 文档
视图组件文档
常见问题
微信 UI/WEB 设计规范标注
教程
微信小程序开发文档
微信公众平台 API 文档 - GitHub
微信小程序怎么开发?玩物志用一个上午上线了电商应用 | 爱范儿
首个微信小程序开发教程!
抢先看:微信官方发布的微信应用号(小程序)设计规范
开发微信小程序入门前
微信小程序开发教程!
微信小程序开发环境搭建
全球首个微信应用号开发教程!通宵吐血赶稿,每日更新!
微信小程序「官方示例代码」浅析【上】
微信小程序「官方示例代码」浅析【下】
IDE常用快捷键——微信小程序
微信小程序开发:MINA
知乎讨论
如何评价 9 月 21 日开始内测的「微信小程序」?
如何看待微信将推应用号?
微信小程序(应用号)价值是什么?
开始内测的「微信公众平台 · 小程序」可能有哪些应用场景?
微信小程序(应用号)来了,对创业者来说到底是不是好机会?
微信小程序的出现会给前端开发带来什么?
微信应用号是否真能颠覆APP?
在微信应用号(微信小程序)开发什么什么应用爆发概率大?
如何获得「微信·小程序」的内测资格?
微信“小程序”真的来了!移动端会炸吗?Native开发何去何从?
微信的小程序会导致安卓和ios开发失业吗?
微信小程序(应用号)是如何通过苹果审核的?
做微信小程序的开发者,需要掌握哪些编程技能?
媒体报道
关于微信小程序(应用号),我能透露的几个细节
微信应用号来了,程序猿要涨工资了!
微信推出小程序应用号,移动互联网第二春会来吗?
一篇文章读懂微信小程序(应用号)是什么,是否值得投入进来做?
你的产品适不适合做微信小程序?你需要这篇产品逻辑分析
微信应用号正式公开,一个开放的微信已经上路?
一文读懂微信小程序(应用号)是什么,创业者是否值得投入进来做?
一张图看懂微信“小程序”
关于微信小程序,我联想到的几点
你想做个怎样的微信小程序?
微信小程序动了谁的蛋糕,又会把蛋糕分给谁?
文章
从程序员的角度分析微信小程序
微信小程序,一个有局限的类似 React Native 轮子!
关于微信小程序(应用号)的底层逻辑分析和拥抱建议
微信小程序常见问题汇总 微信小程序有什么功能 如何申请?
关于微信小程序(应用号)的全部看法
微信应用号相关资料集合
封闭一周开发微信应用号(小程序)
微信应用号「小程序」最全的Q&A列表
为什么要发布微信应用号
微信小程序,仅仅是 Web App 么?
规范抢先看!微信小程序的官方设计指南和建议
其他
公众平台小程序文档和工具http://dwz.cn/4dH0gaWeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。https://weui.io/?from=singlemessage&isappinstalled=0开发微信小程序入门前http://lattecake.com/post/20098微信小程序资源汇总整理http://dwz.cn/4dH6ew全球首个微信应用号开发教程!通宵吐血赶稿。http://dwz.cn/4dH5rd简易教程做的页面,让更多人看到小程序后台。http://wx.chiki.org/?from=singlemessage&isappinstalled=0微信小程序内测版- 开发工具与文档http://yaosimin.com/477.html?from=singlemessage&isappinstalled=0知友陈宇强的回答http://dwz.cn/4dH7ze微信小程序设计规范(优化版)抢先看了!http://dwz.cn/4dH8wb微信小程序,制作工具解析http://dwz.cn/4dH9gn前端开发学习资源教程http://dwz.cn/4dH9Ry微信小程序视频教程链接:https://pan.baidu.com/s/1o8cuiG6 密码: v1vt为什么我们需要一个兼容「微信小程序」的Web框架?(内含三个超链接)http://dwz.cn/4ekUaS官方教程http://dwz.cn/4eA0X8开发资源汇总http://dwz.cn/4eNQhO微信小程序前端学习资源教程http://dwz.cn/4f0VZf微信移动UI设计规范http://gold.xitu.io/entry/57e9cbc5a0bb9f0058560585?from=timeline&isappinstalled=0集体学习第一课(1,2,3,4节内容)http://dwz.cn/4ekX7c