HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

解决组件调用中出现 $refs[ref].push is not a function 问题。

组件


如上图所示,控制台出现 refs[ref].push is not a function 问题。
原因是 在项目中 存在 同名的 ref=“xxx” ref 名称必须唯一


如上图所示,控制台出现 refs[ref].push is not a function 问题。
原因是 在项目中 存在 同名的 ref=“xxx” ref 名称必须唯一

uniCloud视频教程 收货地址区域回显问题

schema2code

代码生成工具schema2code-高级进阶_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV17p4y1a71x?p=11&vd_source=9ee7cb0607a63acebf1f1d12f36a3742

我想将收货地址的区域作为字段,加入到表中。按照上面的视频教程进行操作。可以正常保存,但无法回显。
报错如下:
00:38:42.526 [本地调试]PERMISSION_ERROR: 禁止使用数据库内包含的字段名作为别名,产生冲突的数据表为:line-up,产生冲突的字段名称为:area

另外,教程中也没有回显的教程。

自己根据文档,实现了回显。但只能回显省市县中的“县”一级的名称。不太完美。

具体方法为:

  1. 在表的schema.json文件中,添加外键。参考:
    "area": {  
      "bsonType": "string",  
      "title": "所在区域",  
      "description": "所在区域",  
      "enum": {  
        "collection": "opendb-city-china",  
        "field": "code as value,name as text"  
      },  
      "foreignKey": "opendb-city-china.code",  
      "enumType": "tree"  
    },
  2. 在页面中,unicloud-db标签,collection属性,添加上“opendb-city-china”表。参考:
collectionList="line-up,opendb-city-china"

field属性,参考:

field="name,area{name as text}"
继续阅读 »

代码生成工具schema2code-高级进阶_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV17p4y1a71x?p=11&vd_source=9ee7cb0607a63acebf1f1d12f36a3742

我想将收货地址的区域作为字段,加入到表中。按照上面的视频教程进行操作。可以正常保存,但无法回显。
报错如下:
00:38:42.526 [本地调试]PERMISSION_ERROR: 禁止使用数据库内包含的字段名作为别名,产生冲突的数据表为:line-up,产生冲突的字段名称为:area

另外,教程中也没有回显的教程。

自己根据文档,实现了回显。但只能回显省市县中的“县”一级的名称。不太完美。

具体方法为:

  1. 在表的schema.json文件中,添加外键。参考:
    "area": {  
      "bsonType": "string",  
      "title": "所在区域",  
      "description": "所在区域",  
      "enum": {  
        "collection": "opendb-city-china",  
        "field": "code as value,name as text"  
      },  
      "foreignKey": "opendb-city-china.code",  
      "enumType": "tree"  
    },
  2. 在页面中,unicloud-db标签,collection属性,添加上“opendb-city-china”表。参考:
collectionList="line-up,opendb-city-china"

field属性,参考:

field="name,area{name as text}"
收起阅读 »

最新安卓隐私sdk收集分享

隐私协议 安卓

2个安卓应用因为隐私被下架了,重新按照要求完善了隐私sdk:

<tbody>  
            <tr>  
                <td>uni-app(5+、web2app)</td>  
                <td>io.dcloud</td>  
                <td>基础模块</td>  
                <td>android.permission.INTERNET  
                    android.permission.ACCESS_NETWORK_STATE  
                    android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG  
                    android.permission.READ_PHONE_STATE</td>  
                <td>存储的个人文件,设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI),网络信息</td>  
                <td>https://ask.dcloud.net.cn/article/36937</td>  
            </tr>  
            <tr>  
                <td>阿里weexSDK</td>  
                <td>com.taobao</td>  
                <td>uni-app基础模块默认集成,用于渲染uniapp的nvue页面引擎</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储的个人文件</td>  
                <td>http://doc.weex.io/zh</td>  
            </tr>  
            <tr>  
                <td>Fresco图库</td>  
                <td>com.facebook.fresco</td>  
                <td>用于nvue页面加载图片使用</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储的个人文件</td>  
                <td>https://www.fresco-cn.org/</td>  
            </tr>  
            <tr>  
                <td>glide图库</td>  
                <td>com.bumptech.glide</td>  
                <td>用于图片预览使用</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储的个人文件</td>  
                <td>http://bumptech.github.io/glide/</td>  
            </tr>  
            <tr>  
                <td>gif-drawable</td>  
                <td>pl.droidsonroids.gif</td>  
                <td>加载gif图</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储文件</td>  
                <td>https://github.com/koral--/android-gif-drawable</td>  
            </tr>  
            <tr>  
                <td>fastjson</td>  
                <td>com.alibaba.fastjson</td>  
                <td>JSON解析</td>  
                <td>无</td>  
                <td>无</td>  
                <td>https://github.com/alibaba/fastjson</td>  
            </tr>  
            <tr>  
                <td>移动安全联盟</td>  
                <td>OAID</td>  
                <td>com.bun.miitmdid、com.zui.opendeviceidlibrary</td>  
                <td>获取oaid</td>  
                <td>无</td>  
                <td>设备信息</td>  
                <td>http://www.msa-alliance.cn/col.jsp?id=105</td>  
            </tr>  
        <tr>  
            <td>个推·消息推送</td>  
            <td>com.igexin</td>  
            <td>消息推送</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.VIBRATE  
                android.permission.GET_TASKS  
                android.permission.QUERY_ALL_PACKAGEs</td>  
            <td>存储的个人文件、设备信息(IMEI、MAC、ANDROID_ID、DEVICE_ID、IMSI)、应用已安装列表、网络信息</td>  
            <td>http://docs.getui.com/privacy</td>  
        </tr>  
        <tr>  
            <td>微信开放平台</td>  
            <td>com.tencent.mm</td>  
            <td>登录、分享、支付(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE</td>  
            <td>存储的个人文件、网络信息</td>  
            <td>https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy</td>  
        </tr>  
        <tr>  
            <td>新浪开放平台</td>  
            <td>com.sina.weibo</td>  
            <td>登录、分享(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE</td>  
            <td>存储的个人文件、网络信息</td>  
            <td>https://weibo.com/signup/v5/privacy?spm=a1zaa.8161610.0.0.4f8776217Wu8R1</td>  
        </tr>  
            <tr>  
                <td>支付宝开放平台</td>  
                <td>com.alipay</td>  
                <td>登录、分享(请根据具体使用目的填写)</td>  
                <td>android.permission.ACCESS_NETWORK_STATE  
                    android.permission.ACCESS_WIFI_STATE</td>  
                <td>网络信息 设备id IP地址 OAID IMSI</td>  
                <td>https://render.alipay.com/p/c/k2cx0tg8</td>  
            </tr>  
        <tr>  
            <td>高德开放平台</td>  
            <td>com.amap.api, com.loc, com.autonavi</td>  
            <td>实现定位/展现地图(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_COARSE_LOCATION  
                android.permission.ACCESS_FINE_LOCATION  
                android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.CHANGE_WIFI_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.ACCESS_LOCATION_EXTRA_COMMANDS</td>  
            <td>存储的个人文件、位置信息、读取手机状态和身份、网络信息</td>  
            <td>https://lbs.amap.com/agreement/compliance</td>  
        </tr>  
        <tr>  
            <td>百度开放平台</td>  
            <td>com.baidu</td>  
            <td>实现定位/展现地图(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_COARSE_LOCATION  
                android.permission.ACCESS_FINE_LOCATION  
                android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.CHANGE_WIFI_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.ACCESS_LOCATION_EXTRA_COMMANDS  
                android.permission.READ_LOGS  
                android.permission.WRITE_SETTINGS  
                android.permission.MOUNT_UNMOUNT_FILESYSTEM</td>  
            <td>存储的个人文件、位置信息、读取手机状态和身份、网络信息</td>  
            <td>https://map.baidu.com/zt/client/privacy/index.html</td>  
        </tr>  
        <tr>  
            <td>uni-AD</td>  
            <td></td>  
            <td>基础广告</td>  
            <td>设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.ACCESS_COARSE_LOCATION</td>  
            <td>广告投放合作,广告归因、反作弊、安全  隐私协议</td>  
            <td>https://doc.dcloud.net.cn/markdown-share-docs/1d821cdd3cdf2681045ec4be94bc8404/</td>  
        </tr>  
        <tr>  
            <td>腾讯浏览服务SDK</td>  
            <td>com.tencent.tbs、com.tencent.smtt</td>  
            <td>x5内核渲染webview</td>  
            <td>android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.READ_PHONE_STATE</td>  
            <td>存储的个人文件、读取手机状态和身份、网络信息</td>  
            <td>https://x5.tencent.com/docs/privacy.html</td>  
        </tr>  
        <tr>  
            <td>openinstall</td>  
            <td>io.openinstall.sdk、com.fm.openinstall</td>  
            <td>设备品牌、设备型号、操作系统版本、IP地址、粘贴板(剪切板)</td>  
            <td>数据统计和分析</td>  
            <td>用于数据统计和分析</td>  
            <td>https://www.openinstall.io/privacy.html</td>  
        </tr>  
        <tr>  
            <td>openinstall</td>  
            <td>io.openinstall.sdk、com.fm.openinstall</td>  
            <td>Android ID、设备序列号(SerialNumber)、设备传感器(传感器数量)、本地存储权限</td>  
            <td>作弊监控</td>  
            <td>用于数据统计作弊监控</td>  
            <td>https://www.openinstall.io/privacy.html</td>  
        </tr>  
        <tr>  
            <td>openinstall</td>  
            <td>io.openinstall.sdk、com.fm.openinstall</td>  
            <td>IMEI、IDFA、OAID、Mac地址</td>  
            <td>移动广告效果监测</td>  
            <td>用户传入或系统API采集,用于移动广告效果监测</td>  
            <td>https://www.openinstall.io/privacy.html</td>  
        </tr>  
        </tbody>  
    </table>
继续阅读 »

2个安卓应用因为隐私被下架了,重新按照要求完善了隐私sdk:

<tbody>  
            <tr>  
                <td>uni-app(5+、web2app)</td>  
                <td>io.dcloud</td>  
                <td>基础模块</td>  
                <td>android.permission.INTERNET  
                    android.permission.ACCESS_NETWORK_STATE  
                    android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG  
                    android.permission.READ_PHONE_STATE</td>  
                <td>存储的个人文件,设备信息(IMEI、ANDROID_ID、DEVICE_ID、IMSI),网络信息</td>  
                <td>https://ask.dcloud.net.cn/article/36937</td>  
            </tr>  
            <tr>  
                <td>阿里weexSDK</td>  
                <td>com.taobao</td>  
                <td>uni-app基础模块默认集成,用于渲染uniapp的nvue页面引擎</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储的个人文件</td>  
                <td>http://doc.weex.io/zh</td>  
            </tr>  
            <tr>  
                <td>Fresco图库</td>  
                <td>com.facebook.fresco</td>  
                <td>用于nvue页面加载图片使用</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储的个人文件</td>  
                <td>https://www.fresco-cn.org/</td>  
            </tr>  
            <tr>  
                <td>glide图库</td>  
                <td>com.bumptech.glide</td>  
                <td>用于图片预览使用</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储的个人文件</td>  
                <td>http://bumptech.github.io/glide/</td>  
            </tr>  
            <tr>  
                <td>gif-drawable</td>  
                <td>pl.droidsonroids.gif</td>  
                <td>加载gif图</td>  
                <td>android.permission.WRITE_EXTERNAL_STORAGE  
                    android.permission.READ_EXTERNAL_STORAG</td>  
                <td>存储文件</td>  
                <td>https://github.com/koral--/android-gif-drawable</td>  
            </tr>  
            <tr>  
                <td>fastjson</td>  
                <td>com.alibaba.fastjson</td>  
                <td>JSON解析</td>  
                <td>无</td>  
                <td>无</td>  
                <td>https://github.com/alibaba/fastjson</td>  
            </tr>  
            <tr>  
                <td>移动安全联盟</td>  
                <td>OAID</td>  
                <td>com.bun.miitmdid、com.zui.opendeviceidlibrary</td>  
                <td>获取oaid</td>  
                <td>无</td>  
                <td>设备信息</td>  
                <td>http://www.msa-alliance.cn/col.jsp?id=105</td>  
            </tr>  
        <tr>  
            <td>个推·消息推送</td>  
            <td>com.igexin</td>  
            <td>消息推送</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.VIBRATE  
                android.permission.GET_TASKS  
                android.permission.QUERY_ALL_PACKAGEs</td>  
            <td>存储的个人文件、设备信息(IMEI、MAC、ANDROID_ID、DEVICE_ID、IMSI)、应用已安装列表、网络信息</td>  
            <td>http://docs.getui.com/privacy</td>  
        </tr>  
        <tr>  
            <td>微信开放平台</td>  
            <td>com.tencent.mm</td>  
            <td>登录、分享、支付(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE</td>  
            <td>存储的个人文件、网络信息</td>  
            <td>https://weixin.qq.com/cgi-bin/readtemplate?lang=zh_CN&t=weixin_agreement&s=privacy</td>  
        </tr>  
        <tr>  
            <td>新浪开放平台</td>  
            <td>com.sina.weibo</td>  
            <td>登录、分享(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE</td>  
            <td>存储的个人文件、网络信息</td>  
            <td>https://weibo.com/signup/v5/privacy?spm=a1zaa.8161610.0.0.4f8776217Wu8R1</td>  
        </tr>  
            <tr>  
                <td>支付宝开放平台</td>  
                <td>com.alipay</td>  
                <td>登录、分享(请根据具体使用目的填写)</td>  
                <td>android.permission.ACCESS_NETWORK_STATE  
                    android.permission.ACCESS_WIFI_STATE</td>  
                <td>网络信息 设备id IP地址 OAID IMSI</td>  
                <td>https://render.alipay.com/p/c/k2cx0tg8</td>  
            </tr>  
        <tr>  
            <td>高德开放平台</td>  
            <td>com.amap.api, com.loc, com.autonavi</td>  
            <td>实现定位/展现地图(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_COARSE_LOCATION  
                android.permission.ACCESS_FINE_LOCATION  
                android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.CHANGE_WIFI_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.ACCESS_LOCATION_EXTRA_COMMANDS</td>  
            <td>存储的个人文件、位置信息、读取手机状态和身份、网络信息</td>  
            <td>https://lbs.amap.com/agreement/compliance</td>  
        </tr>  
        <tr>  
            <td>百度开放平台</td>  
            <td>com.baidu</td>  
            <td>实现定位/展现地图(请根据具体使用目的填写)</td>  
            <td>android.permission.ACCESS_COARSE_LOCATION  
                android.permission.ACCESS_FINE_LOCATION  
                android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.CHANGE_WIFI_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.ACCESS_LOCATION_EXTRA_COMMANDS  
                android.permission.READ_LOGS  
                android.permission.WRITE_SETTINGS  
                android.permission.MOUNT_UNMOUNT_FILESYSTEM</td>  
            <td>存储的个人文件、位置信息、读取手机状态和身份、网络信息</td>  
            <td>https://map.baidu.com/zt/client/privacy/index.html</td>  
        </tr>  
        <tr>  
            <td>uni-AD</td>  
            <td></td>  
            <td>基础广告</td>  
            <td>设备品牌、型号、操作系统版本、OAID、分辨率、IMEI、android ID、SIM 卡 IMSI 信息、应用名称、应用包名、应用版本号、网络信息、应用安装列表、位置信息</td>  
            <td>android.permission.ACCESS_NETWORK_STATE  
                android.permission.READ_PHONE_STATE  
                android.permission.ACCESS_COARSE_LOCATION</td>  
            <td>广告投放合作,广告归因、反作弊、安全  隐私协议</td>  
            <td>https://doc.dcloud.net.cn/markdown-share-docs/1d821cdd3cdf2681045ec4be94bc8404/</td>  
        </tr>  
        <tr>  
            <td>腾讯浏览服务SDK</td>  
            <td>com.tencent.tbs、com.tencent.smtt</td>  
            <td>x5内核渲染webview</td>  
            <td>android.permission.WRITE_EXTERNAL_STORAGE  
                android.permission.ACCESS_NETWORK_STATE  
                android.permission.ACCESS_WIFI_STATE  
                android.permission.READ_PHONE_STATE</td>  
            <td>存储的个人文件、读取手机状态和身份、网络信息</td>  
            <td>https://x5.tencent.com/docs/privacy.html</td>  
        </tr>  
        <tr>  
            <td>openinstall</td>  
            <td>io.openinstall.sdk、com.fm.openinstall</td>  
            <td>设备品牌、设备型号、操作系统版本、IP地址、粘贴板(剪切板)</td>  
            <td>数据统计和分析</td>  
            <td>用于数据统计和分析</td>  
            <td>https://www.openinstall.io/privacy.html</td>  
        </tr>  
        <tr>  
            <td>openinstall</td>  
            <td>io.openinstall.sdk、com.fm.openinstall</td>  
            <td>Android ID、设备序列号(SerialNumber)、设备传感器(传感器数量)、本地存储权限</td>  
            <td>作弊监控</td>  
            <td>用于数据统计作弊监控</td>  
            <td>https://www.openinstall.io/privacy.html</td>  
        </tr>  
        <tr>  
            <td>openinstall</td>  
            <td>io.openinstall.sdk、com.fm.openinstall</td>  
            <td>IMEI、IDFA、OAID、Mac地址</td>  
            <td>移动广告效果监测</td>  
            <td>用户传入或系统API采集,用于移动广告效果监测</td>  
            <td>https://www.openinstall.io/privacy.html</td>  
        </tr>  
        </tbody>  
    </table>
收起阅读 »

关于应用转让后升级中心(uni-upgrade-center)的使用问题

升级中心

应用转让后使用升级中心出现的问题

应用关联的 uniCloud 云服务空间 是绑定 HBuilderX 账号的。因此当应用转让后,如果无法再关联转让前所属账号的云服务空间,

则会导致用户已安装的转让前版本无法升级至转让后账号发布的新版本,可根据以下步骤处理:

  1. 应用转让后,使用转让后所属账号在 uni-admin 升级中心发布一个新的版本(如果已经发布过,这一步骤可以省略)。有以下注意事项:

    • appId 要和转让前保持一致
    • wgt、整包更新均可
    • iOS 端 要上架到 AppStore
  2. 在转让前应用所使用的升级中心中,使用同样的数据发布一个新版本,有以下注意事项:

    • 如果应用已经在 uni-admin 的应用管理中删除,需要重新在应用管理中添加该应用
    • appId 要和转让前保持一致
    • 开启强制更新
  3. 应用更新成功后,后续正常使用升级中心即可

继续阅读 »

应用转让后使用升级中心出现的问题

应用关联的 uniCloud 云服务空间 是绑定 HBuilderX 账号的。因此当应用转让后,如果无法再关联转让前所属账号的云服务空间,

则会导致用户已安装的转让前版本无法升级至转让后账号发布的新版本,可根据以下步骤处理:

  1. 应用转让后,使用转让后所属账号在 uni-admin 升级中心发布一个新的版本(如果已经发布过,这一步骤可以省略)。有以下注意事项:

    • appId 要和转让前保持一致
    • wgt、整包更新均可
    • iOS 端 要上架到 AppStore
  2. 在转让前应用所使用的升级中心中,使用同样的数据发布一个新版本,有以下注意事项:

    • 如果应用已经在 uni-admin 的应用管理中删除,需要重新在应用管理中添加该应用
    • appId 要和转让前保持一致
    • 开启强制更新
  3. 应用更新成功后,后续正常使用升级中心即可

收起阅读 »

1024、双十一双节福利 | 个推开发运营产品免费用

消息推送

024程序员节如约而至,双十一大促也于今日正式开启。个推重磅推出“注册有礼”活动,为开发者送上双节专属福利!

10月24日-11月11日

4大开发运营产品注册免费用,还可0元参与抽大奖

立即前往个推开发者中心完成注册,领取奖品

继续阅读 »

024程序员节如约而至,双十一大促也于今日正式开启。个推重磅推出“注册有礼”活动,为开发者送上双节专属福利!

10月24日-11月11日

4大开发运营产品注册免费用,还可0元参与抽大奖

立即前往个推开发者中心完成注册,领取奖品

收起阅读 »

直播预告 | 数据指标体系搭建秘诀,产品/运营/数据分析师都需要掌握√

科学完善的数据指标体系是企业开展数字化运营管理、打造数据驱动型组织的重要支撑。为帮助企业破解数据指标体系建设过程中遇到的难题,进一步拓展数据化运营思路,个推TechDay“治数训练营”系列直播课第三期《数据指标体系设计与开发实战》即将上线。

10月26日(下周三)19:00-20:00,来自个推治数平台部的数据架构师将为您深入浅出分享数据指标体系设计的思路和方法,手把手教学,带大家跑通数据指标体系建设全流程、轻松掌握数据化运营策略。产品、运营、数据开发、数据分析师,都值得一看~

立即预约直播,还有超多福利等你拿!

继续阅读 »

科学完善的数据指标体系是企业开展数字化运营管理、打造数据驱动型组织的重要支撑。为帮助企业破解数据指标体系建设过程中遇到的难题,进一步拓展数据化运营思路,个推TechDay“治数训练营”系列直播课第三期《数据指标体系设计与开发实战》即将上线。

10月26日(下周三)19:00-20:00,来自个推治数平台部的数据架构师将为您深入浅出分享数据指标体系设计的思路和方法,手把手教学,带大家跑通数据指标体系建设全流程、轻松掌握数据化运营策略。产品、运营、数据开发、数据分析师,都值得一看~

立即预约直播,还有超多福利等你拿!

收起阅读 »

在uni-app中使用官方的axios发起请求

uni.request

简介

由于axios底层使用xhr发起请求,并不适用于各平台的小程序。好在axios提供了适配器选项,让我们可以兼容小程序平台,使其底层使用uni.request发起请求。

为了更好的代码复用,我将自己写好的适配器发布到了npm上,方便大家使用。

项目源码很简单,感兴趣的可以前往github或者gitee查看,如果觉得好用的话,请记得帮忙点个start

源码地址

github
gitee

npm地址

npm

安装

安装 uniapp-axios-adapter

推荐使用pnpm进行包管理。

  pnpm/npm i uniapp-axios-adapter  
  # 或者 yarn add uniapp-axios-adapter

安装 axios

我们在包里添加了任何版本的axios作为依赖,如果你不想使用最新版本的axios,可以自行安装指定版本的axios配合我们的UniAdapter来使用,tree-shaking不会将本包依赖的axios打包进生产环境中

axios v1.0+尚不稳定,推荐安装0.27.2版本

  pnpm/npm i axios@0.27.2  
  # 或者 yarn add axios@0.27.2

使用

我们按需导出了UniAdapter适配器,并且默认导出了使用了该适配器的axios,你可以自行使用适配器,也可以直接使用我们导出的 axios

自行使用适配器

指定axios的适配器adapter为本适配器即可,其余用法与axios保持一致

import axios from "axios";  
import { UniAdapter } from "uniapp-axios-adapter";  

// 每次请求都创建一个新的实例  
const request = axios.create({  
  baseURL: "https://example.com",  
  timeout: 10000,  
  adapter: UniAdapter, // 指定适配器  
});

示例 1 设置请求拦截器与响应拦截器

// src/utils/http.js 中  
import axios from "axios";  
import { UniAdapter } from "uniapp-axios-adapter";  

const request = axios.create({  
  baseURL: "https://example.com",  
  timeout: 10000,  
  adapter: UniAdapter,  
});  

request.interceptors.request.use((config) => {  
  //带上token  
  config.headers["Authorization"] = "token";  
  return config;  
});  

request.interceptors.response.use((response) => {  
  // 统一处理响应,返回Promise以便链式调用  
  if (response.status === 200) {  
    const { data } = response;  
    if (data && data.code === 200) {  
      return Promise.resolve(data);  
    } else {  
      return Promise.reject(data);  
    }  
  } else {  
    return Promise.reject(response);  
  }  
});  

export default request;
// 具体业务代码文件中  
import http from 'src/utils/http.js' // 上一步封装axios的路径中  

http({  
  url: 'example/api/test'  
  method: 'get',  
  params: {  
    id: 123,  
  }  
})  

http({  
  url: 'example/api/test'  
  method: 'post',  
  data: {  
    id: 123,  
  }  
})  

使用开箱即用的 axios

添加拦截器的方式

// http.js中  
import axios from "uniapp-axios-adapter";  
const request = axios.create({  
  baseURL: "https://example.com",  
  timeout: 10000,  
});  

request.interceptors.request.use((config) => {  
  //带上token  
  config.headers["Authorization"] = "token";  
  return config;  
});  

request.interceptors.response.use((response) => {  
  // 统一处理响应,返回Promise以便链式调用  
  if (response.status === 200) {  
    const { data } = response;  
    if (data && data.code === 200) {  
      return Promise.resolve(data);  
    } else {  
      return Promise.reject(data);  
    }  
  } else {  
    return Promise.reject(response);  
  }  
});  

export default request;

直接使用

// 业务代码中  
import axios from "uniapp-axios-adapter";  
axios.get({  
  url: "https://example.com/api/getUserById",  
  params: {  
    id: 1,  
  },  
});

更新日志

点击查看

TODO

  • 压缩打包,减小体积
  • 适配uni.downloadFileuni.uploadFile
继续阅读 »

简介

由于axios底层使用xhr发起请求,并不适用于各平台的小程序。好在axios提供了适配器选项,让我们可以兼容小程序平台,使其底层使用uni.request发起请求。

为了更好的代码复用,我将自己写好的适配器发布到了npm上,方便大家使用。

项目源码很简单,感兴趣的可以前往github或者gitee查看,如果觉得好用的话,请记得帮忙点个start

源码地址

github
gitee

npm地址

npm

安装

安装 uniapp-axios-adapter

推荐使用pnpm进行包管理。

  pnpm/npm i uniapp-axios-adapter  
  # 或者 yarn add uniapp-axios-adapter

安装 axios

我们在包里添加了任何版本的axios作为依赖,如果你不想使用最新版本的axios,可以自行安装指定版本的axios配合我们的UniAdapter来使用,tree-shaking不会将本包依赖的axios打包进生产环境中

axios v1.0+尚不稳定,推荐安装0.27.2版本

  pnpm/npm i axios@0.27.2  
  # 或者 yarn add axios@0.27.2

使用

我们按需导出了UniAdapter适配器,并且默认导出了使用了该适配器的axios,你可以自行使用适配器,也可以直接使用我们导出的 axios

自行使用适配器

指定axios的适配器adapter为本适配器即可,其余用法与axios保持一致

import axios from "axios";  
import { UniAdapter } from "uniapp-axios-adapter";  

// 每次请求都创建一个新的实例  
const request = axios.create({  
  baseURL: "https://example.com",  
  timeout: 10000,  
  adapter: UniAdapter, // 指定适配器  
});

示例 1 设置请求拦截器与响应拦截器

// src/utils/http.js 中  
import axios from "axios";  
import { UniAdapter } from "uniapp-axios-adapter";  

const request = axios.create({  
  baseURL: "https://example.com",  
  timeout: 10000,  
  adapter: UniAdapter,  
});  

request.interceptors.request.use((config) => {  
  //带上token  
  config.headers["Authorization"] = "token";  
  return config;  
});  

request.interceptors.response.use((response) => {  
  // 统一处理响应,返回Promise以便链式调用  
  if (response.status === 200) {  
    const { data } = response;  
    if (data && data.code === 200) {  
      return Promise.resolve(data);  
    } else {  
      return Promise.reject(data);  
    }  
  } else {  
    return Promise.reject(response);  
  }  
});  

export default request;
// 具体业务代码文件中  
import http from 'src/utils/http.js' // 上一步封装axios的路径中  

http({  
  url: 'example/api/test'  
  method: 'get',  
  params: {  
    id: 123,  
  }  
})  

http({  
  url: 'example/api/test'  
  method: 'post',  
  data: {  
    id: 123,  
  }  
})  

使用开箱即用的 axios

添加拦截器的方式

// http.js中  
import axios from "uniapp-axios-adapter";  
const request = axios.create({  
  baseURL: "https://example.com",  
  timeout: 10000,  
});  

request.interceptors.request.use((config) => {  
  //带上token  
  config.headers["Authorization"] = "token";  
  return config;  
});  

request.interceptors.response.use((response) => {  
  // 统一处理响应,返回Promise以便链式调用  
  if (response.status === 200) {  
    const { data } = response;  
    if (data && data.code === 200) {  
      return Promise.resolve(data);  
    } else {  
      return Promise.reject(data);  
    }  
  } else {  
    return Promise.reject(response);  
  }  
});  

export default request;

直接使用

// 业务代码中  
import axios from "uniapp-axios-adapter";  
axios.get({  
  url: "https://example.com/api/getUserById",  
  params: {  
    id: 1,  
  },  
});

更新日志

点击查看

TODO

  • 压缩打包,减小体积
  • 适配uni.downloadFileuni.uploadFile
收起阅读 »

h5 Array buffer allocation failed 解决方案

Array buffer allocation failed
多半是因为你在自己的static目录下存放着一个无法解析的目录,我就是因为失误不小心将一个下载历史的文件拖了进去,导致这个错误,大家细心检查一下就可以了

Array buffer allocation failed
多半是因为你在自己的static目录下存放着一个无法解析的目录,我就是因为失误不小心将一个下载历史的文件拖了进去,导致这个错误,大家细心检查一下就可以了

scroll-view没有效果

scroll_view

小纪录

1.问题:
在使用scroll-view的时候没有效果拖拽不动

2.解决方式:
scroll-view是需要加高度或者宽度的,加在外层的view或内层的view是没有用的。

3.示例代码:
<view>
<scroll-view scroll-y="true" :scroll-top="0" style="height: 500upx;">
<view></view>
</scroll-view>
</view>

继续阅读 »

小纪录

1.问题:
在使用scroll-view的时候没有效果拖拽不动

2.解决方式:
scroll-view是需要加高度或者宽度的,加在外层的view或内层的view是没有用的。

3.示例代码:
<view>
<scroll-view scroll-y="true" :scroll-top="0" style="height: 500upx;">
<view></view>
</scroll-view>
</view>

收起阅读 »

我给自己的uniapp添加了多端多扩展名管理代码的能力

条件编译

因为我们计划支持多端开发,每个平台的小程序都会上线,而很多接口的参数需要自己处理,有时候兼容性问题更是让人头大,不知不觉项目内的条件编译高达数百处,维护起来极为困难,因此,我在阅读了《京喜小程序最佳实践》后发现多平台多端文件是个不错的功能,于是自己加进来了,效果是我引入文件```javascript
import xxx from '@/platform/xxx/index'

然后通过写的webpack插件,比如我运行的支付宝小程序,运行时会解析为```javascript  
@/platform/xxx/index.mp-alipay

这样就可以尽情书写js了,而单个Vue文件内不会参杂过多的js部分条件编译

继续阅读 »

因为我们计划支持多端开发,每个平台的小程序都会上线,而很多接口的参数需要自己处理,有时候兼容性问题更是让人头大,不知不觉项目内的条件编译高达数百处,维护起来极为困难,因此,我在阅读了《京喜小程序最佳实践》后发现多平台多端文件是个不错的功能,于是自己加进来了,效果是我引入文件```javascript
import xxx from '@/platform/xxx/index'

然后通过写的webpack插件,比如我运行的支付宝小程序,运行时会解析为```javascript  
@/platform/xxx/index.mp-alipay

这样就可以尽情书写js了,而单个Vue文件内不会参杂过多的js部分条件编译

收起阅读 »