HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

谨记!怎么样的编程会让你进监狱?

法律科普

说起程序猿,是不是大家的第一印象都是老实、内向、高智商这一些褒义的形容词。

但往往有一些自以为有小聪明的程序猿,不管是一时冲动还是被贪念冲昏了头脑,运用自己的技术做出一些违法获利的行为,最终只是害了自己

像小编身边就有一个好友,在国内某大行的科技部工作,闲聊之间就说起该行的科技人员中就曾经出过一个人才,这位程序猿负责该行的养老金发放系统,在某一次程序变更中,他悄悄的修改了一下程序,将每一户自动发放的养老金都划用了0.01元到自己的账户上

他自以为做的神不知鬼不觉,认为仅仅0.01元并不会引起谁的注意,但是人在做天在看,没过多久就东窗事发,不过据说该行秉着家丑不可外扬的原则,只是把钱追回之后将其开除,所以并没有多少外人知道。

不过前几天,又有一个程序猿悄悄的运用技术为自己牟利,相比起他的前辈,他可没有那么好运,直接被判决了18个月的刑期

具体是怎么一回事呢?让小编带你一起看下!

这位把智慧运用在歪道上的程序猿姓李,1979年5月9日出生,汉族,硕士研究生,户籍所在地为北京市。从2018年8月起,在北京比特大陆科技有限公司担任公司软件研发部工程师一职。

其实听公司名字就知道,这家公司肯定是从事和比特币挖矿有关的相关业务,毕竟时下比特币可是最热门的话题之一。

而李某正是运用其职务之便,将公司用于安装在比特币矿机上的软件代码进行了篡改,将这些挖矿机器的最终收益账户改成了其个人账户,一共更改了59台机器。在被发现之前,一共获取了6.97个比特币,按最近的行情,大致价值美金35万+,不是一个小数目

案发后,李姓程序猿主动投案,如实讲述了整个作案过程,并且退回了获得的比特币,但是即便有自首的行为,但无法完全抵消其无视法律的犯罪行为

北京市海淀区人民检察院认为, 这个案件中被告非法控制计算机信息系统,情节严重,其行为已构成非法控制计算机信息系统罪,应予惩处。鉴于其自首及初犯,法院对其依法从轻处罚,依照《中华人民共和国刑法》第二百八十五条第二款、第六十七条第一款、第五十三条之规定,判决其非法控制计算机信息系统罪成立,判处有期徒刑一年六个月,罚金人民币二万元。

好好的猿生,就这样被毁,含辛茹苦苦读寒窗数十年,一朝贪心如今追悔莫及,想必这位李姓程序猿现在一定好后悔好后悔,不仅分文未赚,还将自己的一生赔了进去,呜呼哀哉。

天网恢恢疏而不漏,在越来越透明的当今社会,程序猿们还是要控制自己的贪念,千万别因为一时的冲昏头脑做出让自己抱憾终生的事情!

【转自公众号:程序猿DD】,声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:pufa@dcloud.io 。

原文链接

继续阅读 »

说起程序猿,是不是大家的第一印象都是老实、内向、高智商这一些褒义的形容词。

但往往有一些自以为有小聪明的程序猿,不管是一时冲动还是被贪念冲昏了头脑,运用自己的技术做出一些违法获利的行为,最终只是害了自己

像小编身边就有一个好友,在国内某大行的科技部工作,闲聊之间就说起该行的科技人员中就曾经出过一个人才,这位程序猿负责该行的养老金发放系统,在某一次程序变更中,他悄悄的修改了一下程序,将每一户自动发放的养老金都划用了0.01元到自己的账户上

他自以为做的神不知鬼不觉,认为仅仅0.01元并不会引起谁的注意,但是人在做天在看,没过多久就东窗事发,不过据说该行秉着家丑不可外扬的原则,只是把钱追回之后将其开除,所以并没有多少外人知道。

不过前几天,又有一个程序猿悄悄的运用技术为自己牟利,相比起他的前辈,他可没有那么好运,直接被判决了18个月的刑期

具体是怎么一回事呢?让小编带你一起看下!

这位把智慧运用在歪道上的程序猿姓李,1979年5月9日出生,汉族,硕士研究生,户籍所在地为北京市。从2018年8月起,在北京比特大陆科技有限公司担任公司软件研发部工程师一职。

其实听公司名字就知道,这家公司肯定是从事和比特币挖矿有关的相关业务,毕竟时下比特币可是最热门的话题之一。

而李某正是运用其职务之便,将公司用于安装在比特币矿机上的软件代码进行了篡改,将这些挖矿机器的最终收益账户改成了其个人账户,一共更改了59台机器。在被发现之前,一共获取了6.97个比特币,按最近的行情,大致价值美金35万+,不是一个小数目

案发后,李姓程序猿主动投案,如实讲述了整个作案过程,并且退回了获得的比特币,但是即便有自首的行为,但无法完全抵消其无视法律的犯罪行为

北京市海淀区人民检察院认为, 这个案件中被告非法控制计算机信息系统,情节严重,其行为已构成非法控制计算机信息系统罪,应予惩处。鉴于其自首及初犯,法院对其依法从轻处罚,依照《中华人民共和国刑法》第二百八十五条第二款、第六十七条第一款、第五十三条之规定,判决其非法控制计算机信息系统罪成立,判处有期徒刑一年六个月,罚金人民币二万元。

好好的猿生,就这样被毁,含辛茹苦苦读寒窗数十年,一朝贪心如今追悔莫及,想必这位李姓程序猿现在一定好后悔好后悔,不仅分文未赚,还将自己的一生赔了进去,呜呼哀哉。

天网恢恢疏而不漏,在越来越透明的当今社会,程序猿们还是要控制自己的贪念,千万别因为一时的冲昏头脑做出让自己抱憾终生的事情!

【转自公众号:程序猿DD】,声明:转载此文是出于传递更多信息之目的。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系,我们将及时更正、删除,谢谢。 邮箱地址:pufa@dcloud.io 。

原文链接

收起阅读 »

APP强制横竖屏切换后样式错乱

问题:从A(竖屏) => B(横屏)=> C(竖屏)=> D(竖屏),C或者D页面样式出现放大或错乱问题。
B页面代码:


        onShow() {  
            plus.screen.lockOrientation('landscape-primary');  
        },  
        onHide() {  
            plus.screen.unlockOrientation();  
            plus.screen.lockOrientation('portrait-primary');  
        },  

解决方案:A(竖屏) => B(横屏)=> X1(竖屏)=> X2(竖屏)=> C(竖屏)=> D(竖屏),X页面在onLoad中处理参数,onShow中跳转

继续阅读 »

问题:从A(竖屏) => B(横屏)=> C(竖屏)=> D(竖屏),C或者D页面样式出现放大或错乱问题。
B页面代码:


        onShow() {  
            plus.screen.lockOrientation('landscape-primary');  
        },  
        onHide() {  
            plus.screen.unlockOrientation();  
            plus.screen.lockOrientation('portrait-primary');  
        },  

解决方案:A(竖屏) => B(横屏)=> X1(竖屏)=> X2(竖屏)=> C(竖屏)=> D(竖屏),X页面在onLoad中处理参数,onShow中跳转

收起阅读 »

由于应用universal link校验不通过?记一个打包的iOS不能分享的坑

分享 universallink iOS打包

全部步骤根据文档来,文档地址:https://uniapp.dcloud.io/api/plugins/universal-links
但是打包出来的iOS应用分享时却出现了 由于应用universal link校验不通过

不管是uniCloud 测试的域名还是自定义域名,都无法分享,这个时候只能自己私有化部署服务器来托管apple-app-site-association文件创建通用链接

第一步:开启Associated Domains服务

登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启Associated Domains服务

开启Associated Domains服务后需要重新生成profile文件,提交云端打包时使用

第二步:配置Associated Domains(域名)

使用HBuilderX云端打包时在manifest.json中配置域名
在"plus" -> "distribute" -> "apple" -> "capabilities" -> "entitlements"节点(uni-app项目在"app-plus" -> "distribute" -> "ios" -> "capabilities" -> "entitlements")下添加"com.apple.developer.associated-domains"字段,字段值为字符串数组,每个字符串为要关联的域名

    "capabilities": {    
        "entitlements": {    
            "com.apple.developer.associated-domains": [    
                "applinks:domain.com"    
            ]    
        }    
    }

其中domain.com是应用通用链接的域名(这里不要包含path),请修改为自己应用要使用的域名
保存后提交云端打包生效。

第三步:服务器配置apple-app-site-association文件
需要在上面域名对应的服务器上放apple-app-site-association文件。
apple-app-site-association文件配置如下:

{    
    "applinks": {    
        "apps": [],    
        "details": [    
            {    
                "appID": "*App ID Prefix*.*Bundle ID*",    
                "paths": [ "/ulink/*"]    
            }    
        ]    
    }    
}

apps: 必须对应一个空的数组

appID:由App ID Prefix和Bundle ID两部分组成,中间用"."连接,可以登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID查看

paths:对应域名中的path,用于过滤可以跳转到App的链接,支持通配符*,?以及NOT进行匹配,匹配的优先级是从左至右依次降低

注意:不要直接拷贝使用上面的示例,必须根据自己的App ID Prefix和Bundle ID修改

把配置好的apple-app-site-association文件上传到你自己的服务器,确保通过https://domain.com/.well-known/apple-app-site-association可访问。
其中domain.com为第二步配置的域名
应用安装后会通过访问上面的url向系统注册应用的通用链接。

第四步:在微信开放平台配置通用链接

打开微信开发平台,在“管理中心”页面的“移动应用”下找到已经申请的应用(没有申请应用请点击“创建移动应用”新建应用),点击“查看”打开应用详情页面。
在“开发信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接
Universal Links通用链接:https://domain.com/ulink/
其中domain.com为第二步配置的域名

第五步:在HBuilderX中配置通用链接提交云端打包

将上一步在微信开放平台配置的通用链接地址配置到应用manifest.json中,注意通用链接地址必须完全一致(本地离线打包忽略此操作)

打开项目的manifest.json文件,在“(App) SDK配置”项中的微信登录(微信分享、微信支付)下的“iOS平台通用链接(Universal Links)”中配置:

如果使用了微信分享和微信支付,也需要分别配置微信分享和微信支付下的“iOS平台通用链接(Universal Links)”,并且配置的值必须相同
Universal Links通用链接:https://domain.com/ulink/
其中domain.com为第二步配置的域名

保存后需提交云端打包生效。

至此,打包好的ipa安装包可以正常分享

参考文档:
https://ask.dcloud.net.cn/article/36393
https://ask.dcloud.net.cn/article/36445

继续阅读 »

全部步骤根据文档来,文档地址:https://uniapp.dcloud.io/api/plugins/universal-links
但是打包出来的iOS应用分享时却出现了 由于应用universal link校验不通过

不管是uniCloud 测试的域名还是自定义域名,都无法分享,这个时候只能自己私有化部署服务器来托管apple-app-site-association文件创建通用链接

第一步:开启Associated Domains服务

登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启Associated Domains服务

开启Associated Domains服务后需要重新生成profile文件,提交云端打包时使用

第二步:配置Associated Domains(域名)

使用HBuilderX云端打包时在manifest.json中配置域名
在"plus" -> "distribute" -> "apple" -> "capabilities" -> "entitlements"节点(uni-app项目在"app-plus" -> "distribute" -> "ios" -> "capabilities" -> "entitlements")下添加"com.apple.developer.associated-domains"字段,字段值为字符串数组,每个字符串为要关联的域名

    "capabilities": {    
        "entitlements": {    
            "com.apple.developer.associated-domains": [    
                "applinks:domain.com"    
            ]    
        }    
    }

其中domain.com是应用通用链接的域名(这里不要包含path),请修改为自己应用要使用的域名
保存后提交云端打包生效。

第三步:服务器配置apple-app-site-association文件
需要在上面域名对应的服务器上放apple-app-site-association文件。
apple-app-site-association文件配置如下:

{    
    "applinks": {    
        "apps": [],    
        "details": [    
            {    
                "appID": "*App ID Prefix*.*Bundle ID*",    
                "paths": [ "/ulink/*"]    
            }    
        ]    
    }    
}

apps: 必须对应一个空的数组

appID:由App ID Prefix和Bundle ID两部分组成,中间用"."连接,可以登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID查看

paths:对应域名中的path,用于过滤可以跳转到App的链接,支持通配符*,?以及NOT进行匹配,匹配的优先级是从左至右依次降低

注意:不要直接拷贝使用上面的示例,必须根据自己的App ID Prefix和Bundle ID修改

把配置好的apple-app-site-association文件上传到你自己的服务器,确保通过https://domain.com/.well-known/apple-app-site-association可访问。
其中domain.com为第二步配置的域名
应用安装后会通过访问上面的url向系统注册应用的通用链接。

第四步:在微信开放平台配置通用链接

打开微信开发平台,在“管理中心”页面的“移动应用”下找到已经申请的应用(没有申请应用请点击“创建移动应用”新建应用),点击“查看”打开应用详情页面。
在“开发信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接
Universal Links通用链接:https://domain.com/ulink/
其中domain.com为第二步配置的域名

第五步:在HBuilderX中配置通用链接提交云端打包

将上一步在微信开放平台配置的通用链接地址配置到应用manifest.json中,注意通用链接地址必须完全一致(本地离线打包忽略此操作)

打开项目的manifest.json文件,在“(App) SDK配置”项中的微信登录(微信分享、微信支付)下的“iOS平台通用链接(Universal Links)”中配置:

如果使用了微信分享和微信支付,也需要分别配置微信分享和微信支付下的“iOS平台通用链接(Universal Links)”,并且配置的值必须相同
Universal Links通用链接:https://domain.com/ulink/
其中domain.com为第二步配置的域名

保存后需提交云端打包生效。

至此,打包好的ipa安装包可以正常分享

参考文档:
https://ask.dcloud.net.cn/article/36393
https://ask.dcloud.net.cn/article/36445

收起阅读 »

uniapp 使用 vuedraggable^2.24.3 时的监听报错解决分享

drag

原解决方案来源 使用vuedraggable时 ... "Cannot read property 'id' of null"

按照 j***@qq.com 评论的解决方案修改了文件后,vuedraggable 库重新 build 一下,但是这只能解决一时的问题,下次重新编译项目时又会被覆盖掉

解决:使用 patch-package 修复并保留对依赖库的修改

  1. 安装 yarn add patch-package postinstall-postinstall (patch-package 为主体,postinstall 可在项目编译时自动修复依赖)
  2. 项目的 package.json 的 scripts 中添加 "postinstall": "patch-package"
  3. 进入 node_modules/vuedraggable先安装下依赖,然后修改 vuedraggable.js 第 31 行
    function emit(evtName, evtData) {  
     this.$nextTick(() => this.$emit(evtName.toLowerCase(), {...evtData})); // <-  
    }  
  4. 执行 yarn build
  5. 删除 node_modules/vuedraggable 下的 node_modulesyarn.lock
  6. 项目根目录下执行 yarn patch-package vuedraggable,此时根目录下会多一个 patches 文件夹,里面有对依赖某个版本的修改记录
  7. 即可
继续阅读 »

原解决方案来源 使用vuedraggable时 ... "Cannot read property 'id' of null"

按照 j***@qq.com 评论的解决方案修改了文件后,vuedraggable 库重新 build 一下,但是这只能解决一时的问题,下次重新编译项目时又会被覆盖掉

解决:使用 patch-package 修复并保留对依赖库的修改

  1. 安装 yarn add patch-package postinstall-postinstall (patch-package 为主体,postinstall 可在项目编译时自动修复依赖)
  2. 项目的 package.json 的 scripts 中添加 "postinstall": "patch-package"
  3. 进入 node_modules/vuedraggable先安装下依赖,然后修改 vuedraggable.js 第 31 行
    function emit(evtName, evtData) {  
     this.$nextTick(() => this.$emit(evtName.toLowerCase(), {...evtData})); // <-  
    }  
  4. 执行 yarn build
  5. 删除 node_modules/vuedraggable 下的 node_modulesyarn.lock
  6. 项目根目录下执行 yarn patch-package vuedraggable,此时根目录下会多一个 patches 文件夹,里面有对依赖某个版本的修改记录
  7. 即可
收起阅读 »

数据库操作方法已经更新了 updateAndReturn,建议增加removeAndReturn。

uniCloud

如题。可以解决一些冗余的操作查询操作

如题。可以解决一些冗余的操作查询操作

uniapp打包上架遇到要求SDK权限延后处理的问题

隐私弹窗

uniapp的坑也是不少,个人也是第一次开发安卓端的app,因此遇到的问题也是不少,特此记录一下。

此文章要记录的是关于应用宝上架遇到的问题(包括vivo平台),要求是权限请求必须在用户同意用户协议和隐私权限后才行。我当时是在首页里加入了一个弹窗,在第一次进入app时调用打开弹窗,就这样打包提交平台审核,然后回了一整页的隐私权限问题。


看到这个我人都要看傻了,这都啥啊?在百度了无数东西之后,终于发现了一个最重要的问题,权限请求必须在用户同意用户协议和隐私权限后
可是我已点开app权限就开始请求啊,比如请求手机的通话状态、请求写入手机内部文件存储,然后才到我的首页去打开隐私协议弹窗,这压根没法子啊?于是去QQ官群问,技术群问,奈何没人回我(可能是我菜?)
就这个时候我点开了人家的app,清空数据后重新进入,诶?人家的都是弹窗先出来,然后再请求权限。
难道是我菜?于是怀着不平的心情,继续挖百度,终于是让我挖到了:

Android平台隐私与政策提示框配置方法
配置方式
打开项目的manifest.json文件,切换到“源码视图”项

uni-app项目
在 "app-plus" -> "privacy" 节点下添加 prompt节点

"privacy": {    
      "prompt": "template",    
      "template": {    
        "title": "服务协议和隐私政策",    
        "message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https:\//www.xxx.com\">《用户协议》</a>和<a href=\"https:\//www.xxx.com\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",    
        "buttonAccept": "同意",    
        "buttonRefuse": "暂不同意",    
        "second": {    
          "title": "温馨提示",    
          "message": "  进入应用前,你需先同意<a href=\"https:\//www.xxx.com\">《服务协议》</a>和<a href=\"https:\//www.xxx.com\">《隐私政策》</a>,否则将退出应用。",    
          "buttonAccept": "同意并继续",    
          "buttonRefuse": "退出应用",    
        }     
      }    
    }

这个就是在启动页就能出现的弹窗提示框,按配置进行即可(不看文档的坑!!!)
文档链接:
完成之后需要重新云端打包后才能生效

继续阅读 »

uniapp的坑也是不少,个人也是第一次开发安卓端的app,因此遇到的问题也是不少,特此记录一下。

此文章要记录的是关于应用宝上架遇到的问题(包括vivo平台),要求是权限请求必须在用户同意用户协议和隐私权限后才行。我当时是在首页里加入了一个弹窗,在第一次进入app时调用打开弹窗,就这样打包提交平台审核,然后回了一整页的隐私权限问题。


看到这个我人都要看傻了,这都啥啊?在百度了无数东西之后,终于发现了一个最重要的问题,权限请求必须在用户同意用户协议和隐私权限后
可是我已点开app权限就开始请求啊,比如请求手机的通话状态、请求写入手机内部文件存储,然后才到我的首页去打开隐私协议弹窗,这压根没法子啊?于是去QQ官群问,技术群问,奈何没人回我(可能是我菜?)
就这个时候我点开了人家的app,清空数据后重新进入,诶?人家的都是弹窗先出来,然后再请求权限。
难道是我菜?于是怀着不平的心情,继续挖百度,终于是让我挖到了:

Android平台隐私与政策提示框配置方法
配置方式
打开项目的manifest.json文件,切换到“源码视图”项

uni-app项目
在 "app-plus" -> "privacy" 节点下添加 prompt节点

"privacy": {    
      "prompt": "template",    
      "template": {    
        "title": "服务协议和隐私政策",    
        "message": "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https:\//www.xxx.com\">《用户协议》</a>和<a href=\"https:\//www.xxx.com\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",    
        "buttonAccept": "同意",    
        "buttonRefuse": "暂不同意",    
        "second": {    
          "title": "温馨提示",    
          "message": "  进入应用前,你需先同意<a href=\"https:\//www.xxx.com\">《服务协议》</a>和<a href=\"https:\//www.xxx.com\">《隐私政策》</a>,否则将退出应用。",    
          "buttonAccept": "同意并继续",    
          "buttonRefuse": "退出应用",    
        }     
      }    
    }

这个就是在启动页就能出现的弹窗提示框,按配置进行即可(不看文档的坑!!!)
文档链接:
完成之后需要重新云端打包后才能生效

收起阅读 »

Uniapp发布为H5版本时如何隐藏访问路径的#符号

在使用Uniapp发布为H5端时,我们的页面访问路径都会带上一个“#”号,这个不仅影响美观,还会在某些场合被过滤到“#”号导致路由错误,比如我们在做H5端的微信公众号登录的时候,返回地址带有“#”号就会被自动过滤掉,导致无法回调到正确页面,解决办法如下:

一、使用Hbuilder 工具打开manifest.json 文件,定位到:H5配置->路由模式->选择 history 模式

https://www.shopwind.net

二、服务器配置

打包好H5代码上传到服务器还需要做伪静态的配置。

history模式下配置nginx

location / {  
  try_files $uri $uri/ /index.html;  
}

history模式下配置Apache

RewriteEngine On  
RewriteBase /  
RewriteRule ^index\.html$ - [L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.html [L]

三、经过以上处理之后,我们原先的H5端的访问地址:https://h5.shopwind.net/#/pages/index/index 就会自动转化为:https://h5.shopwind.net/pages/index/index , 已经完美的去掉了“#”符合,并且我们在填写微信公众号登录的回调地址后,能正常跳回。

继续阅读 »

在使用Uniapp发布为H5端时,我们的页面访问路径都会带上一个“#”号,这个不仅影响美观,还会在某些场合被过滤到“#”号导致路由错误,比如我们在做H5端的微信公众号登录的时候,返回地址带有“#”号就会被自动过滤掉,导致无法回调到正确页面,解决办法如下:

一、使用Hbuilder 工具打开manifest.json 文件,定位到:H5配置->路由模式->选择 history 模式

https://www.shopwind.net

二、服务器配置

打包好H5代码上传到服务器还需要做伪静态的配置。

history模式下配置nginx

location / {  
  try_files $uri $uri/ /index.html;  
}

history模式下配置Apache

RewriteEngine On  
RewriteBase /  
RewriteRule ^index\.html$ - [L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.html [L]

三、经过以上处理之后,我们原先的H5端的访问地址:https://h5.shopwind.net/#/pages/index/index 就会自动转化为:https://h5.shopwind.net/pages/index/index , 已经完美的去掉了“#”符合,并且我们在填写微信公众号登录的回调地址后,能正常跳回。

收起阅读 »

uni-app开发的H5网页如何投放谷歌和百度广告?

input

uni-app开发的H5网页如何投放谷歌和百度广告?

uni-app开发的H5网页如何投放谷歌和百度广告?

旧版HBuilder X(3.2.1以前的版本)创建的uni-app开发快手小程序指南

快手小程序

最新版的HBuilderX(3.2.1+版本)创建的uni-app项目,已经支持直接在编辑器菜单:运行/发行快手小程序

====================================
我们强烈建议通过升级HBuilderX至3.2.1+版本,开发快手小程序。
如下介绍的开发方式,主要针对旧版编辑器不支持直接运行到快手小程序。
如果由于特殊原因,你仍然坚持使用旧版HBuilderX(3.2.1以前的版本),那样你只能通过cli方式创建uni-app项目才能运行到快手小程序。
步骤如下:

准备工作:

1.安装快手开发者工具,点此下载
2.cli创建uni-app。详情:通过vue-cli命令行
如果你的项目是由hbuilderx创建的,需要先转成cli项目。详情:uni-app HBuilderX 工程与 vue-cli 工程相互转换

运行快手小程序:

npm run dev:mp-kuaishou


3.打开快手开发者工具,点击导入。目录:cli创建的uni-app项目/dist/dev/mp-kuaishou

提醒:命令行创建uni-app,推荐使用alpha版(对应HBuilderX最新alpha版)。该版本的快手小程序更稳定。
如果你是早期创建的升级方式 点击:修改依赖为指定版本

继续阅读 »

最新版的HBuilderX(3.2.1+版本)创建的uni-app项目,已经支持直接在编辑器菜单:运行/发行快手小程序

====================================
我们强烈建议通过升级HBuilderX至3.2.1+版本,开发快手小程序。
如下介绍的开发方式,主要针对旧版编辑器不支持直接运行到快手小程序。
如果由于特殊原因,你仍然坚持使用旧版HBuilderX(3.2.1以前的版本),那样你只能通过cli方式创建uni-app项目才能运行到快手小程序。
步骤如下:

准备工作:

1.安装快手开发者工具,点此下载
2.cli创建uni-app。详情:通过vue-cli命令行
如果你的项目是由hbuilderx创建的,需要先转成cli项目。详情:uni-app HBuilderX 工程与 vue-cli 工程相互转换

运行快手小程序:

npm run dev:mp-kuaishou


3.打开快手开发者工具,点击导入。目录:cli创建的uni-app项目/dist/dev/mp-kuaishou

提醒:命令行创建uni-app,推荐使用alpha版(对应HBuilderX最新alpha版)。该版本的快手小程序更稳定。
如果你是早期创建的升级方式 点击:修改依赖为指定版本

收起阅读 »

canvas 的drawImage在hbx里不好用

canvas

大家注意了哈 别在这上面浪费时间

大家注意了哈 别在这上面浪费时间

垃圾平台,

最简单的bug反馈提交都做不好,还他妈牛逼吹上天。

最简单的bug反馈提交都做不好,还他妈牛逼吹上天。

uni.createInnerAudioContext() 报错{"errMsg":"MediaError","errCode":-5}解决方案

uniapp

接了腾讯的tim 现在遇到了ios播放不了tim返回的音频链接报错{"errMsg":"MediaError","errCode":-5} 但是经过自己的摸索 发现video可以播放 所以写一系列骚操作
个人感觉是uniapp的uni.createInnerAudioContext()事件底层 ios原生这块的io报错 也求官方早日修复吧
不多说 直接上代码

<template>  
 <video  
      :id="payload.uuid"  
      :muted="isFirstLoad"//第一次获取音频时长静音播放  
      style="display: none;"  
      :src="payload.url"  
      @timeupdate="handleTimeUp"//第一次获取音频时长事件  
    />  
</template>  
<script>  

export default {  
 props: {  
    payload: {  
      type: Object,  
      required: true  
    }  
},  
methods:{  
handleTimeUp(e) {  
      const { duration } = e.detail  
      if (this.isFirstLoad) {  
        this.videoContext.pause()  
        this.second = duration.toFixed(0)  
        this.isFirstLoad = false  
      }  
    },}  
}  
</script>

剩下的播放就不多说了 记录一下坑 日后给需要的兄弟

继续阅读 »

接了腾讯的tim 现在遇到了ios播放不了tim返回的音频链接报错{"errMsg":"MediaError","errCode":-5} 但是经过自己的摸索 发现video可以播放 所以写一系列骚操作
个人感觉是uniapp的uni.createInnerAudioContext()事件底层 ios原生这块的io报错 也求官方早日修复吧
不多说 直接上代码

<template>  
 <video  
      :id="payload.uuid"  
      :muted="isFirstLoad"//第一次获取音频时长静音播放  
      style="display: none;"  
      :src="payload.url"  
      @timeupdate="handleTimeUp"//第一次获取音频时长事件  
    />  
</template>  
<script>  

export default {  
 props: {  
    payload: {  
      type: Object,  
      required: true  
    }  
},  
methods:{  
handleTimeUp(e) {  
      const { duration } = e.detail  
      if (this.isFirstLoad) {  
        this.videoContext.pause()  
        this.second = duration.toFixed(0)  
        this.isFirstLoad = false  
      }  
    },}  
}  
</script>

剩下的播放就不多说了 记录一下坑 日后给需要的兄弟

收起阅读 »