flutter书,Flutter入门经典PDF

Flutter iOS 苹果IAP(内购)实现步骤及问题总结(全网最全)

点击 “协议、税务和银行业务”

站在用户的角度思考问题,与客户深入沟通,找到鼓楼网站设计与鼓楼网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、网站制作、企业官网、英文网站、手机端网站、网站推广、域名申请虚拟主机、企业邮箱。业务覆盖鼓楼地区。

内购用的是付费应用程序,先签署《付费应用程序协议》,同意后状态变更为“用户信息待处理”,等待审核。

状态更改完毕后,点击“开始设置税务、银行业务和联系信息”。

(1)添加银行账户,按照要求填写相关内容即可。

(2)选择报税表,并填写。所有与 Apple 有商业合作者必选都是美国,若有其他需求,可以多选。

继续填写,首先认证公司基本信息,选择所有人类型,确认无误后认证条款处打对勾

Part I 部分,继续核对公司相关信息,选填内容可不填。

Part III 部分,签署税务条约,设置利益限制条款的种类,选填内容可不填。此部分如果需要可勾选上下图勾选框,不需要可不勾选,我们这个项目没有用到part III 部分,所以没有勾选。

Part XXX 部分,确认之前填写的信息,勾选完毕后,提交

(3)填写联系信息,共5个。高级管理、财务、技术、法务、营销。只需要提供5个人的基本信息即可。

只可使用一次的产品,使用之后即失效,必须再次购买。

示例: 钓鱼 App 中的鱼食。

只需购买一次,不会过期或随着使用而减少的产品。

示例: 游戏 App 的赛道。

允许用户在固定时间段内购买动态内容的产品。除非用户选择取消,否则此类订阅会自动续期。

示例: 每月订阅提供流媒体服务的 App。

允许用户购买有时限性服务的产品。此 App 内购买项目的内容可以是静态的。此类订阅不会自动续期。

示例: 为期一年的已归档文章目录订阅。

App 内购买项目的截屏,即所售项目的示意图。例如,如果 App 内购买项目是一本图书,您可以提交图书的截屏。您也可以提交购买页的截屏。该截屏仅用于 Apple 审核,不会在 App Store 中显示。

截屏要求如下:

iOS 至少需要 640 x 920 像素

Apple tvOS 需要 1920 x 1080 像素

macOS 需要 1280 x 800 像素

App 审核图像上传后,可以替换,但无法移除。当您的 App 内购买项目处于审核中时,您无法更新截屏。

沙箱账号是不能直接在App Store进行登录的,只能在点击了购买商品之后,在弹出的登录框进行登录 。

验证是否已登录沙箱测试账号:

设置--iTunes Store与App Store,页面拉到最底部,会看到沙箱账户项会列出你已登录的沙箱测试账号!

操作方法一:打开App Store应用首页滑到最下方--选中AppleID--注销

操作方法二:设置--iTunes Store与App Store--选中AppleID--注销

checks if the client can make payments(检测App是否能支付)

getAvailablePurchases

Get all non-consumed purchases 获取未消费的商品

打印信息查询;

原因:

没有先执行getProducts,直接执行requestPurchase方法,要先拉取商品列表,再执行购买操作.

问题描述;

1.漏单必须要处理,玩家花RMB购买的东西却丢失了,是绝对不能容忍的。所谓的漏单就是玩家已经正常付费,却没有拿到该拿的道具。

解决:只要购买成功,便将购买记录(receipt等账单信息)保存下来,然后将账单信息传送给我们游戏服务器,游戏服务器获得账单后,和苹果服务器验证,账单有效的话,回馈给游戏服务器处理,游戏服务器处理后,返回给游戏客户端处理,处理完毕,将本地保存的购买记录删除。

官方文档:向苹果校验支付凭证

21000 App Store无法读取你提供的JSON数据

21002 收据数据不符合格式

21003 收据无法被验证

21004 你提供的共享密钥和账户的共享密钥不一致

21005 收据服务器当前不可用

21006 收据是有效的,但订阅服务已经过期。当收到这个信息时,解码后的收据信息也包含在返回内容中

21007 收据信息是测试用(sandbox),但却被发送到产品环境中验证 【请求sandbox校验支付凭证】

21008 收据信息是产品环境中使用,但却被发送到测试环境中验证

消耗类型: 例如:金币、道具等。

非续订订阅: non-renewable subscription 例如:VIP

您的首个 App 内购买项目必须以新的 App 版本提交。请创建您的 App 内购买项目,然后前往 App 的“App Store”页,从“App 内购买项目”中进行选择,点按“提交”。 了解更多

在上传二进制文件并提交首个 App 内购买项目以供审核后,您可以使用下表提交其他 App 内购买项目。

唐巧-iOS应用内付费(IAP)开发步骤列表

未完~待续

当使用内购购买过商品之后没有把这个交易关闭,所以再次去购买商品后就会调用以前已经购买成功的交易去购买因为已经购买过,才会有这个提示

原因:添加内购项目时,信息填写不完整,app审核图像未上传

处理方法:上传app审核图片( 合适的尺寸 ),点击提交,状态改为正在准备审核中。

这个是内购选择类型不匹配原因导致。

购买成功之后,Apple会返回以下四个数据给应用

Reference

Review the updated Paid Applications Schedule.

游客身份解决方案:即不登录也要能购买

1)服务器端做一个苹果审核机制,审核期间游客身份可以进行一切行为,一旦审核通过,修改服务端即可达到强制用户登录进行内购买的目的(这个有点。。。)

2)游客可以进行内购买,购买时以设备UUID为准,生成一个游客账号,将购买信息保存在服务器和本地,当用户登录正式账户后判断此设备是否进行过内购,有的话提示用户将游客身份购买的权益与现有账号绑定,如果绑定,游客权益则迁移到正式账户,如果不迁移,则游客身份和正是账户是两个独立账户,正式账户不享有游客身份的权益(我用的这个)

内购游客模式解决方案

iOS内购规则

uni-app怎么进行上线?

提前申请和准备要要用的证书

用HBuilderX打正式包。

1)要在manifest.json里面配置App图标和启动图片

2)App图标尺寸:png 格式图片 256*256

启动图片尺寸:png 格式图片 480762 7201242 1080*1882

3. app上架材料梳理:

一般看个人要求,在腾讯、华为、小米各个平台上线。

每个平台都要注册开发者账号,用企业信息注册,注意开发者账号公司和软著要一致,否则华为、腾讯会让你重新按软著上的公司名称注册开发者账号。小米要提供一个代理授权书。

1)共同提交的材料:

1.公司名称

2.公司营业执照、其中百度需要营业执照复印件并且在文字的地方加盖公章。

3.企业法人身份证照片(正反两面),其中百度另外要求上传手持身份证照片(正反两面)。

4.企业对公账号,其中华为和小米打钱验证,利用金额进行验证。

5.企业地址。

2) 提交应用审核资料:

1.软著,jpg,png,pdf,3种格式。

2.企业营业执照,pg,png,pdf,种格式。

3.图标,尺寸不一致。216216 jpg 512512 jpg

4.应用内截图,多截几张,最后用测试账号截图。

5.应用简介和应用描述。

9.icp备案截图。

7.如果软著公司和开发者账号不一致,需要提供代理授权书,签字盖章。

8.隐私政策网址。

上架成功后需要在各个商城自行下载。

快点进来帮帮我啊!急求~~

看这行吗?

数学家的故事——苏步青

苏步青1902年9月出生在浙江省平阳县的一个山村里。虽然家境清贫,可他父母省吃俭用,拼死拼活也要供他上学。他在读初中时,对数学并不感兴趣,觉得数学太简单,一学就懂。可量,后来的一堂数学课影响了他一生的道路。

那是苏步青上初三时,他就读浙江省六十中来了一位刚从东京留学归来的教数学课的杨老师。第一堂课杨老师没有讲数学,而是讲故事。他说:“当今世界,弱肉强食,世界列强依仗船坚炮利,都想蚕食瓜分中国。中华亡国灭种的危险迫在眉睫,振兴科学,发展实业,救亡图存,在此一举。‘天下兴亡,匹夫有责’,在座的每一位同学都有责任。”他旁征博引,讲述了数学在现代科学技术发展中的巨大作用。这堂课的最后一句话是:“为了救亡图存,必须振兴科学。数学是科学的开路先锋,为了发展科学,必须学好数学。”苏步青一生不知听过多少堂课,但这一堂课使他终身难忘。

杨老师的课深深地打动了他,给他的思想注入了新的兴奋剂。读书,不仅为了摆脱个人困境,而是要拯救中国广大的苦难民众;读书,不仅是为了个人找出路,而是为中华民族求新生。当天晚上,苏步青辗转反侧,彻夜难眠。在杨老师的影响下,苏步青的兴趣从文学转向了数学,并从此立下了“读书不忘救国,救国不忘读书”的座右铭。一迷上数学,不管是酷暑隆冬,霜晨雪夜,苏步青只知道读书、思考、解题、演算,4年中演算了上万道数学习题。现在温州一中(即当时省立十中)还珍藏着苏步青一本几何练习薄,用毛笔书写,工工整整。中学毕业时,苏步青门门功课都在90分以上。

17岁时,苏步青赴日留学,并以第一名的成绩考取东京高等工业学校,在那里他如饥似渴地学习着。为国争光的信念驱使苏步青较早地进入了数学的研究领域,在完成学业的同时,写了30多篇论文,在微分几何方面取得令人瞩目的成果,并于1931年获得理学博士学位。获得博士之前,苏步青已在日本帝国大学数学系当讲师,正当日本一个大学准备聘他去任待遇优厚的副教授时,苏步青却决定回国,回到抚育他成长的祖任教。回到浙大任教授的苏步青,生活十分艰苦。面对困境,苏步青的回答是“吃苦算得了什么,我甘心情愿,因为我选择了一条正确的道路,这是一条爱国的光明之路啊!”

这就是老一辈数学家那颗爱国的赤子之心

数学家故事·阿基米德

阿基米德(Archimedes, 287BC~212BC)出生在叙拉古的贵族家庭,父亲是位天文学家。在父亲的影响下,阿斯米德从小热爱学习,善于思考,喜欢辩论。长大后飘洋过海到埃及的山历山大里亚求学。他向当时著名的科学家欧几里德的学生柯农学习哲学、数学、天文学、物理学等知识,最后通古博今,掌握了丰富的希腊文化遗产。

回到叙拉古后,他坚持和亚历山大里亚的学者们保持联系,交流科学研究成果。他继承了欧几里德证明定理时的严谨性,但他的才智和成就却远远高于欧几里德。他把数学研究和力学、机械学紧紧地联在一起,用数学研究力学和其它实际问题。保护叙拉古战役中的机械巨手和投石机等就是最生动的一个例子,有力地证明了“知识就是力量”的真理。

在亚历山大里亚求学期间,他经常到尼罗河畔散步,在久旱不雨的季节,他看到农人吃力地一桶一桶地把水从尼罗河提上来浇地,他便创造了一种螺旋提水器,通过螺杆的旋转把水从河里取上来,省了农人很大力气。它不仅沿用到今天,而且也是当代用于水中和空中的一切螺旋推进器的原始雏形。

阿基米德在他的著作《论杠杆》(可惜失传)中详细地论述了杠杆的原理。有一次叙拉古国王对杠杆的威力表示怀疑,他要求阿基米德移动载满重物和乘客的一般新三桅船。阿基米德叫工匠在船的前后左右安装了一套设计精巧的滑车和杠杆。阿基米德叫100多人在大船前面,抓住一根绳子,他让国王牵动一根绳子,大船居然慢慢地滑到海中。群众欢呼雀跃,国王也高兴异常,当众宣布:“从现在起,我要求大家,无论阿斯米德说什么,都要相信他!”

阿基米德曾说过:给我一小块放杠杆的支点,我就能将地球挪动。假如阿基米德有个站脚的地方,他真能挪动地球吗?也许能。不过,据科学家计算,如果真有相应的条件,阿基米德使用的杠杆必须要有88×1021英里长才行!当然这在目前是做不到的。

最引人入胜,也使阿基米德最为人称道的是阿基米德从智破金冠案中发现了一个科学基本原理。

国王让金匠做了一顶新的纯金王冠。但他怀疑金匠在金冠中掺假了。可是,做好的王冠无论从重量上、外形上都看不出问题。国王把这个难题交给了阿基米德。

阿基米德日思夜想。一天,他去澡堂洗澡,当他慢慢坐进澡堂时,水从盆边溢了出来,他望着溢出来的水,突然大叫一声:“我知道了!”竟然一丝不挂地跑回家中。原来他想出办法了。

阿基米德把金王冠放进一个装满水的缸中,一些水溢出来了。他取了王冠,把水装满,再将一块同王冠一样重的金子放进水里,又有一些水溢出来。他把两次的水加以比较,发现第一次溢出的水多于第二次。于是他断定金冠中掺了银了。经过一翻试验,他算出银子的重量。当他宣布他的发现时,金匠目瞪口呆。

这次试验的意义远远大过查出金匠欺骗国王。阿基米德从中发现了一条原理:即物体在液体中减轻的重量,等于他所排出液体的重量。这条原理后人以阿基米德的名字命名。一直到现代,人们还在利用这个原理测定船舶载重量等。

公元前215年,罗马将领马塞拉斯率领大军,乘坐战舰来到了历史名城叙拉古城下,马塞拉斯以为小小的叙拉古城会不攻自破,听到罗马大军的显赫名声,城里的人还不开城投降?

然而,问答罗马军队的是一阵阵密集可怕的镖箭和石头。罗马人的小盾牌抵挡不住数不清的大大小小的石头,他们被打得丧魂落魄,争相逃命。

突然,从城墙上伸出了无数巨大的起重机式的机械巨手,它们分别抓住罗马人的战船,把船吊在半空中摇来晃去,最后甩在海边的岩石上,或是把船重重地摔在海里。船毁人亡。马塞拉斯侥幸没有受伤,但惊恐万分,完全失去了刚来时的骄傲和狂妄,变得不知所借。最后只好下令撤退,把船开到安全地带。

罗马军队死伤无数,被叙拉古人打得晕头转向。可是,敌人在哪里呢?他们连影子也找不到。

马塞拉斯最后感慨万千地对身边的士兵说:“怎么样?在这位几何学‘百手巨人’面前,我们只得放弃作战。他拿我们的战船当游戏扔着玩。在一刹那间,他向我们投射了这么多镖、箭和石块,他难道不比神话里的百手巨人还厉害吗?”

年过古稀的阿基米德是一位闻名于世的大科学家。在保卫叙拉古城时,他动用了杠杆、滑轮、曲柄、螺杆和齿轮。他不仅用人力开动那些投射镖箭和石弹的机器,而且还利用风力和水力,利用有关平衡和重心的知识、曲线的知识和远距离使用作用力的知识等。难怪马塞拉斯不费劲地就找到了自己惨败的原因。当天晚上,马塞拉斯连夜逼近城墙。他以为阿斯米德的机器无法发挥作用了。不料,阿斯米德早准备好了投石机之类的短距离器械,再次逼退了罗马军队的进攻。罗马人被惊吓得谈虎色变,一看到城墙上出现木梁或绳子,就抱头鼠窜,惊叫着跑开:“阿基米德来了。”

传说,阿基米德还曾利用抛物镜面的聚光作用,把集中的阳光照射到入侵叙拉古的罗马船上,让它们自己燃烧起来。罗马的许多船只都被烧毁了,但罗马人却找不到失火的原因。900多年后,有位科学家按史书介绍的阿基米德的方法制造了一面凹面镜,成功地点着了距离镜子45米远的木头,而且烧化了距离镜子42米远的铝。所以,许多科技史家通常都把阿基米德看成是人类利用太阳能的始祖。

马塞拉斯进攻叙拉古时屡受袭击,在无般无奈下,他带着舰队,远远离开了叙拉古附近的海面。他们采取了围而不攻的办法,断绝城内和外界的联系。3年以后,他们利用叙拉古城市居民的大意,终于在公元前212年占领了叙拉古城。马塞拉斯十分敬佩阿基米德的聪明智慧,下令不许伤害他,还派一名士兵去请他。此时阿基米德不知城门已破,还在凝视着木板上的几何图形沉思呢。当士兵的利剑指向他时,他却用身子护住木板,大叫:“不要动我的图形!”他要求把原理证明完再走,但激怒了那个鲁莽无知的士兵,他竟用利剑刺死了75岁的老科学家。马塞拉斯勃然大怒,他处死了那个士兵,抚慰阿基米德的亲属,为他开了追悼会并建了陵墓。阿基米德被后世的数学家尊称为“数学之神”,在人类有史以来最重要的三位数学家中,阿基米德占首位,另两位是牛顿和高斯。

Flutter开发性能提升之:如何避免Widget重复Build

问题描述:

在Flutter开发的过程中,当我们获取到新的数据或者数据发生变化,需要去执行setState进行页面刷新的时候,经常会出现不必要的子节点Widget也进行了build,但实际上我们是不想让它再次build,出现这些问题的典型情况是在使用FutureBuilder的时候,例如:

在上面这个示例中,如果再次调用Build方法,则会触发httpCall()的方法。

那么怎样才能避免不必要的部件构建呢?

分析:

在Flutter中,Build方法的设计方式是pure/without side effects,书面意思是无副作用的/纯粹的,简单点理解我们可以将其含义看作不会对外部的方法或者变量产生影响的。这是因为许多外部因素能够触发新的小部件的构建,例如这些情况:

但是,这也意味着Build方法可以不去触发httpCall()的方法或者不修改任何状态。

解决

回归问题,当前我们面临的问题是Build方法造成了副作用,也就是造成了无关的Build调用麻烦。

所以,只要我们使Build方法保持纯粹/无副作用,这样就算多少次调用它,也不会对其他Widget的Build方法产生影响。

在上面的示例中,我们将Widget转换为StatefulWidget,然后提取httpCall()到initState中,这样问题就解决了

另外,还可以使一个Widget能够在不强迫其子部件也构建的情况下进行重新构建。

在Widget的实例保持不变时;Flutter会有意识的不去重建子部件。这意味着我们可以缓存Widget树的某些部分,以防止不必要的重新构建。

最简单的方法是使用const修饰构造函数:

由于const的修饰,即使调用了数百次build,DecoratedBox的实例也将保持不变。

或者你可以这样使用以达到相同的结果:

在这个例子中,当StreamBuilder收到新值的通知时,即使StreamBuilder的Column进行了重构,subtree也不会进行重构。这是因为由于闭包,MyWidget的实例没有改变。

这种模式在动画中经常使用。典型的是使用AnimatedBuilder和所有的*Transition时,例如AlignTransition。

我们还可以将subtree存储到类的一个字段中,但是并不推荐你这样做,因为它会破坏Flutter的热重载。

开源精粹(二)!22个实用、有趣的开源项目

作为一名开源爱好者,发掘优秀的开源项目是一件非常有趣的事情。在第一期中,我分享了单页个人网站模板、组装式 Flutter 应用框架、PHP 客户端库、Java 诊断工具等一些实用的库和工具。本期依旧会为大家分享一些前端、后端、移动开发的相关工具,希望你能“淘”到适合自己的工具。

1.Vue-EasyTable

Vue-EasyTable 是一款基于 Vue2.x 的 table 组件,具备自适应、表头与列固定、自定义单元格样式、自定义 Loading 等功能。

2.React-Calendar

这是一款具备原生日期格式的日历组件。它不依赖 Moment.js,支持日期选择范围,涵盖了各国语言,开箱即用。

3.Matter

CSS 实现的 Material 组件合集项目,作者已将部分作品开源,效果可以在 CodePen 上查看。

4.Revery

Revery 是一款用于构建高性能、跨平台桌面应用的框架。它类似于加速版的原生 Electron,除了拥有类似 React / Redux 的库,还具备 GPU 加速渲染功能,其内置的编译器速度也相当快。

5.Web Accessibility Guide

这是一个精选了 Web 可访问性贴士、技巧和最佳实践的开源项目,你将会学习到一些改善 Web 可访问性的实用做法。

1.SOFAJRaft

SOFAJRaft 是蚂蚁金服开源的生产级 Java Raft 算法库,它基于 Raft 一致性算法的生产级高性能 Java 实现,支持 MULTI-RAFT-GROUP,适用于高负载低延迟的场景,易于使用。

2. Dragonwell

阿里开源了 OpenJDK 发行版 Dragonwell,它提供长期支持,包括性能增强和安全修复。在数据中心大规模 Java 应用部署情况下,可以大幅度提高稳定性、效率以及性能。

3.Lawoole

Lawoole 是一款基于 Laravel 和 Swoole 的高性能 PHP 框架。它兼具了 Laravel 的特点,还解决了其功能背后的性能问题。同时,你还能感受到与 Laravel 一样的编码体验。

4.AntNest

AntNest 是一个简洁、快速的异步爬虫框架。它仅有 600 行代码,基于 Python 3.6+.

5.PHP-Awesome

这个仓库汇集了 PHP 优秀的资源,供你查询和参考。

1.FlutterBoost

FlutterBoost 是闲鱼开源的新一代 Flutter-Native 混合解决方案。它能够帮你处理页面的映射和跳转,你只需要关心页面的名字和参数即可。

2.MyLayout

MyLayout 是一套 iOS 界面视图布局框架,可谓 iOS 下的界面布局利器。它集成了 iOS Autolayout、Size Classes、Android 的 5 大布局体系、HTML/CSS 的浮动定位技术以及 Flex-Box 和 Bootstrap 框架等主流的平台的界面布局功能,并提供了一套简单、完备的多屏幕尺寸适配的解决方案。

3.SegementSlide

SegementSlide 是一个 iOS UI 库,它具备完整的滑滚及切换组件,旨在解决多层 UIScrollView 嵌套滚动的问题。

1.DevHub

DevHub 是一款跨平台的 GitHub 通知管理客户端,支持 Android、 iOS、网页和桌面上使用,帮助你便捷的接收 GitHub 各类通知。

2.Reqman

Reqman 是一个帮助后端工程师进行 API 测试的工具,同时也是一个基于 Node.js 的爬虫工具。

3.FreeCodeCamp

说到 FreeCodeCamp,或许大家不会陌生,而这个项目就是他们建立的开源课程和相应的代码库。网站提供了 6 大认证课程,也涉及了全栈开发认证。如果你感兴趣,不妨了解下。

4.Gitter

Gitter 是 GitHub 小程序客户端,作者采用 Taro 框架 + Taro UI 进行开发,而小程序内数据则来自 GitHub Api V3.

5.Awesome Podcasts

这个项目收集了各类实用的播客,涵盖了主流的编程语言,希望对你提升技术水平有所帮助。

6.编程图书大全

书籍不光能在你迷茫的时候,给予你答案,还能在你提升技能的时候,给予你帮助。这个仓库收集了众多编程图书,涉及主流编程语言、人工智能、算法、Linux、大数据等。看看,有木有你需要的。

7.VS Code Netease Music

很多开发者喜欢边写代码,边听音乐,VS Code Netease Music 这个插件就能满足你在 VS Code 上听歌的愿望。它使用 Webview 实现,不依赖命令行播放器。

Star-Battle

Star-Battle 是一款使用 JavaScript ES6、Canvas 开发的飞船射击类 游戏 。来 Enjoy 吧。

注:

如需转载,烦请按下方注明出处信息,谢谢!

Flutter中文书籍推荐

我写了一本 《Flutter实战》 推荐给大家。

在线阅读地址:

更多内容请移步 《Flutter实战》 。


网站题目:flutter书,Flutter入门经典PDF
文章起源:http://csdahua.cn/article/dsgdess.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流