美文网首页
uniapp 热更新实现方法 ios

uniapp 热更新实现方法 ios

作者: kid_add | 来源:发表于2020-07-28 16:35 被阅读0次


1.写在前面

1.1关于热更新是否影响应用上架

应用市场为了防止开发者不经市场审核许可,给用户提供违法内容,对热更新大多持排斥态度。 

但实际上热更新使用非常普遍,不管是原生开发中还是跨平台开发。 

Apple曾经禁止过jspatch,但没有打击其他的热更新方案,包括cordovar、react native、DCloud。封杀jspatch其实是因为jspatch有严重安全漏洞,可以被黑客利用,造成三方黑客可篡改其他App的数据。 

使用热更新需要注意: 

上架审核期间不要弹出热更新提示 

热更新内容使用https下载,避免被三方网络劫持 

不要更新违法内容、不要通过热更新破坏应用市场的利益,比如iOS的虚拟支付要老老实实给Apple分钱 

如果你的应用没有犯这些错误,应用市场是不会管的。 

2.实现步骤

2.1.基础准备

server: node js

client: vue js

ide:HBuilderX

uniapp 账户,appid

2.2.server端实现方式

2.2.1 准备新版本的wgt(参考 https://ask.dcloud.net.cn/article/35667 之“生成 App 资源升级包”)

2.2.2 准备nodejs环境,安装express(参考https://blog.csdn.net/wopelo/article/details/68925967

2.2.3 新建一个index.js

代码:

var express=require("express");

var serveStatic=require('serve-static');

var app=express();

app.use(serveStatic(__dirname));

var router = express.Router(); 

app.get('/', (req, res) => res.send('Hello World!'))

app.get('/update/', function(req, res) {  

    var appName = req.query.name;  

    var appVersion = req.query.version;  

    checkUpdate({  

        appName: appName,  

        appVersion: appVersion  

    }, function(error, result) {  

        if (error) {  

            throw error;  

        }  

        res.json(result);  

    });  

});

/*

wgtUrl:最新uin的wgt,存储在static目录下;注意:host,端口号,按情况自定义

update:控制变量,如果false,不更新‘否则更新

*/

function checkUpdate(params, callback) {  

    callback(null,{

        update: true, /

        wgtUrl: 'http://localhost:1234/static/__UNI__20CB4F1.wgt', 

    })  

}  

var http=require("http")

http.createServer(app).listen(1234,"127.0.0.1");

2.2.4 新建static文件夹,加入.wgt文件

    最终文件目录长这个样

2.2.5 执行命令 node index.js

2.3.client

2.3.1 在App.vue中的onlaunch结尾加入:

plus.runtime.getProperty(plus.runtime.appid, function(widgetInfo) {  

    uni.request({  

        url: 'http://127.0.0.1:1234/update/',  

        data: {  

            version: widgetInfo.version,  

            name: widgetInfo.name  

        },  

        success: (result) => {  

            var data = result.data;  

            if (data.update && data.wgtUrl) {

                console.log('nmd');

                uni.downloadFile({  

                    url: data.wgtUrl,  

                    success: (downloadResult) => {  

                        if (downloadResult.statusCode === 200) {  

                            plus.runtime.install(downloadResult.tempFilePath, {  

                                force: false  

                            }, function() {  

                                console.log('install success...');  

                                plus.runtime.restart();  

                            }, function(e) {  

                                console.error('install fail...');  

                            });  

                        } else {

                            console.log(downloadResult.statusCode);

                        }

                    }  

                }); 

2.3.2   Hbuild run 代码

相关文章

  • uniapp 热更新实现方法 ios

    1.写在前面 1.1关于热更新是否影响应用上架 应用市场为了防止开发者不经市场审核许可,给用户提供违法内容,对热更...

  • uniapp实现热更新

    后端(node.js koa2)

  • uniapp热更新(springboot实现后台)

    需要完成的功能,uniapp的热更新,原始app如下,需要在页面新加一行文字,然后实现热更新 实现原理 后台提供接...

  • Android热更新实现方式

    弄完iOS热更新实现方式,空闲时间想去弄弄Android的热更新,寻找一些资料后暂时得出以下热更新方法。尝试几中方...

  • 实现iOS热更新

    参考来自:http://www.jianshu.com/p/8cec322531aeJSPatch,也许也有很多人...

  • JSPatch 使用

    JSPatch以小巧的体积做到了让JS调用/替换任意OC方法,让iOS APP具备热更新的能力,在实现 JSPat...

  • iOS热更新实现方式

    苹果静止热更新,可惜我的是企业app,没有这些约束了,随便用。(当然有些热更新已经可以通过苹果审核了,比如JSPa...

  • 如何实现iOS热更新

    最近被苹果审核整怕了,每次提交版本都得等待一周到两周的审核时间,我是受不了这种速度了,于是决定研究有没有其他的方法...

  • 实现iOS图片等资源文件的热更新化

    实现iOS图片等资源文件的热更新化 系列专属github地址: https://github.com/ios122...

  • ReactNative App更新下载(Android+iOS)

    APP涉及到版本更新(非热更新),版本检测下载App,Android和iOS实现方式不同 1.Android直接和...

网友评论

      本文标题:uniapp 热更新实现方法 ios

      本文链接:https://www.haomeiwen.com/subject/ntafrktx.html