微信小程序突然版本就变了

微信小程序突然版本就变了,第1张

这个问题遇到多次了,很多人单看这句话提示,会去检查自己的微信版本,其实这个跟微信版本没有关系,这是微信小程序的基础库版本过高造成的。

去小程序的开发后台设置这里更改一下版本库到2212, 亲测这个版本pc是可以打开微信小程序的。

但是这里会有一个bug,就是,微信最近不是回收了这个权限吗, wxgetUserProfile({

desc: “获取你的昵称、头像、地区及性别”,

success: res => {}})

就是微信后台不会再给我们返回用户头像 昵称了。 改造了一下,让用户主动触发去上传头像,昵称。

<button open-type="chooseAvatar" bindchooseavatar="onChooseAvatar" style="width: 200rpx;padding: 0;margin: 0 auto;">

1

1

点击,可更改 点击更新 onChooseAvatar(e) { consolelog(e) const { avatarUrl } = edetail wxgetFileSystemManager()readFile({ filePath: edetailavatarUrl , //选择返回的相对路径 encoding: 'base64', //编码格式 success: res => { //成功的回调 // consolelog('data:image/png;base64,' + resdata) thissetData({ base64img:'data:image/png;base64,' + resdata }) } }) thissetData({ avatarUrl, }) wxsetStorageSync('img', edetailavatarUrl ) }, handleusername(e){ consolelog(e) thissetData({ username: edetailvalue }) wxsetStorageSync('username', edetailvalue ) },

这有涉及到另一个问题,因为 open-type=“chooseAvatar” pc端也有最低版本库要求,2245,(当初这里还折磨了我很久,我当时用的版本库是2212,手机能获取头像,但是pc死活不能,后来在社区交流发现是版本库的设置问题。 所以记录一下走过的坑吧~~)

这就很尴尬了,我为了获取头像,那么我得升级版本库。但是为了pc端能打开小程序,我又得降级版本库。。。 那么取其一,还是降级为2212了。 小程序获取头像在真机上获取吧。

微信小游戏如何实现强制更新版本

点滴 admin 2个月前 (10-12) 923次浏览 已收录 0个评论

在做微信小程序的时候,深知版本更新的重要,对于微信小游戏自然也相当的重要。

那么怎么在微信小游戏里面实现强制更新版本呢?

小程序更新机制

未启动时更新

开发者在管理后台发布新版本的小程序之后,如果某个用户本地有小程序的历史版本,此时打开的可能还是旧版本。微信客户端会有若干个时机去检查本地缓存的小程序有没有更新版本,如果有则会静默更新到新版本。总的来说,开发者在后台发布新版本之后,无法立刻影响到所有现网用户,但最差情况下,也在发布之后 24 小时之内下发新版本信息到用户。用户下次打开时会先更新最新版本再打开。

启动时更新

小程序每次冷启动时,都会检查是否有更新版本,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。

如果需要马上应用最新版本,可以使用 wxgetUpdateManager API 进行处理。

const updateManager = wxgetUpdateManager()

updateManageronCheckForUpdate(function (res) {

// 请求完新版本信息的回调

consolelog(reshasUpdate)

})

updateManageronUpdateReady(function () {

wxshowModal({

title: '更新提示',

content: '新版本已经准备好,是否重启应用?',

success(res) {

if (resconfirm) {

// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启

updateManagerapplyUpdate()

}

}

})

})

updateManageronUpdateFailed(function () {

// 新版本下载失败

})

微信小游戏是有离线缓存的机制,也就是说如果这台手机之前玩过某个游戏,再打开游戏的时候是先加载启动手机本地缓存住的代码包,这个代码包是旧的,之后才会在后台向微信服务器下载最新的代码包。

微信小游戏上线后,新开发了一个功能或修复了一个重大Bug,想让用户打开游戏的时候就下载运行最新的代码包,而不是运行旧的代码包。

有没有解决办法呢?当然是有的!微信小游戏提供了一个 api wxgetUpdateManager() 来解决这个问题

核心方法:

UpdateManageronCheckForUpdate(function callback)

监听该事件后微信向后台检查更新结果完会回调callback方法,如果有更新的版本,回调参数里hasUpdate属性为true。

微信在小程序冷启动时自动检查更新,不需由开发者主动触发。

UpdateManageronUpdateReady(function callback)

监听该事件后微信下载完新版的代码包时会回调callback方法。客户端主动触发下载(无需开发者触发),下载成功后回调

UpdateManagerapplyUpdate()

在onUpdateReady下载完新代码包后调用该方法强制小程序重启并使用新版本。

特别注意:

微信小游戏基础库 需要1990以上版本才支持。针对老版本客户端需要做好兼容。

该更新机制只是在游戏冷启动的时候会触发,热启动的时候是不会进行更新判断的。

微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试。

字节小游戏、QQ小游戏、百度小游戏的更新机制和微信小游戏是一样的。

目前总结解决方法:同时需要设置模块的函数,函数都可放置在utiljs中去。

首先:

一、在utiljs中放入如下两组函数

1 设置点击后多久不能再次 *** 作该

function throttle(fn, gapTime) {

  if (gapTime == null || gapTime == undefined) {

    gapTime = 1500

  }

  let _lastTime = null

  // 返回新的函数

  return function () {

    let _nowTime = + new Date()

    if (_nowTime - _lastTime > gapTime || !_lastTime) {

      fnapply(this, arguments)  //将this和参数传给原函数

      _lastTime = _nowTime

    }

  }

}

2 设置加载动画

function showLoading(message) {

  if (wxshowLoading) {    // 基础库 110 微信656版本开始支持,低版本需做兼容处理

    wxshowLoading({

      title: message, mask: true

    });

  } else {    // 低版本采用Toast兼容处理并将时间设为20秒以免自动消失

    wxshowToast({

      title: message, icon: 'loading', mask: true, duration: 20000

    });

  }

}

function hideLoading() {

  if (wxhideLoading) {    // 基础库 110 微信656版本开始支持,低版本需做兼容处理

    wxhideLoading();

  } else {

    wxhideToast();

  }

}

并且将其导出作为页面使用:

moduleexports = {

  throttle: throttle,

  showLoading: showLoading,

  hideLoading: hideLoading,

}

二、将函数引入页面使用

const util = require('//utils/utiljs');

即可。

新建文件requestjs,将请求的封装方法写在里面

页面调用,在页面的js文件中引用

小程序默认请求超时时间是60秒,等待时间有点长,我们可以在appjson中进行设置

每个页面请求的时候都要引用封装,还是有点麻烦。注意到小程序页面都可以获取appjs的实例(const app = getApp()),所以可以改一下封装,将封装方法直接暴露出去,在appjs中再配置POST/GET等请求;请求的url也可以抽出来写在一起,方便查找和修改。自己试一下吧~

//觉得有用的话,点个喜欢再走嘛(不要脸jpg)

在微信小程序中使用Echarts需要进行一些额外的配置才能正确显示,以下是可能的解决方法:

确认echarts库是否已正确安装,可以在uniapp的依赖管理器中查看echarts是否已被正确安装。

在uniapp中,需要先引入Echarts组件库,在页面中进行调用。可以在页面的 json 文件中添加以下配置:

css

Copy code

{

"usingComponents": {

"ec-canvas": "@echarts-weixin/ec-canvas"

}

}

确保使用的Echarts版本是支持微信小程序的版本,可以使用以下命令安装:

kotlin

Copy code

npm install echarts@^400 --save

npm install echarts-gl@^110 --save

npm install echarts-liquidfill@^111 --save

在使用Echarts的页面中,需要初始化echarts实例,以及将实例绑定到页面的canvas元素上,可以参考以下示例代码:

kotlin

Copy code

import as echarts from 'echarts';

export default {

data() {

return {

ec: {

lazyLoad: true // 延迟加载

}

}

},

onLoad() {

thisecComponent = thisselectComponent('#mychart');

thisecComponentinit((canvas, width, height, dpr) => {

// 初始化echarts实例

const chart = echartsinit(canvas, null, {

width: width,

height: height,

devicePixelRatio: dpr // 像素比

});

// 设置options

chartsetOption({

// options 配置

});

// 将图表实例绑定到页面上

thischart = chart;

thiscanvas = canvas;

return chart;

});

}

}

希望这些解决方法能够帮助你解决问题。

1、字符串转换成数字:

C语言库函数:atoi 实现了此功能。

int atoi(const char nptr);

函数说明: 参数nptr字符串,如果第一个非空格字符存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。

代码如下:

#include <stdioh>

#include <stringh>

#include <stdboolh>

/

功能:string转int

注意:

1、字符串是否为空;

2、忽略\t 或空格;

3、溢出判断;

4、输入字符串只有“+”或“-”号时;

5、扫描参数src字符串,跳过前面的空格字符,直到遇上数

字或正负符号才开始做转换,而再遇到非数字或字符串结束时

('\0')才结束转换,并将结果返回。

/

int convertionStringToInt(char src)

{

bool flag=false;

long num=0; /使用long类型,数据溢出情形/

int minus=0;

if((NULL == src)||('\0'== src)) //判断如惨字符串指针是否为空

{

return 0;

}

if(('\t' == src)||(' ' == src)) //忽略tab字符和空格字符

{

src ++;

}

if('-' == src) //判断是否是‘+’ 或 ‘-’符号

{

flag=true;

src++;

}

else if('+' == src)

{

src++;

}

minus=flag-1:1;

while('\0' != src)

{

if(('0' <= src)&&('9' >= src))

{

num= num10+minus((src)-'0');

if((!flag && num > 0x7FFFFFFF)

|| (flag && num < (signed int)0x80000000)) //判断转换后的整型数是否溢出,注意正负数均要判断

{

num = 0;

break;

}

src++;

}

else

{

break; //遇到非数字字符时结束转换

}

}

return num;

}

int main()

{

char data[8][15]={"4673","15234234234","-3489","+9776","ab67","123bd","+","-"};

int i=0;

int val=0;

for(i=0;i<8;i++)

{

printf("Before data[%ld]=%s ",i,data[i]);

val=convertionStringToInt(data[i]);

printf("After Convert=%d\n",val);

}

return 0;

}

微信小程序发布到正式版后,有些错误需要查看服务器日志定位问题。平常开发的时候可以通过开发者工具查看,上线就没法查了。

const log = require('//logjs');

这样就可以在需要输出日志的地方使用

loginfo("--------detail----onload--"+JSONstringify(options));

7 官方资料可以通过”文档“进去查看地址

>

如果是单纯地使用uniapp做app或者h5开发,可以直接在上传的时候 unichooseImage 获取到的最后修改日期,那么可以使用其作为拍摄日期。

但是,一切的一切都源于微信小程序的接口封装,使得不得不写两套。

这就不得不提到照片的exif了,可交换图像文件格式(英语:Exchangeable image file format,官方简称Exif,(>

以上就是关于微信小程序突然版本就变了全部的内容,包括:微信小程序突然版本就变了、小程序游戏怎么变新用于、微信小程序遇坑——多次点击页面重复加载及数据重复提交等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9315025.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存