HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

建议uniapp H5添加自定义路由的配置

Vue h5 uniapp

建议uniapp H5添加自定义路由的配置,不然路由很丑的。

建议uniapp H5添加自定义路由的配置,不然路由很丑的。

微信内H5使用JSSDK分享!!!注意目前Hbuilderx2.3.7版本存在问题!!!

微信分享 微信JSSDK 微信h5

今天发现Hbuilderx2.3.7存在问题,给一下解决方案,顺便希望官方看下是更新了什么内容导致不兼容!!!(11月5日)
当前最新版本Hbuilderx2.3.7,在IOS上使用以下代码分享时,调试一切正常,真机提示签名错误。

分析原因:

  1. 使用微信复制链接功能,显示的是第一次进入网站的地址,
  2. 刷新页面,再次分享正常。

解决办法:

  1. ios下记录第一次进入网站时候url地址
  2. 在调用分享jssdk的位置,使用上一步记录的url地址进行签名。
  3. 具体代码就不写了,在app.vue中获取location.href存入全局变量就可以了

最近一直有人问jssdk的问题,官方贴也太简单,没有说明。所以这里再写一篇简单教程,附有代码。其实这个sdk还是比较简单的,只是因为uni-app的h5端是SPA单页应用,所以容易出现签名错误,或者配置没有正确初始化的问题。

服务端计算签名

文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

引入JSSDK

推荐使用npm安装,参考 http://ask.dcloud.net.cn/article/35380

创建一个js文件,封装微信相关功能

笔者是放在common目录,文件名称是wechat.js
代码如下:

import request from './request'; //笔者自己封装的网络请求类,也可以直接使用uni.request  
var jweixin = require('jweixin-module');  

export default {  
        //判断是否在微信中  
    isWechat:function(){  
        var ua = window.navigator.userAgent.toLowerCase();  
        if(ua.match(/micromessenger/i) == 'micromessenger'){  
            return true;  
        }else{  
            return false;  
        }  
    },  
        //初始化sdk配置  
    initJssdk:function(callback ,url){  
                //服务端进行签名 ,可使用uni.request替换。 签名算法请看文档  
        request.post('/api/oauth/wechat/sign',{url:url},function(res){  
            if(res.data){  
                jweixin.config({  
                     debug: false,  
                     appId: res.data.appId,  
                     timestamp:res.data.timestamp,  
                     nonceStr: res.data.nonceStr,  
                     signature:res.data.signature,  
                     jsApiList: [  
                         'checkJsApi',  
                         'onMenuShareTimeline',  
                         'onMenuShareAppMessage'  
                     ]  
                });  
                //配置完成后,再执行分享等功能  
                if(callback){  
                    callback(res.data);  
                }  
            }  

        });  
    },  
        //在需要自定义分享的页面中调用  
    share:function(data ,url){  
        url =url ? url :window.location.href;  
        if(!this.isWechat()){  
            return ;  
        }  
                //每次都需要重新初始化配置,才可以进行分享  
        this.initJssdk(function(signData){  
            jweixin.ready(function(){    
                var shareData = {  
                     title: data&&data.title ? data.title: signData.site_name,  
                     desc: data&&data.desc ? data.desc: signData.site_description,  
                     link: url,  
                     imgUrl: data&&data.img ?data.img :signData.site_logo,  
                     success: function (res) {  
                                                 //用户点击分享后的回调,这里可以进行统计,例如分享送金币之类的  
                        request.post('/api/member/share');  
                     },  
                     cancel: function (res) {  
                     }  
                 };  
                 //分享给朋友接口  
                 jweixin.onMenuShareAppMessage(shareData);  
                 //分享到朋友圈接口  
                 jweixin.onMenuShareTimeline(shareData);  
            });  
        } ,url);  
    }  
}

全局引用

在main.js中引入

// #ifdef H5  
import wechat from './common/wechat'  
if(wechat.isWechat()){  
    Vue.prototype.$wechat =wechat;  
}  
// #endif

在页面中调用

例如,在文章详情页面自定义分享内容。

// #ifdef H5  
if (this.$wechat && this.$wechat.isWechat()) {  
     this.$wechat.share({  
          desc: article.title,  
          img: article.image  
    });  
}  
// #endif

注意事项

1 测试时,可以将debug设置为true,可以看到日志信息
2 签名建议在服务端,签名的url必须和当前页面的url一致,否则自定义分享无效
3 每个页面都需要单独初始化配置,即jweixin.config()
4 在公众号后台设置安全域名
5 笔者的例子是在history模式下,Android、IOS手机均已正常上线使用。若您使用的是hash模式,请自行测试,理论上应该也可以,如果有问题,请检查上述几点。如果还不行,请尝试在签名的事哈去掉url上的 '#'以后部分(含'#')
6 如有遗漏或建议,欢迎下面留言

继续阅读 »

今天发现Hbuilderx2.3.7存在问题,给一下解决方案,顺便希望官方看下是更新了什么内容导致不兼容!!!(11月5日)
当前最新版本Hbuilderx2.3.7,在IOS上使用以下代码分享时,调试一切正常,真机提示签名错误。

分析原因:

  1. 使用微信复制链接功能,显示的是第一次进入网站的地址,
  2. 刷新页面,再次分享正常。

解决办法:

  1. ios下记录第一次进入网站时候url地址
  2. 在调用分享jssdk的位置,使用上一步记录的url地址进行签名。
  3. 具体代码就不写了,在app.vue中获取location.href存入全局变量就可以了

最近一直有人问jssdk的问题,官方贴也太简单,没有说明。所以这里再写一篇简单教程,附有代码。其实这个sdk还是比较简单的,只是因为uni-app的h5端是SPA单页应用,所以容易出现签名错误,或者配置没有正确初始化的问题。

服务端计算签名

文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

引入JSSDK

推荐使用npm安装,参考 http://ask.dcloud.net.cn/article/35380

创建一个js文件,封装微信相关功能

笔者是放在common目录,文件名称是wechat.js
代码如下:

import request from './request'; //笔者自己封装的网络请求类,也可以直接使用uni.request  
var jweixin = require('jweixin-module');  

export default {  
        //判断是否在微信中  
    isWechat:function(){  
        var ua = window.navigator.userAgent.toLowerCase();  
        if(ua.match(/micromessenger/i) == 'micromessenger'){  
            return true;  
        }else{  
            return false;  
        }  
    },  
        //初始化sdk配置  
    initJssdk:function(callback ,url){  
                //服务端进行签名 ,可使用uni.request替换。 签名算法请看文档  
        request.post('/api/oauth/wechat/sign',{url:url},function(res){  
            if(res.data){  
                jweixin.config({  
                     debug: false,  
                     appId: res.data.appId,  
                     timestamp:res.data.timestamp,  
                     nonceStr: res.data.nonceStr,  
                     signature:res.data.signature,  
                     jsApiList: [  
                         'checkJsApi',  
                         'onMenuShareTimeline',  
                         'onMenuShareAppMessage'  
                     ]  
                });  
                //配置完成后,再执行分享等功能  
                if(callback){  
                    callback(res.data);  
                }  
            }  

        });  
    },  
        //在需要自定义分享的页面中调用  
    share:function(data ,url){  
        url =url ? url :window.location.href;  
        if(!this.isWechat()){  
            return ;  
        }  
                //每次都需要重新初始化配置,才可以进行分享  
        this.initJssdk(function(signData){  
            jweixin.ready(function(){    
                var shareData = {  
                     title: data&&data.title ? data.title: signData.site_name,  
                     desc: data&&data.desc ? data.desc: signData.site_description,  
                     link: url,  
                     imgUrl: data&&data.img ?data.img :signData.site_logo,  
                     success: function (res) {  
                                                 //用户点击分享后的回调,这里可以进行统计,例如分享送金币之类的  
                        request.post('/api/member/share');  
                     },  
                     cancel: function (res) {  
                     }  
                 };  
                 //分享给朋友接口  
                 jweixin.onMenuShareAppMessage(shareData);  
                 //分享到朋友圈接口  
                 jweixin.onMenuShareTimeline(shareData);  
            });  
        } ,url);  
    }  
}

全局引用

在main.js中引入

// #ifdef H5  
import wechat from './common/wechat'  
if(wechat.isWechat()){  
    Vue.prototype.$wechat =wechat;  
}  
// #endif

在页面中调用

例如,在文章详情页面自定义分享内容。

// #ifdef H5  
if (this.$wechat && this.$wechat.isWechat()) {  
     this.$wechat.share({  
          desc: article.title,  
          img: article.image  
    });  
}  
// #endif

注意事项

1 测试时,可以将debug设置为true,可以看到日志信息
2 签名建议在服务端,签名的url必须和当前页面的url一致,否则自定义分享无效
3 每个页面都需要单独初始化配置,即jweixin.config()
4 在公众号后台设置安全域名
5 笔者的例子是在history模式下,Android、IOS手机均已正常上线使用。若您使用的是hash模式,请自行测试,理论上应该也可以,如果有问题,请检查上述几点。如果还不行,请尝试在签名的事哈去掉url上的 '#'以后部分(含'#')
6 如有遗漏或建议,欢迎下面留言

收起阅读 »

iOS平台:如何在iOS离线打包工程中配置应用版本号

应用版本号 iOS离线打包

1、打开需要打包的原生工程和点开工程里的manifest文件,然后将manifest文件里的“version”字段里的“code”的内容 和原生工程里的Build 的写成一样。注意,manifest文件里的“version”字段里的“code” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本号。如下图红色框所示:

继续阅读 »

1、打开需要打包的原生工程和点开工程里的manifest文件,然后将manifest文件里的“version”字段里的“code”的内容 和原生工程里的Build 的写成一样。注意,manifest文件里的“version”字段里的“code” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本号。如下图红色框所示:

收起阅读 »

iOS平台:如何在iOS离线打包工程中配置应用版本名称

iOS离线打包 应用版本名称

1、打开需要打包的原生工程和点开manifest文件,然后将manifest文件里的“version”字段里的“name”的内容 和原生工程里的Version 的写成一样。注意,manifest文件里的“version”字段里的“name” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本名称。如下图红色框所示:


继续阅读 »

1、打开需要打包的原生工程和点开manifest文件,然后将manifest文件里的“version”字段里的“name”的内容 和原生工程里的Version 的写成一样。注意,manifest文件里的“version”字段里的“name” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本名称。如下图红色框所示:


收起阅读 »

iOS平台:如何在iOS离线打包工程中配置应用名称

iOS离线打包 应用名称

1、打开需要打包的原生工程和点开manifest文件,然后将manifest文件里的“name”字段的内容 和原生工程里的Display Name 的写成一样。注意,manifest文件里的”name“ 对应的是HBuilderX打开的工程里的“基础配置”里的应用名称。如下图红色框所示:


继续阅读 »

1、打开需要打包的原生工程和点开manifest文件,然后将manifest文件里的“name”字段的内容 和原生工程里的Display Name 的写成一样。注意,manifest文件里的”name“ 对应的是HBuilderX打开的工程里的“基础配置”里的应用名称。如下图红色框所示:


收起阅读 »

5+app解决返回键直接退出应用问题

5+App开发

5+app在首页双击返回的话退出应用,在二级页面点击返回的话则返回上一页

document.addEventListener('plusready', function() {  
            var first = null;  
            var webview = plus.webview.currentWebview();  
            plus.key.addEventListener('backbutton', function() {  
                webview.canBack(function(e) {  
                    if (e.canBack) {  
                        webview.back(); //这里不建议修改自己跳转的路径  
                    } else {  
                        //首次按键,提示‘再按一次退出应用’  
                        if (!first) {  
                            first = new Date().getTime(); //获取第一次点击的时间戳  
                            // console.log('再按一次退出应用');//用自定义toast提示最好  
                            // toast('双击返回键退出应用'); //调用自己写的吐丝提示 函数  
                            plus.nativeUI.toast("再按一次退出应用", {  
                                duration: 'short'  
                            }); //通过H5+ API 调用Android 上的toast 提示框  
                            setTimeout(function() {  
                                first = null;  
                            }, 1000);  
                        } else {  
                            if (new Date().getTime() - first < 1000) { //获取第二次点击的时间戳, 两次之差 小于 1000ms 说明1s点击了两次,  
                                plus.runtime.quit(); //退出应用  
                            }  
                        }  
                    }  
                })  
            });  
        });

如果是vue打包的单页面应用直接放在index.html,如果是多页面,那就写个公用js,每个html页面都引入

继续阅读 »

5+app在首页双击返回的话退出应用,在二级页面点击返回的话则返回上一页

document.addEventListener('plusready', function() {  
            var first = null;  
            var webview = plus.webview.currentWebview();  
            plus.key.addEventListener('backbutton', function() {  
                webview.canBack(function(e) {  
                    if (e.canBack) {  
                        webview.back(); //这里不建议修改自己跳转的路径  
                    } else {  
                        //首次按键,提示‘再按一次退出应用’  
                        if (!first) {  
                            first = new Date().getTime(); //获取第一次点击的时间戳  
                            // console.log('再按一次退出应用');//用自定义toast提示最好  
                            // toast('双击返回键退出应用'); //调用自己写的吐丝提示 函数  
                            plus.nativeUI.toast("再按一次退出应用", {  
                                duration: 'short'  
                            }); //通过H5+ API 调用Android 上的toast 提示框  
                            setTimeout(function() {  
                                first = null;  
                            }, 1000);  
                        } else {  
                            if (new Date().getTime() - first < 1000) { //获取第二次点击的时间戳, 两次之差 小于 1000ms 说明1s点击了两次,  
                                plus.runtime.quit(); //退出应用  
                            }  
                        }  
                    }  
                })  
            });  
        });

如果是vue打包的单页面应用直接放在index.html,如果是多页面,那就写个公用js,每个html页面都引入

收起阅读 »

妙味618 迎新送大礼,你get了么

JavaScript css HTML5

一年一度“618”,岁岁年年狂剁手。
随着网购时代的到来,越来越多的剁手节让大家谜一样的沉浸其中,无法自拔,什么618、双十一、双十二、双旦等等
年前定下的攒钱目标还没开始就要宣告结束
这就是人生不得不承认的事实

然而比618来得更猝不及防的
是各大电商的营销文案
一个比一个精彩
一个比一个诱惑

所谓清空购物车一时爽,事后剁手火葬场
小妙深知购物狂+剁手党的疯狂
也深知这样一个“节日”对自媒体人来说意味着什么
当然是拼文案拼营销拼姿势啊
反正,钱是越花越少的
经验是越攒越多的
精彩文案给你摆在这
这个手你剁不剁?

小妙作为剁手大军的一员,深深了解大家的纠结与痛苦
而我今年就不一样了,不但不剁手,还可以免费学到知识

免费看?免费?是的,你没看错,真的免费!!!

即日起,注册妙味视频平台的新用户,即可获得价值239元包含1700+集的前端优质视频教程的7天观看权限
无论你是在学布局还是在学小程序,亦或是在学Vue、react,这里应有尽有,爱学习的你,还没心动么,心动了的话就赶快行动起来吧

活动详情见海报:

继续阅读 »

一年一度“618”,岁岁年年狂剁手。
随着网购时代的到来,越来越多的剁手节让大家谜一样的沉浸其中,无法自拔,什么618、双十一、双十二、双旦等等
年前定下的攒钱目标还没开始就要宣告结束
这就是人生不得不承认的事实

然而比618来得更猝不及防的
是各大电商的营销文案
一个比一个精彩
一个比一个诱惑

所谓清空购物车一时爽,事后剁手火葬场
小妙深知购物狂+剁手党的疯狂
也深知这样一个“节日”对自媒体人来说意味着什么
当然是拼文案拼营销拼姿势啊
反正,钱是越花越少的
经验是越攒越多的
精彩文案给你摆在这
这个手你剁不剁?

小妙作为剁手大军的一员,深深了解大家的纠结与痛苦
而我今年就不一样了,不但不剁手,还可以免费学到知识

免费看?免费?是的,你没看错,真的免费!!!

即日起,注册妙味视频平台的新用户,即可获得价值239元包含1700+集的前端优质视频教程的7天观看权限
无论你是在学布局还是在学小程序,亦或是在学Vue、react,这里应有尽有,爱学习的你,还没心动么,心动了的话就赶快行动起来吧

活动详情见海报:

收起阅读 »

1

1

1

使用多国语言版 i18n

i18n

最近项目需要用到多国语言版本,查看了很多资料,总结了下:
使用多国语言,我们可以使用vue-i18n插件

在main.js中加入
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n({
locale: 'zh_CN',
messages: {
'zh_CN':require('@/static/language/zh_CN.json'),
'en_us':require('@/static/language/en_us.js'),
}
})
总体的测试main.js如下:
import Vue from 'vue'
import App from './App'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)
Vue.config.productionTip = false
import connect from '@/common/connect/connect.js';
// Vue.use(connect)
Vue.prototype.$connect = connect.connect;
const i18n = new VueI18n({
locale: 'zh_CN',
messages: {
'zh_CN':require('@/static/language/zh_CN.json'),
'en_us':require('@/static/language/en_us.js'),
}
})

Vue.prototype._i18n = i18n
App.mpType = 'app'
// import number_format from '@/static/js/number_format.js';
// Vue.prototype.$number_format = number_format;
const app = new Vue({
i18n,
...App
})
app.$mount()

在static下新建language/zh_CN.json 和en_us.json

json文件如下:
{
"index":{
"activeTitle":"活动体验",
"articleTitle":"热点推荐"
}
}

接下来就是在vue页面调用json数据
computed:{
i18n(){
return this.$t('index');
}
},

在template下用掉i18n.activeTitle,例如:
<text>{{ i18n.activeTitle }}</text>

PS:运行时可能会遇到 文件找不到vue-i18n的情况
安装方法详见:https://uniapp.dcloud.io/frame?id=npm支持

到此就能够正常的完成i18n的使用。

继续阅读 »

最近项目需要用到多国语言版本,查看了很多资料,总结了下:
使用多国语言,我们可以使用vue-i18n插件

在main.js中加入
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n({
locale: 'zh_CN',
messages: {
'zh_CN':require('@/static/language/zh_CN.json'),
'en_us':require('@/static/language/en_us.js'),
}
})
总体的测试main.js如下:
import Vue from 'vue'
import App from './App'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)
Vue.config.productionTip = false
import connect from '@/common/connect/connect.js';
// Vue.use(connect)
Vue.prototype.$connect = connect.connect;
const i18n = new VueI18n({
locale: 'zh_CN',
messages: {
'zh_CN':require('@/static/language/zh_CN.json'),
'en_us':require('@/static/language/en_us.js'),
}
})

Vue.prototype._i18n = i18n
App.mpType = 'app'
// import number_format from '@/static/js/number_format.js';
// Vue.prototype.$number_format = number_format;
const app = new Vue({
i18n,
...App
})
app.$mount()

在static下新建language/zh_CN.json 和en_us.json

json文件如下:
{
"index":{
"activeTitle":"活动体验",
"articleTitle":"热点推荐"
}
}

接下来就是在vue页面调用json数据
computed:{
i18n(){
return this.$t('index');
}
},

在template下用掉i18n.activeTitle,例如:
<text>{{ i18n.activeTitle }}</text>

PS:运行时可能会遇到 文件找不到vue-i18n的情况
安装方法详见:https://uniapp.dcloud.io/frame?id=npm支持

到此就能够正常的完成i18n的使用。

收起阅读 »

公告:关于HBuilder运行基座发送测试push信息的问题

推送

6月11日傍晚6点,HBuilder运行基座弹出了测试推送消息,说明如下:

  1. 只影响HBuilder手机运行基座,因为是HBuilder运行基座的appkey信息泄露。和打包发行后的app无关,打包的app的key信息是开发者自己去个推申请的。
  2. 目前我司已经重置了HBuilder运行基座的appkey信息,已经泄露的appkey不会继续危害HBuilder运行基座。
  3. HBuilder运行基座是内置了所有三方sdk的,包括推送sdk,否则Hello H5+、hello uni-app等测试应用将无法在运行基座上运行。这和开发者的app是否开通了push没有关系,这个运行基座并不是开发者的app。开发者配置sdk信息后,必须打包后才能生效。

经过调查,已经找到了发送push的当事人,也联合个推方搞明白了事情原委。
2019年6月11日傍晚,DCloud的一名开发者,qq号951740***,第一次开发推送,向个推联系获取技术支持。
在qq群中,个推技术支持向开发者询问ccid,开发者在HBuilder基座里打印出了基座的ccid,在qq群里发给了个推技术支持。
个推技术支持在未核实开发者身份的情况下,把HBuilder基座的key信息发给了该开发者。
开发者使用HBuilder基座的key信息进行推送测试,发送了4次推送消息。他以为是自己在测试,完全没有想到是群发给了所有HBuilder基座用户。

事发后,我们第一时间联系个推,清空了待发送队列,但仍然有4千多台设备被推送出去。

个推方已经向DCloud书面道歉,并为HBuilder基座的push发送制定了特殊的使用规则,防止以后类似事情再发生。
同时个推内部也封死了mastersecret的获取方式,开发者想获取mastersecret,必须使用注册邮箱来申请重置。杜绝人员泄露mastersecret的可能。

对于懂技术的人,看完经过描述就明白怎么回事了。但仍有不懂技术原理的人,有各种莫名其妙的担忧。
再次强调,此事与DCloud无关,发送行为不是DCloud所为、泄露key信息不是DCloud所为,不是什么实习生或离职员工,也不是系统或产品漏洞,完全不影响开发者对DCloud产品或运营服务的信任。
开发者即使使用原生或其他跨平台开发工具做app,只要使用三方sdk,当三方sdk厂商泄露了你的key信息,就会遇到一样的问题。

开发者也不必担心个推是否会泄露自己的key信息给三方:

  1. HBuilder基座是公开的、可调试的app,这是一个特殊情况。开发者自己做的app,别人拿不到你的ccid,自然无法通过ccid查其他key信息。
  2. 个推内部已经封死了mastersecret的获取方式,开发者想获取mastersecret,必须使用注册邮箱来申请重置。杜绝技术支持人员泄露mastersecret的可能。

不管怎么样,各位开发者一定要保护好自己的各种sdk的账户和key信息,减少泄露的可能。

继续阅读 »

6月11日傍晚6点,HBuilder运行基座弹出了测试推送消息,说明如下:

  1. 只影响HBuilder手机运行基座,因为是HBuilder运行基座的appkey信息泄露。和打包发行后的app无关,打包的app的key信息是开发者自己去个推申请的。
  2. 目前我司已经重置了HBuilder运行基座的appkey信息,已经泄露的appkey不会继续危害HBuilder运行基座。
  3. HBuilder运行基座是内置了所有三方sdk的,包括推送sdk,否则Hello H5+、hello uni-app等测试应用将无法在运行基座上运行。这和开发者的app是否开通了push没有关系,这个运行基座并不是开发者的app。开发者配置sdk信息后,必须打包后才能生效。

经过调查,已经找到了发送push的当事人,也联合个推方搞明白了事情原委。
2019年6月11日傍晚,DCloud的一名开发者,qq号951740***,第一次开发推送,向个推联系获取技术支持。
在qq群中,个推技术支持向开发者询问ccid,开发者在HBuilder基座里打印出了基座的ccid,在qq群里发给了个推技术支持。
个推技术支持在未核实开发者身份的情况下,把HBuilder基座的key信息发给了该开发者。
开发者使用HBuilder基座的key信息进行推送测试,发送了4次推送消息。他以为是自己在测试,完全没有想到是群发给了所有HBuilder基座用户。

事发后,我们第一时间联系个推,清空了待发送队列,但仍然有4千多台设备被推送出去。

个推方已经向DCloud书面道歉,并为HBuilder基座的push发送制定了特殊的使用规则,防止以后类似事情再发生。
同时个推内部也封死了mastersecret的获取方式,开发者想获取mastersecret,必须使用注册邮箱来申请重置。杜绝人员泄露mastersecret的可能。

对于懂技术的人,看完经过描述就明白怎么回事了。但仍有不懂技术原理的人,有各种莫名其妙的担忧。
再次强调,此事与DCloud无关,发送行为不是DCloud所为、泄露key信息不是DCloud所为,不是什么实习生或离职员工,也不是系统或产品漏洞,完全不影响开发者对DCloud产品或运营服务的信任。
开发者即使使用原生或其他跨平台开发工具做app,只要使用三方sdk,当三方sdk厂商泄露了你的key信息,就会遇到一样的问题。

开发者也不必担心个推是否会泄露自己的key信息给三方:

  1. HBuilder基座是公开的、可调试的app,这是一个特殊情况。开发者自己做的app,别人拿不到你的ccid,自然无法通过ccid查其他key信息。
  2. 个推内部已经封死了mastersecret的获取方式,开发者想获取mastersecret,必须使用注册邮箱来申请重置。杜绝技术支持人员泄露mastersecret的可能。

不管怎么样,各位开发者一定要保护好自己的各种sdk的账户和key信息,减少泄露的可能。

收起阅读 »

这通知什么鬼??现在官方这么嗨了吗

HBuilder


基座头一回收到推送


基座头一回收到推送

编辑器更新2.0.0.20190610版本 编译input组件 变形

编辑器更新 编译input组件 变形 我的样式没有问题 用旧的版本编译就正常

编辑器更新 编译input组件 变形 我的样式没有问题 用旧的版本编译就正常