关于appgallery-connect:如何解决快应用页面滑动卡顿问题

问题景象 页面一次加载了100条数据,页面滑动呈现卡顿。 问题代码 <template> <div class="container"> <div class="nav"> <text class="nav-item">list</text> </div> <!-- List --> <list class="list" onclick="listClick" onlongpress="listLongPress" onscrollbottom="scrollbottom" id="list" scrollpage="{{scrollPage}}"> <list-item type="listItem" class="item" onclick="listItemClick" if="{{listData.length>0}}"> <div for="{{listData}}" style="flex-direction:column;"> <text class="txt">{{$item}}--{{$idx}}</text> </div> </list-item> <!-- Loading More --> <list-item type="loadMore" class="load-more" if="{{loadMore}}"> <progress type="circular"></progress> <text>More</text> </list-item> </list> </div></template><style> .container{ flex-direction: column; } .list { padding-left: 10px; padding-right: 10px; columns: 1; flex-direction: column; border-color: #FF0000; border-width: 5px; } .item { flex-direction: column; align-items: flex-start; margin-bottom: 15px; border-color: #9400D3; border-width: 5px; margin-right: 20px; background-color: #f76160; } .load-more { justify-content: center; align-items: center; height: 100px; border-color: #bbbbbb; border-bottom-width: 1px; } .btn-little { flex: 1; height: 80px; margin-left: 15px; border-radius: 5px; color: #ffffff; font-size: 30px; text-align: center; background-color: #0faeff; } .nav { padding-left: 60px; padding-right: 60px; padding-bottom: 30px; } .nav-item { flex: 1; padding-bottom: 30px; border-bottom-width: 5px; border-color: #fbf9fe; font-size: 35px; color: #666666; text-align: center; } </style><script> import prompt from '@system.prompt' export default { data: { componentName: 'list', loadMore: true, listAdd: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'], listData: [], scrollPage: false, }, onInit: function () { this.$page.setTitleBar({ text: 'list' }) for(var index = 0;index < 100;index++){ this.listData[index] = 'A'; } }, scrollbottom: function () { prompt.showToast({ message: 'The list slides to the bottom and starts loading other data.' }) // Load next page var that = this var renderData = [].concat(that.listData, that.listAdd) setTimeout(function () { that.listData = renderData }, 1000) }, // monitoring during sliding scroll: function (e) { let msg = 'scroll' + '.scrollX:' + e.scrollX + ' .scrollY:' + e.scrollY + ' .scrollState:' + e.scrollState console.info(msg) }, listItemClick: function (e) { e.stopPropagation() console.info('List Item is clicked.') prompt.showToast({ message: 'List Item is clicked.' }) }, listClick: function (e) { e.stopPropagation() console.info('List is clicked.') prompt.showToast({ message: 'List is clicked.' }) }, listLongPress: function (e) { e.stopPropagation() console.info('List is long pressed.') prompt.showToast({ message: 'List is long pressed.' }) }, }</script>问题剖析以上代码应用list、list-item来加载大规模数据,然而应用办法不当,导致list-item的视图view没有被复用。 ...

August 16, 2021 · 2 min · jiezi

关于appgallery-connect:在快应用中集成华为AGC云存储服务

目前华为AGC云存储服务曾经反对在快利用中集成了,你能够应用云存储服务存储图片、视频、音频等,集成的Demo能够参考Github。1、装置Node.js环境:1、下载Node.js安装包:https://nodejs.org/en/download/ 2、Window环境装置Node.js 3、装置好当前,零碎会弹出一个cmd框提醒你主动装置所需的插件 2、查看PATH环境变量内是否配置了NodeJS:1、我的电脑 – 右键抉择属性 – 抉择高级零碎设置 – 抉择环境变量 – 查看零碎变量 在零碎变量界面抉择Path:查看是否有装置的NodeJS门路: 2、查看NodeJS版本; 查看npm版本 3、装置快利用IDE并且配置环境1、下载并且装置快利用IDE,与快利用加载器 https://developer.huawei.com/... 2、IDE操作: 在IDE创立一个快利用我的项目: 3、点击 Npm > 启动第三方NPM库,此时IDE会主动向我的项目中增加fa-toolkit以及package.json。 4、SDK集成1、下载agconnect-services.json文件,并且放到src目录下 2、执行npm命令,增加云存储依赖项:npm install --save @agconnect/cloudstorage 3、装置依赖,点击IDE菜单“Npm > 装置依赖” 5、性能开发a) 界面设计与前置步骤1、在src/manifest.json文件中,features下增加system.media依赖,用于获取本地文件 { "name": "system.media"}2、在src/Hello/hello.ux文件中,增加登录按钮,并且增加匿名登录的相干代码: 3、点击IDE菜单“文件 > 新建页面”,页面门路为“Main”,页面文件名为“index”,增加界面布局。 能够依照下图进行UI设计。 b) 创立援用1、src/app.ux文件中,增加编译依赖配置和onCreate函数下初始化agc <script>import agconnect from "@agconnect/api"; import "@agconnect/cloudstorage"; module.exports = { onCreate() { console.info('Application onCreate'); let agConnectConfig = require('./agconnect-services.json'); agconnect.instance().configInstance(agConnectConfig); }, onDestroy() { console.info('Application onDestroy'); }, dataApp: { localeData: {} }, agc: agconnect }</script>c) 上传文件putFile为上述UI中putFile按钮绑定函数,可依据本身设计代码调整。 ...

August 13, 2021 · 2 min · jiezi

关于appgallery-connect:华为手机应用安装错误码分析汇总

华为手机利用装置错误码剖析汇总 在利用开发过程中常常会遇到利用装置失败的问题,明天就给大家剖析一下一些华为手机上次要的装置错误码,帮忙大家疾速的解决利用装置问题。 1. 该安装包有效或不残缺、该安装包与操作系统不兼容(错误码:-2) 起因剖析:三方利用上架时上传了有效安装包 解决办法:上传正确的安装包 2. 存储空间有余(错误码:-4) 起因剖析:利用装置时空间有余 解决办法:清理手机空间,能够搜寻手机管家,进入手机管家的清理减速 3. 手机上有雷同包名利用(错误码:-5) 起因剖析:华为利用新旧包名替换,手机上曾经装置新包名,旧包名apk不能装置 解决办法:批改为利用的包名为新包名 4. 更新不兼容(错误码:-7) 起因剖析:装置的利用与手机上的利用包名雷同然而签名不雷同 解决办法:批改打包的签名为上个版本的签名 5. 共享用户不兼容(错误码:-8) 起因剖析:利用为ShareUid利用,利用与曾经装置的ShareUid利用签名不统一导致装置失败。 解决办法:与已有的ShareUid利用签名保持一致 6. 共享库已失落(错误码:-9) 起因剖析:利用依赖了零碎不存在的共享库,最常见的是google map library导致装置失败 解决办法:倡议利用集成HMS以防止google map library产生的问题。 7. 利用组件的命名与已装置利用有抵触(错误码:-13) 起因剖析:利用定义的ContentProvider与手机上曾经装置的利用抵触 如何确定与什么利用抵触: 1.查看日志,找到装置失败回调 2020-12-26 09:39:06.589PackageManager/InstallResultReceivermain{1} package install callback:packageName:[com.MobileTicket],statusCode:[5],extraStatus:[INSTALL_FAILED_CONFLICTING_PROVIDER: Scanning Failed.: Can't install because provider name com.mpaas.demo.nebula.provider (in package com.MobileTicket) is already used by com.hanweb.hnzwfw.android.activity],otherPkgName:[null],storagePath:[null],resultCode:[-13] 2.adb指令拿到出问题手机上所有的ContentProvider定义,查看哪个利用跟要装置的利用抵触了。 adb shell dumpsys package providers >d:/temp/provider.txt 解决办法: 卸载手机上ContentProvider 中Provider Authorities雷同的利用以解决抵触问题 8. 利用与此设施的CPU不兼容(错误码:-113、-16) ...

August 11, 2021 · 1 min · jiezi

关于appgallery-connect:如何解决应用安装失败错误码13的问题

明天遇到一个问题,有用户反馈从华为利用市场下载一个新利用时,提醒装置失败。 关上提示信息,查看失败详情。看到具体的失败信息是Conflicting Provider,Error Code:-13。另外零碎还提醒了和产生抵触的利用名称以及举荐的解决办法。 个别提醒Provider抵触时,很大可能是ContentProvider雷同导致的。ContentProvider是Android的四大组件之一,然而平时用得比拟少。ContentProvider个别用于跨过程通信,进行过程间的数据交互和共享。这个个性决定了ContentProvider只能全局惟一,一旦有利用先在手机上注册了同名的Provider后,前面装置的利用就不能再应用雷同的名字,装置时就会出错。 查看这两个抵触的APK,果然在AndroidManifest.xml文件里看到雷同的Provider设置: 和开发者磋商之后,批改了其中一个利用的ContentProvider的信息,减少了本利用的包名信息,再装置就胜利了,问题解决。 原文链接:https://developer.huawei.com/...原作者:Mayism

August 10, 2021 · 1 min · jiezi

关于appgallery-connect:华为应用市场AGC研习社直播App个人信息安全保护审核标准解读

随着挪动互联网的疾速倒退与智能手机的全民遍及,挪动利用的数量和品种呈爆发式增长。越来越丰盛的利用在满足用户多样需要的同时,也不乏适度索取权限、违规收集个人信息、诱导下载等侵害用户权利的问题。 为踊跃贯彻落实国家颁布的App个人信息爱护相干的法律法规要求,独特爱护App用户的集体信息安全,华为利用市场AGC研习社上线“App集体信息安全爱护审核规范解读直播”课程,为开发者解读相干的法律法规要求,监管条例和华为利用市场的审核要点,帮助开发者落实App集体信息安全爱护的各项动作,独特构建平安的利用生态。 解读App个人信息爱护相干的法律法规与监管条例 直播内容将为开发者带来全面的App个人信息爱护审核政策具体解读,以当下最新监管要求为政策基线,联合常见案例解读App个人信息爱护的相干政策。直播中,华为利用市场专家们将为开发者解读App个人信息爱护的重点整治内容,包含:违规收集个人信息、违规应用个人信息、超范围收集个人信息、违规获取个人信息、定向推送行为、权限索取行为、自启动&关联启动行为、下载散发行为八个重点整治项。 https://communityfile-drcn.op...(App个人信息爱护相干的法规要求) 华为利用市场审核要点解读 同时,本次直播将联合常见的案例和场景,为开发者解读对于华为利用市场的隐衷平安的审核要点,让大家疾速把握平台对于App个人信息爱护的审核要求。 直播将于8月10号 15: 00-15: 20于华为开发者联盟视频号、华为开发者学堂、华为开发者联盟哔哩哔哩同步上线,欢送扫描以下二维码提前关注或订阅。 原文链接:https://developer.huawei.com/...原作者:AppGallery Connect

August 10, 2021 · 1 min · jiezi

关于appgallery-connect:华为商品管理系统批量更新商品时提示请至少输入一组国家码和价格

问题形容 咱们想要批量批改华为后盾配置的商品信息,依照表格要求填写后上传提醒谬误:请至多输出一组国家码和价格,所有价格不能超过2位小数,国家码请确认正确。示例:CN;1.00 查看了咱们模板中填写的Currency和Price,是严格依照表格要求填写的,没有问题。 问题起因这里分割华为技术反对(能够通过提单https://developer.huawei.com/...分割华为技术反对)沟通后发现是咱们批量批改商品的模板应用谬误。 以后华为商品管理系统批量操作有增加商品(新建)和批改商品(更新批改): 两种操作下载的模板不统一: 批量新增应用:Create products Template.xlsx 批量批改应用:Edit Products.xlsx 咱们这里应用Create products Template.xlsx模板去批量批改了,所以报错Price的格局不满足要求,应该下载Edit Products.xlsx模板。 问题解决从新下载Edit Products.xlsx模板并依照该模板要求填写信息后,问题解决。 原文链接:https://developer.huawei.com/...原作者:Mayism

August 6, 2021 · 1 min · jiezi

关于appgallery-connect:Input组件无点击效果

景象形容: input组件type为button时,设置了圆角border-radius属性后,点击该组件时没有点击成果了(背景色没有变动),删除该属性就是有点击成果的。 代码如下: <template> <div class="page-wrapper"> <input type="button" class="button" value="Animation 动画" /> </div></template><script></script> <style>.page-wrapper { flex-direction: column; justify-content: center; align-items: center;}.button { color: #20a0ff; background-color: red; padding: 10px 20px; border-radius: 40px;}</style>问题剖析:设置圆角属性后,引擎底层受限导致不能主动实现点击成果,须要本人去实现。 解决办法:设置了圆角属性后要实现按钮点击成果能够通过快利用的伪类实现。 批改后代码如下(见红色局部): <template> <div class="page-wrapper"> <input type="button" class="button" value="Animation 动画" /> </div></template><script></script> <style>.page-wrapper { flex-direction: column; justify-content: center; align-items: center;}.button { color: #20a0ff; background-color: red; padding: 10px 20px; border-radius: 40px;}.button:active{ background-color: green;}</style>欲了解更多详情,请参见: 快利用伪类: https://developer.huawei.com/... 原文链接:https://developer.huawei.com/...原作者:Mayism

August 5, 2021 · 1 min · jiezi

关于appgallery-connect:image组件动画问题

景象形容: stack组件下应用两个image组件重叠,一个image组件通过动画款式设置透明度从1-0,暗藏起来,另一张显示进去,从而来实现图片切换,前一张图片会概率性的闪现而后隐没。 问题代码如下: <template> <div class="page-wrapper"> <input type="button" class="button" onclick="onCallAnimationClick" value="Animation 动画" /> <stack style="width:400px;height:400px"> <image class="img" id="img1" src="{{imgUrl}}" oncomplete="imgcomplete"></image> <image class="img" id="img2" if="{{ximg}}" src="{{preUrl}}" oncomplete="imgcomplete2" style="{{'opacity:' + preop + ';'}}"></image> </stack> </div></template> <script>export default { data: { imgsrc: ["https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1603365312,3218205429&fm=26&gp=0.jpg", "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.aiimg.com%2Fuploads%2Fuserup%2F0909%2F2Z64022L38.jpg&refer=http%3A%2F%2Fimg.aiimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1611368024&t=879ac47e0bd97e413b5462946d9ae4ed", "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic3.16pic.com%2F00%2F01%2F11%2F16pic_111395_b.jpg&refer=http%3A%2F%2Fpic3.16pic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1611368024&t=70c702a55248113dafa6e243dc253625", "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa2.att.hudong.com%2F27%2F81%2F01200000194677136358818023076.jpg&refer=http%3A%2F%2Fa2.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1611368024&t=11199190c6ac8e3371f16d7568d40daa", "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1089874897,1268118658&fm=26&gp=0.jpg", "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa3.att.hudong.com%2F92%2F04%2F01000000000000119090475560392.jpg&refer=http%3A%2F%2Fa3.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1611368024&t=3b33c5b006bcba88a24d03cfbca1ad20", "https://ss0.baidu.com/7Po3dSag_xI4khGko9WTAnF6hhy/zhidao/pic/item/9c16fdfaaf51f3de9ba8ee1194eef01f3a2979a8.jpg", "https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fa1.att.hudong.com%2F62%2F02%2F01300542526392139955025309984.jpg&refer=http%3A%2F%2Fa1.att.hudong.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1611368024&t=6500d50b1680d27bb60fe044e90ce41b", ], imgUrl:'', preUrl:'', ximg:true, preop:0, i:0 }, onInit: function () { this.imgUrl = this.imgsrc[0] }, onCallAnimationClick() { if(this.i > 6){ this.i = 0 ; this.imgUrl = this.imgsrc[this.i] }else{ this.i++ this.imgUrl = this.imgsrc[this.i] } console.log('imgcomplete=',this.i) }, imgcomplete(){ console.log('imgcomplete 1') this.preop = 1 var options = { duration: 500, easing: 'linear', delay: 0, fill: 'forwards', iterations: 1 } var frames = [{ opacity: 1 }, { opacity: 0 }]; var animation = this.$element('img2').animate(frames, options); animation.play(); var self = this animation.onfinish = function () { console.log("imgcomplete animation onfinish"); self.ximg = false self.preop = 0 setTimeout(() => { self.ximg = true self.preUrl = self.$element("img1").attr.src }, 30); } }, imgcomplete2() { console.log('imgcomplete 2') setTimeout(() => { this.preop = 1 }, 50); },}</script> <style>.page-wrapper { flex-direction: column; justify-content: center; align-items: center;}.img{ width:100%; height:100%;}.button { color: #20a0ff; background-color: #ffffff; padding: 10px 20px; border: 1px solid #20a0ff; border-radius: 40px;}</style>问题剖析:上述代码用两个image组件实现了图片切换时淡入淡出的动画成果,次要是通过透明度实现的。第二个image的css中设置了透明度,然而imgcomplete()办法中又对该image组件做了透明度动画,透明度值从1到0,同时代码中又将css中绑定的透明度变量preop设置为1。 ...

August 3, 2021 · 2 min · jiezi

关于appgallery-connect:如何解决微信分享大图报错

景象形容如下两张图片,第一个能够进行微信分享,第二个微信分享报错“wxShareAPI.sendReq return false” // 能够微信分享的图片:https://tws.oss.cnweisou.com/... // 不能够微信分享的图片:https://tws.oss.cnweisou.com/... 问题剖析微信对分享大图有限度,下限为250kb左右,过大的图片分享会报错,因而须要对大图压缩后分享。 留神:目前的图片压缩接口仅反对对本地图片压缩,如须要压缩网络图片,倡议先保留到本地再进行压缩解决。 解决办法示例代码如下: share: function () {    image.compressImage({        uri: "/Common/2.png",  //须要压缩的图片,只反对本地图片        quality: 80,        ratio: 2,        format: "PNG",        success: function (data) {            console.log(data.uri)            share.share({                shareType: 0,                title: "我是题目",                summary: "我是摘要",                imagePath: data.uri,                targetUrl: "http://www.huawei.com",                success: function () {                    console.log("share success");                },                fail: function (data, code) {                    console.log("handling fail, code=" + code + ", data=" + data);                }            })        },        fail: function (data, code) {            console.log("handling fail, code=" + code);        }    })}快利用文档图片API接口: https://developer.huawei.com/... 第三方分享接口: https://developer.huawei.com/... 原文链接:https://developer.huawei.com/...原作者:Mayism

August 2, 2021 · 1 min · jiezi

关于appgallery-connect:如何解决快应用堆栈溢出问题

景象形容已知将通过 $element('id') 获取到内容,赋值给成员变量,可能会引发堆栈溢出(RangeError: Maximum call stack size exceeded),从而导致程序解体;同时,页面 DOM 存在成员变量(如 A )的援用,当该变量 A 发生变化时,即会引发堆栈溢出报错问题,示例代码如下: <template> <div id="content"> <input type="button" @click="onTestClick" value="会引发堆栈溢出"/> <text>{{ stateText }}</text> </div></template><script> export default { private: { mContentNode: null, stateText: 'init state' }, onReady() { /* 如将 $element('id')获取到内容,赋值给成员变量,则有可能引发堆栈溢出 */ this.mContentNode = this.$element('content') }, onTestClick() { /* 页面 DOM 存在成员变量的援用,当发生变化时,即是引发如上所述的一种必现形式 */ this.stateText = 'new state' } }</script>这是因为赋值为 vm 属性,会触发大规模的数据驱动变动,导致外部出现异常循环,从而引发堆栈溢出报错。 解决办法只有不将 $element('id') 获取到内容,赋值给成员变量,即可躲避堆栈溢出问题;能够将其赋值给局部变量,或页面全局变量,示例代码如下: <script> let $gContentNode = null export default { private: { stateText: 'init state' }, onReady() { /* 如将 $element('id')获取到内容,赋值给局部变量,或页面全局变量,则可躲避堆栈溢出问题 */ const cContentNode = this.$element('content') $gContentNode = this.$element('content') }, onTestClick() { this.stateText = 'new state' } }</script>原文链接:https://developer.huawei.com/...原作者:Mayism ...

July 30, 2021 · 1 min · jiezi

关于appgallery-connect:教你如何实现长按图片保存到相册

场景形容微信小程序中,存在一个很不便的性能,即长按图片能够保留到手机相册,目前华为快利用没有间接的接口能够实现,如下介绍如何通过事件触发来实现该性能。 实现思路快利用组件均反对通用事件longpress(长按),于是思考用image组件渲染图片,而后在image组件上实现longpress事件,触发图片保留到手机相册的性能。 解决办法代码如下: <template> <div class="doc-page"> <div class="page-title-wrap"> <text class="page-title">{{componentName}}</text> </div> <div class="item-container"> <text class="item-title">Remote image:https://tse1-mm.cn.bing.net/th/id/OIP.QFyNrABM6FhaY_0TCuUZqgHaFj?pid=Api&rs=1</text> <div class="item-content"> <image src="https://tse1-mm.cn.bing.net/th/id/OIP.QFyNrABM6FhaY_0TCuUZqgHaFj?pid=Api&rs=1" id="image" style="object-fit:cover" onlongpress="onImageLongpress"></image> </div> </div> </div></template><style> .doc-page { flex: 1; flex-direction: column; } .item-container { margin-top: 40px; margin-bottom: 40px; flex-direction: column; } .item-title { padding-left: 30px; padding-bottom: 20px; color: #aaaaaa; } .item-content { height: 200px; justify-content: center; } #image { width: 240px; height: 160px; object-fit: contain; }</style><script>import prompt from'@system.prompt'import media from '@system.media'export default{ private: { componentName:"长按如下图片保留", inputImageURL: 'https: //tse1-mm.cn.bing.net/th/id/OIP.QFyNrABM6FhaY_0TCuUZqgHaFj?pid=Api&rs=1' }, onInit(){ this.$page.setTitleBar({text: '长按图片保留示例'}); }, onImageLongpress(){ var that=this; prompt.showDialog({ message: '长按是否保留图片', buttons: [{ text: '确定', color: '#33dd44' }, { text: '勾销', color: '#33dd44' }], success: function(data){ console.log("handling callback",data); if(data.index===0) { that.$element("image").toTempFilePath({ fileType: 'jpg', quality: 1.0, success: function (ret) { console.log('toTempFilePath success:tempFilePath=' + ret.tempFilePath) media.saveToPhotosAlbum ({ uri: ret.tempFilePath, success:function(data) { console.log("save picture success"); }, fail: function(data, code) { console.log("handling fail, code=" + code); } }) }, fail: function (msg, code) { console.log('toTempFilePath failed:code=' + code + '; msg=' + msg); }, complete: function (ret) { console.log('toTempFilePath complete'); } }) } }, cancel: function(){ console.log("cancel"); } }) }}</script>更多参考 ...

July 29, 2021 · 1 min · jiezi

关于appgallery-connect:map组件如何展示marker的callout气泡

场景形容marker 能够通过点击或者常显的形式显示一个文本为用来形容和对应 marker 相干的信息。 实现思路如下示例展现了在对应的 marker 上展现常显文本气泡。 因为文本气泡是无奈自定义宽高的,即气泡依据文本内容自适应宽高,那么也就阐明textAlign属性,只有文本内容中蕴含换行符("\n")的时候,才会有直观的可视成果。 解决办法代码如下: <template> <div> <map style="width:{{width}}; height:{{height}}" scale="{{scale}}" markers="{{markers}}" > </map> </div></template><script> const COORDTYPE = 'wgs84' const MARKER_PATH = '/Common/marker.png' const BEI_JING_WGS = { latitude: 39.9073728469, longitude: 116.3913445961, coordType: COORDTYPE } export default { private: { scale: 17, markers: [ { width: '100%', height: '50%', latitude: BEI_JING_WGS.latitude, longitude: BEI_JING_WGS.longitude, coordType: BEI_JING_WGS.coordType, iconPath: MARKER_PATH, width: '100px', callout: { content: '这里是\n北京', padding: '20px 5px 20px 5px', borderRadius: '20px', textAlign: 'left', display: 'always' } } ] } }</script>更多参考Map组件: ...

July 28, 2021 · 1 min · jiezi

关于appgallery-connect:如何测试重签名的应用功能是否正常

置信很多开发者应用过华为AGC的利用签名服务,利用签名服务次要性能就是给利用重签名,并且将利用的签名密钥保留在云端的加密机中,私密性好。即便失落了密钥,更新版本时也不必放心,因为云端曾经保留好了,安全可靠,十分不便。 次要有两种形式能够抉择:一种是间接由华为AGC生成新的私钥对利用进行签名,这种形式生成的签名只在华为平台保存,任何人无奈获取到,实用于首次在华为上架的利用。另一种是由开发者本人上传签名证书,华为AGC应用开发者上传的证书对利用进行签名,最终利用签名齐全取决于开发者上传的签名证书,AGC起到一个保存的作用,实用于在多个渠道上架同时心愿各个渠道签名保持一致的利用。 置信很多开发者就有疑难了,应用利用签名服务后的利用怎么测试呢?特地是抉择华为零碎重签名的形式,只有华为有签名密钥,任何人无奈获取,怎么保障利用在上架审核的时候性能是失常的呢?当然有办法了,能够应用AGC的另一个服务:开放式测试(具体的介绍请戳链接),抉择应用利用签名服务后,能够先提前公布一个开放式版本,无需审核疾速上架,这样就能够间接在利用市场下载重签名后的软件包了,测试没有问题间接点击降级就就能够公布正式版本了。 是不是很不便,赶快来应用吧! 附录 利用签名文档: https://developer.huawei.com/... 开放式测试文档: https://developer.huawei.com/... 原文链接:https://developer.huawei.com/...原作者:Mayism

July 26, 2021 · 1 min · jiezi

关于appgallery-connect:页面生命周期onShow没有触发

景象形容: 通过router.push接口跳转到快利用的B页面,当B页面只是援用一个自定义组件XX的时候,B页面的onShow生命周期无奈触发。如下图所示: 代码如下: B页面代码: <import name="listone" src="./aa.ux"></import><template> <!-- template里只能有一个根节点 --><listone></listone></template><script> import prompt from '@system.prompt' export default { private: { }, onInit: function () { }, onShow() { console.log('我显示了我显示了我显示了我显示了'); prompt.showToast({ message: '我显示了我显示了我显示了我显示了' }) }, //无奈触发 }</script> <style> .demo-page { flex-direction: column; justify-content: center; align-items: center; } .title { font-size: 40px; text-align: center; }</style>自定义组件aa.ux: <template> <div class="container"> <text>天气不错啊</text> <text>天气不错啊</text> <text>天气不错啊</text> <text>天气不错啊</text> </div></template><style> .container { flex-direction: column; justify-content: center;align-items: center;background-color: #00fa9a; }</style><script> module.exports = { data: { }, onInit() { }, }</script>问题剖析:快利用引擎框架决定了自定义组件作为B页面的根节点时,B页面的onShow生命周期是无奈触发的,然而子组件本身的onShow能够触发。解决方案:在B页面的子组件里面加个div组件作为根节点,而不是把自定义组件作为根节点,这样B页面的onShow生命周期就能够触发了。 ...

July 23, 2021 · 1 min · jiezi

关于appgallery-connect:快应用如何避免读取undefined变量的属性导致报错

景象形容这是 JS 开发中常见的谬误。对一个值为 null 或 undefined 的变量取属性就会报错。例如: <!-- a = {}; --> <text>{{ a.b.c }}</text><!-- Error: Cannot read property 'c' of undefined -->解决办法1、&& 办法,通过逻辑运算的执行程序来躲避谬误。代码如下: app.ux代码如下:<text>{{ a && a.b && a.b.c }}</text> 2、 在 ViewModel 上减少函数办法 举荐计划 2,在 ViewModel 上建设一个 checkEmpty 函数。示例代码如下: export default { checkEmpty(...args) { let ret if (args.length > 0) { ret = args.shift() let tmp while (ret && args.length > 0) { tmp = args.shift() ret = ret[tmp] } } return ret || false }}这样,就能够不便的调用了。 ...

July 21, 2021 · 1 min · jiezi

关于appgallery-connect:快应用如何避免JSONparse解析出错

景象形容代码执行 fetch 申请,申请返回的数据默认是 JSON 化的字符串了,开发者应用 JSON 对象解析,这是失常逻辑; 然而一旦遇到服务器端权限校验失败等问题时,会返回相似 503 的 HTML 页面,此时 JSON 解析必定就会失败。 解决办法 在每个JSON.parse() 的代码执行处进行 try-catch 突围,解决出错状况在 app.ux 中提前代理 JSON.parse(),应用 try-catch 突围,待异样呈现时埋点数据,或者返回默认失常数据代替。举荐计划2,示例代码如下: export function parseProxy () { const rawParse = JSON.parse JSON.parse = function (str, defaults) { try { return rawParse(str) } catch (err) { console.error(`JSON解析失败:${str}, ${err.stack}`) return defaults } }}原文链接:https://developer.huawei.com/... 原作者:Mayism

July 19, 2021 · 1 min · jiezi

关于appgallery-connect:华为商品管理系统批量更新商品时提示请至少输入一组国家码和价格

问题形容 咱们想要批量批改华为后盾配置的商品信息,依照表格要求填写后上传提醒谬误:请至多输出一组国家码和价格,所有价格不能超过2位小数,国家码请确认正确。示例:CN;1.00 查看了咱们模板中填写的Currency和Price,是严格依照表格要求填写的,没有问题。 问题起因 这里分割华为技术反对(能够通过提单https://developer.huawei.com/...分割华为技术反对)沟通后发现是咱们批量批改商品的模板应用谬误。 以后华为商品管理系统批量操作有增加商品(新建)和批改商品(更新批改): 两种操作下载的模板不统一: 批量新增应用:Create products Template.xlsx 批量批改应用:Edit Products.xlsx 咱们这里应用Create products Template.xlsx模板去批量批改了,所以报错Price的格局不满足要求,应该下载Edit Products.xlsx模板。 问题解决从新下载Edit Products.xlsx模板并依照该模板要求填写信息后,问题解决。 原文链接:https://developer.huawei.com/...原作者:Mayism

July 15, 2021 · 1 min · jiezi

关于appgallery-connect:华为AGC提包检测报告检测异常

问题形容 提审时,在华为AGC后盾上传了包后自检结果显示:检测异样。界面提醒如下: 问题起因分割华为技术反对(能够提单https://developer.huawei.com/...分割华为技术反对)沟通后,起因是咱们利用包打包时做了二次加固导致的,二次加固会导致混同规定等变动,华为AGC零碎会检测异样。 问题解决应用非加固版本从新提交,查看后果失常。问题解决。 原文链接:https://developer.huawei.com/...原作者:Mayism

July 13, 2021 · 1 min · jiezi

关于appgallery-connect:Unity上使用华为AGC服务Demo常见操作及问题

首先,提供个在Unity中集成华为服务的Demo下载链接,能够先尝试接入 https://github.com/Unity-Tech... 1、应用Unity关上Demo报非法依赖谬误 Project has invaild dependenciess:com.unity.textmeshpro: connect ETIMEDOUT 172.81.232.209:443com.unity.timeline: connect ETIMEDOUT 172.81.232.209:443 此时能够疏忽该问题,点击Continue,进入我的项目。而后在我的项目外部,点击 Window - Package Management 找到须要更新的包,点击Update,更新到最新版本即可。 2、切换Android平台抉择File - Build Setting,抉择Android,点击Switch Platform,切换到Android 3、切换Android平台后,报Visual C# Compiler version谬误此时有如下谬误,能够间接疏忽,关掉该我的项目,再从新关上即可解决该问题 Microsoft (R) Visual C# Compiler version 2.9.1.65535 (9d34608e)Cpoyright(C) Microsoft Corporation. All right reserved. 4、打包运行Demo工程须要的操作在Build Setting界面,点击Player Settting,进入我的项目设置页面, 首先,配置Product Name,配置为你须要的名称 而后,在Other Setting中,配置Package Name,此名称为Android利用的包名,须要和AGC的json文件中名称保持一致。 在Publish Setting中,去勾选 Custom KeyStore.(此处仅针对AGC的9项无需签名的服务,如果波及签名,请实现生成签名的相干操作) 最初,在AGC界面下载json文件并且放到我的项目的..\Assets\Plugins\Android 门路下 5、打包时报错Dorg.gradle.jvmargs=-Xmx4096m" "assembleDebug"在Build Setting中,抉择对应的设施,点击Build and run,此时会报如下谬误, org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleDebug"stderr[Picked up JAVA_TOOLOPTIONS: Dfile.encoding=UTF-8 此问题是咱们勾销了对应的签名文件,然而在gradle文件中又应用该文件造成的。 想要解决该问题,须要关上..\Assets\Plugins\Android门路下的launcherTemplate.gradle文件,找到如下代码段,将其正文: ...

July 12, 2021 · 1 min · jiezi

关于appgallery-connect:如何测试重签名的应用功能是否正常

置信很多开发者应用过华为AGC的利用签名服务,利用签名服务次要性能就是给利用重签名,并且将利用的签名密钥保留在云端的加密机中,私密性好。即便失落了密钥,更新版本时也不必放心,因为云端曾经保留好了,安全可靠,十分不便。 次要有两种形式能够抉择:一种是间接由华为AGC生成新的私钥对利用进行签名,这种形式生成的签名只在华为平台保存,任何人无奈获取到,实用于首次在华为上架的利用。另一种是由开发者本人上传签名证书,华为AGC应用开发者上传的证书对利用进行签名,最终利用签名齐全取决于开发者上传的签名证书,AGC起到一个保存的作用,实用于在多个渠道上架同时心愿各个渠道签名保持一致的利用。 置信很多开发者就有疑难了,应用利用签名服务后的利用怎么测试呢?特地是抉择华为零碎重签名的形式,只有华为有签名密钥,任何人无奈获取,怎么保障利用在上架审核的时候性能是失常的呢?当然有办法了,能够应用AGC的另一个服务:开放式测试(具体的介绍请戳链接),抉择应用利用签名服务后,能够先提前公布一个开放式版本,无需审核疾速上架,这样就能够间接在利用市场下载重签名后的软件包了,测试没有问题间接点击降级就就能够公布正式版本了。 是不是很不便,赶快来应用吧! 附录 利用签名文档: https://developer.huawei.com/... 开放式测试文档: https://developer.huawei.com/... 原文链接:https://developer.huawei.com/...原作者:Mayism

July 8, 2021 · 1 min · jiezi

关于appgallery-connect:快应用如何实现密码明文和密文切换显示

很多利用提供了账号登录、注册性能,在输出明码时,开发者为了安全性,当用户输出明码时,个别都显示……的密文。然而,这个体验也给用户造成了不便,用户不晓得以后输出的字符是否是本人冀望的,也无奈晓得以后输出到哪个字符。针对这个问题,开发者进行了优化,在输入框旁边提供了小图标,点击可切换显示明文和密文。快利用开发也是能够实现上述性能的。 解决方案明码输入框应用input组件,input组件提供了多种type值,密文应用type类型为password,明文类型可应用text类型,type字段须要绑定动静变量。 在明文和密文切换时,须要显示设置光标地位在开端,要不切换后光标会显示在开始地位。设置光标地位能够通过setSelectionRange()办法,办法中的start和end参数都设置成以后输出的文字长度。 示例代码如下: <template> <div class="container"> <stack class="input-item"> <input class="input-text" type="{{inputtype}}" id="inputpsdID" placeholder="please enter password" onchange="showChangePrompt"></input> <image src="../Common/lock.png" class="lock" onclick="switchpassandshow"></image> </stack> </div></template> <style> .container { flex: 1; padding: 20px; flex-direction: column; align-items: center; } .input-item { margin-bottom: 80px; margin-top: 10px; margin-left: 16px; margin-right: 16px; align-items: center; justify-content: flex-end; } .lock{ width: 40px; height:40px; } .input-text { height: 80px; width: 100%; line-height: 80px; border-top-width: 1px; border-bottom-width: 1px; border-color: #999999; font-size: 30px; background-color: #ffffff; padding-right: 42px; } .input-text:focus { border-color: #f76160; }</style> <script> export default { data: { inputtype: 'password', lenth: 0 }, onInit() { this.$page.setTitleBar({ text: 'Switching between plaintext and ciphertext' }); }, showChangePrompt(e) { this.lenth = e.value.length; console.info("showChangePrompt this.lenth= " + this.lenth); }, switchpassandshow: function () { var com = this.$element('inputpsdID'); if (this.inputtype === 'password') { this.inputtype = 'text'; } else { this.inputtype = 'password'; } com.setSelectionRange({ start: this.lenth, end: this.lenth}); } }</script>上述代码实现了一个繁难的明码明文和密文切换显示性能,点击左边的锁图标,能够切换显示明文和密文。成果如下图所示: ...

July 6, 2021 · 1 min · jiezi

关于appgallery-connect:教你如何实现页面间的数据通信

场景形容某些状况下,开发者可能须要实现页面间的消息传递来获取数据,例如A页面跳转至B页面后,B页面发送音讯给A页面,A页面可能接管到。此时能够通过音讯通道的机制来实现页面间的互相通信。 实现思路页面messageChannel创立了音讯通道,并接管音讯。跳转到页面test,在页面test通过音讯通道发送音讯。页面messageChannel收到音讯后通过toast展现进去。 解决办法页面messageChannel.ux文件: <template> <div class="item-container"> <input type="button" onclick="creatChannel" value="创立音讯通道"/> <input type="button" onclick="routeChannel" value="跳转到detail页面发送音讯"/> <input type="button" onclick="cancelChannel" value="敞开音讯通道"/> </div></template><style> .item-container { margin-bottom: 50px; flex-direction: column; justify-content:center; } input{ margin-bottom: 70px; }</style><script> import prompt from '@system.prompt' import router from "@system.router" var channel; export default { data: { componentName: 'messageChannel' }, onInit: function () { this.$page.setTitleBar({text: 'messageChannel'}) }, creatChannel: function () { channel = new BroadcastChannel('channel1'); prompt.showToast({message: '创立音讯通道胜利'}); channel.onmessage = function (event) { console.log(event.data) prompt.showToast({message: '承受音讯:' + event.data}); } }, routeChannel: function () { router.push({ uri: '/Test' }); }, cancelChannel: function () { channel.close(); prompt.showToast({message: '敞开音讯通道胜利'}); } }</script>页面test.ux文件: ...

July 5, 2021 · 1 min · jiezi

关于appgallery-connect:通过Unity集成Huawei-Game-Service并获取玩家标识信息

背景形容近期,发现Unity公布了配套Huawei Game Service SDK 5.0.4.302版本的demo,试水测试一把这个版本提供的新能力,写个帖子同步给大家啦。 Demo下载地址: https://github.com/Unity-Tech... 变更阐明: 看了下,unity之前公布反对了华为Game Service SDK4.0.1.300版本的插件,这次Unity间接更新反对到Game Service SDK5.0.4.302版本 unity这次变更如下: 新增GetGamePlayer和GetGamePlayer(bool isRequirePlayerId)两个接口,以实现获取游戏玩家惟一标识。 新增SetGameTrialProcess ,防沉迷试玩能力的接口监听。 新增AccountAuthParamsHelper ,反对开发者获取华为帐号更多的信息,比方openId,unionId,email之类信息。 Player对象新增了OpenId, UnionId, AccessToken 和 OpenIdSign字段。 减少AppPlayerInfo 接口去保留以后玩家信息。 如果想理解上述更具体的变更阐明,能够参考华为的game Services SDK版本更新阐明: https://developer.huawei.com/... 接口验证测试这里间接执行的Unity的demo,这里如果您不会打包运行demo,举荐参考这篇帖子: 手把手教您疾速运行Unity提供的华为游戏demo AccountAuthParamsHelper 查看C#源码,能够发现Unity以后反对通过如下形式设置申请受权: AccountAuthParamsHelper authParamsHelper = new AccountAuthParamsHelper(); authParamsHelper.SetAuthorizationCode().SetAccessToken().SetIdToken().SetUid().SetId().SetEmail().CreateParams(); 这里申请受权的有: AuthorizationCode、AccessToken、IdToken、Uid、Id、Email等受权。 这个和华为侧文档形容也基本一致,当然咱们能够依照咱们的业务需要自行设置: https://developer.huawei.com/... 操作:点击Login>login按钮 景象: 勾选email,点击批准受权,界面会提醒欢送框,相干信息获取如下: 能够发现:openId、unionId、AccessToken、AuthorizationCode、IdToken均可获取到。 然而email没有获取,这里我在受权页面也勾选了email,为什么没有获取到呢?起初分割华为技术反对,发现我登录的华为帐号自身就没有填写email地址,天然是获取不到的,大家能够到华为手机设置》华为帐号核心》帐号与平安》邮箱地址下查看,这里的确没有绑定。 大家理论绑定一个邮箱,就能够获取到了,绑定后调测如下: Uid获取不到是失常的,这个和华为侧技术支持核实,该uid目前暂未对外开放。 这里能够看到这个最新的Unity插件版本,曾经反对能够获取华为帐号的多个信息,如果游戏想要应用华为帐号的unionId或者openId等信息作为玩家惟一标识,也是能够的。 GetGamePlayer该接口映射的是华为Game Service SDK5.0.4.302版本的getGamePlayer接口,依照华为官网形容,该接口获取的player对象只有displayName、openId、unionId、accessToken有值。这里我自测了下。 操作:点击Player>getGamePlayer按钮 景象: 能够看到,这个和华为侧的文档形容要求统一,返回的信息中只有:displayName、openId、unionId、accessToken有值。 GetGamePlayer(bool isRequirePlayerId)该接口映射的是华为Game Service SDK5.0.4.302版本的getGamePlayer(boolean isRequirePlayerId)接口,反对同时获取playerId和openId ...

July 2, 2021 · 1 min · jiezi

关于appgallery-connect:华为应用内支付报错60002iap-not-activated无法支付拉不起支付界面

问题形容: 测试利用内领取,无奈拉起领取界面,看日志报错如下: 咱们在文档错误码中查到该错示意领取服务开关没有关上,查看后还是不能领取。 问题剖析: 1、 确认利用的领取服务开关是否曾经关上,领取服务参数是否曾经配置,如图: 2、 Android Studio集成SDK的:从新下载agconnect-services.json文件(下载门路参考下图),并放在利用工程根目录下: Eclipse下载接入SDK的:查看manifest外面配置的appid、cpid是否正确。 配置格局如下: <meta-data android:name="com.huawei.hms.client.appid" <!-- value的值“xxx”用理论申请的利用ID替换,来源于利用详情。- -> android:value="appid=xxx"> </meta-data><!-- value的值“xxx”用理论申请的开发者的领取ID替换,来源于利用的领取服务信息。--> <meta-data android:name="com.huawei.hms.client.cpid" android:value="cpid=xxx"> </meta-data>3、以上操作确认无误后,如果还是不能领取,可能是因为缓存问题,会有一个小时的延迟时间,倡议期待1小时左右再从新尝试。 原文链接:https://developer.huawei.com/...原作者:Mayism

July 1, 2021 · 1 min · jiezi

关于appgallery-connect:使用崩溃服务获取不到崩溃报告怎么办

华为AGC推出的解体服务,零代码集成,只须要增加SDK即可。有时可能集成了SDK,在AGC页面获取不到解体报告,总结了一下能够排查以下几点: 1、首先确认下端侧有没有上报 执行“adb shell setprop log.tag.AGC_LOG VERBOSE” 开启Crash SDK的调试模式,在利用解体时看是否有打印“upload success”,有打印阐明端侧曾经上报,否则须要查看集成状况。 如果端侧没有上报的话能够间接调用testit接口制作一个解体,同时增加如下代码打印crashhandler: Button btn_crash = findViewById(R.id.btn_crash); btn_crash.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { final String clzName = getTheDefaultCrashHandler(); if(isAGCCrashHandler(clzName)){ AGConnectCrash.getInstance().testIt(); } else{ Toast.makeText(MainActivity.this, "the default crash handler is " + clzName, Toast.LENGTH_SHORT).show(); } } }); private boolean isAGCCrashHandler(String clz){ if(clz.startsWith("com.huawei.agconnect.crash")) { return true; } return false; } private String getTheDefaultCrashHandler(){ Thread.UncaughtExceptionHandler defCrashHandler = Thread.getDefaultUncaughtExceptionHandler(); return defCrashHandler.getClass().getName(); }确保default crash handler 是AGC, 有可能有开发者集成了其余第三方的crash服务,导致AGC的crash 还没有初始化胜利,利用就解体了。此时能够尝试勾销其余第三方的解体服务,只集成AGC 的解体服务。如果能够那就须要查看下各个解体服务的集成是否有抵触。 ...

June 30, 2021 · 1 min · jiezi

关于appgallery-connect:快速解决崩溃服务上传原生符号文件失败

最近在应用华为AGC提供的解体服务,有一个步骤是上传原生符号文件,遇到两个问题,一个是生成原生符号文件失败,另一个是上传文件失败,总结一下,心愿其余开发者遇到相干问题能够少走弯路。 1、 生成原生符号文件 依照文档增加这个操作后始终没有在gradle-task看到agcp的工作: agcp{ debug = true appVersion = 1.0 symbolUpload = true debugSoDirectory = "D:\\Onebox\\AndroidProject\\crashdemo\\app\\build\\intermediates\\cmake" ndkDirectory = "D:\\AndroidSDK\\sdk\\ndk\\21.3.6528147" } 起初认真查看文档,发现json文件没有增加,将json文件增加到app目录下同步工程就能够了: 另外,我还发现一个问题,debugSoDirectory这个字段没有增加的话,也是不会生成agcp的task,然而文档外面没有写这个是必须的。 2、上传原生符号文件 文件生成好后,双击processReleaseSymbolUpload,报错 HTTP exception 常常是我电脑连了公司代理,断开公司网络后再次点击,胜利上传如下: 如果不能应用gradle主动上传,还能够通过符号表工具上传: 或者本地生成后在AGC页面手动上传: 欲了解详情请参见: 上传原生符号文件:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-crash-report-0000001054980565#ZH-CN_TOPIC_0000001075010784__section49946221181 原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0202460191270070938?fid=0101271690375130218原作者:Mayism

June 29, 2021 · 1 min · jiezi

关于appgallery-connect:Deeplink跳转提示应用下架

问题形容:应用快利用Deeplink格局的链接跳转线上快利用,无奈关上快利用,界面提醒如下: 问题剖析:呈现这个问题有2种状况: 1)包名不对Deeplink里快利用包名填写不对,填写的包名在华为利用市场上没有上架,快利用引擎搜寻不到此利用。 解决办法: 须要开发者批改代码,填写正确的曾经上架的快利用包名。 2)公布区域包名填写正确,然而快利用在用户所在的服务地没有公布,例如开发者公布了快利用A,在公布区域时抉择德国,xx用户的华为账号服务地设置的是英国,这个时候xx用户应用deeplink测试拉起快利用场景,会呈现此问题。 解决办法: xx用户将他的华为账号服务地切换到德国,切换门路:华为利用市场->我的->设置->国家/地区。 欲了解更多详情,请参见: 快利用Deeplink开发领导: https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickapp-develop-deeplink 原文链接:https://developer.huawei.com/consumer/cn/forum/topic/0204418579909480547?fid=18原作者:Mayism

June 26, 2021 · 1 min · jiezi

关于appgallery-connect:国际开源社区OW2成立快应用兴趣小组助推快应用生态发展

近日,总部位于欧洲的国内开源社区OW2正式成立快利用兴趣小组(英文名 Quick App Initiatives),旨在为寰球开发者提供一个快利用技术交换共享的平台。该趣味组将汇集多行业和多畛域的国内专家,一起摸索快利用技术在各个垂直畛域的利用场景,独特推动快利用技术迭代和生态倒退。 华为欧洲研究院副院长王学民学生提到,此次在欧洲开源社区OW2成立快利用兴趣小组(英文名 Quick App Initiatives),推动以快利用为代表的MiniApps规范的互通和倒退,期待越来越多开发者退出,一起发明更多服务于各行各业的翻新快利用,独特构建新型利用生态,推动新期间互联网服务的倒退。 同时,快利用兴趣小组将技术服务能力以开发领导、实际案例、参考文档、开发开源工具和代码模板等模式凋谢给开发者,吸引终端硬件厂家、内容服务提供者、学术机构等任何集体、企业或组织退出到快利用生态建设中,独特探讨快利用技术与多行业之间的翻新交融。 开源社区OW2的CEO Cedric Thomas 学生也示意:“咱们非常高兴能够与行业搭档独特发动快利用兴趣小组,期待快利用生态能够在咱们社区失去疾速倒退。” 以快利用为代表的MiniApp模式将在新期间施展着重要作用 现在,各行各业都在拥抱数字化转型趋势带来的新商机,推出翻新服务,例如医院推出在线挂号、在线问诊;航空公司反对提前选座;商家提供丰盛的在线优惠活动;游戏厂家推出随时随地能够即时开启的游戏等等。以快利用为代表的MiniApp是一种基于Web技术的新型轻量化挪动利用,具备“无需装置,即点即用,服务中转”的特点,让用户不论身处何种场景,都能够随时随地便捷获取所需的内容和服务,人造适宜此类场景。 “以快利用为代表的MiniApp模式在新期间施展着重要作用,”华为欧洲研究院副院长王学民学生提到,“用户能够在华为等挪动终端的各种场景下轻松找到和应用快利用,无需装置,一键关上,即可享受与原生利用雷同的体验和性能。快利用基于原生渲染,具备与传统App基本一致的利用体验。” 同时,快利用还具备易开发的长处,能够帮忙开发者疾速抓住新期间的新机会。欧洲钻研机构CTIC业务倒退和经营总监Pablo Coca学生谈到:“在翻新我的项目中,疾速的开发部署是决定性的因素,并且在工夫上非常紧迫。快利用能够帮忙克服这个艰难。” 快利用在中国迅速倒退,欧洲等区域利用前景广大 在中国,以快利用为代表的MiniApp已初具规模。据统计,2020年10%左右的互联网流量是来自MiniApp。快利用在网设施笼罩量超过12亿,用户留存超过70%。与去年相比,沉闷用户稳步增长37%,沉闷快利用数量稳步增长46%以上。快利用以“无需装置、即点即用”的翻新体验成为5G时代更便捷、更高效的轻量化利用抉择。 在欧洲等区域,MiniApp还处于晚期萌芽状态,具备非常广大的利用前景。基于快利用“无需装置,即点即用,服务中转”的特点,用户可便捷开启游戏、购物领劵、在线选座、预约酒店、获取公共交通及卫生服务信息等,节俭用户的手机空间和装置等待时间,让用户充沛感触到更加美妙的数字生存。 欧洲游戏公司FRVR的CEO Brian Meidell学生认为:“快利用的市场机会是微小的。”同时,欧洲游戏公司Famobi的CEO Ilker Aydin学生也示意:“消费者体验曾经产生了极大的扭转。让咱们携起手来,一起放慢快利用的内容制作,独特为市场带来新规范。” 华为踊跃凋谢技术能力,推动寰球快利用生态倒退。华为快利用IDE提供从开发、构建、调试、测试、公布等全流程的智能反对,实现跨零碎跨终端的高效开发和经营,实现一点接入,寰球全场景散发,同时,凋谢了华为帐号、利用内领取、定位、音讯告诉等华为HMS 外围能力,从产品能力、用户体验、广告变现、场景拓展、开发者反对、流量搀扶、多终端笼罩等多方面发力,继续赋能宽广开发者。 截至2021年第一季度,寰球华为快利用月活同比增长150%;寰球华为快利用数同比增长260%。将来,华为将持续携手开源社区OW2,继续推动寰球快利用在各行各业的使用,促成产业倒退,携手开发者,独特为宽广用户发明更美妙的数字生存。 对于开源社区OW2和MiniApps规范 开源社区OW2是一个独立的非营利性组织,成立于2007年,总部位于法国,致力于为企业信息系统推广行业级开源软件并培养其业务生态系统。MiniApps规范是万维网联盟(World Wide Web Consortium W3C)旗下的国际标准,由华为、阿里巴巴、百度、Google、Microsoft等公司独特参加制订,以实现多厂商设施、多操作系统的适配。 原文链接:https://developer.huawei.com/...原作者:Quick App

June 25, 2021 · 1 min · jiezi