欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

uniapp开发中遇到的plus.runtime.appid问题

程序员文章站 2022-07-12 15:31:17
...

今天接手一个别人的项目,看代码看了一天,有个地方我很费解,上图
plus.runtime.appid 我寻思这是个啥?
uniapp开发中遇到的plus.runtime.appid问题
打印输出的结果 如下
uniapp开发中遇到的plus.runtime.appid问题
我把plus给打印了 结果如下,看不懂 很费解
uniapp开发中遇到的plus.runtime.appid问题
文字版如下 这是给人看的东西吗??

[native code] }","11":"function() { [native code] }","12":"function() { [native
code] }","13":"function() { [native code] }","14":"function() { [native code]
}","15":"function() { [native code] }","16":"function() { [native code]
}","17":"function() { [native code] }","18":"function() { [native code]
}","19":"function() { [native code]
}"},"hooks":{}}},"documentElement":{"ref":"_documentElement","type":"document","attr":{},"style":{}},"__$automator__":false,"__$compiler__":"uni-app"},"requireModule":"function()
{ [native code] }","importScript":"function() { [native code]
}","isRegisteredModule":"function() { [native code]
}","isRegisteredComponent":"function() { [native code]
}"},"weexBridge":{"preloadReady":"function() { [native code]
}","postMessage":"function() { [native code] }","execSync":"function() { [native
code] }","getConfigInfo":"function() { [native code]
}","evalJSFiles":"function() { [native code] }","uniReady":"function() { [native
code] }","removeAllEventListeners":"function() { [native code]
}","sendNativeEvent":"function() { [native code] }","pushDebugData":"function()
{ [native code] }","exec":"function() { [native code] }","getValue":"function()
{ [native code] }","getDotData":"function() { [native code]
}","addEventListener":"function() { [native code]
}","getRedirectInfo":"function() { [native code] }","log":"function() { [native
code] }","setDefaultFontSize":"function() { [native code]
}"},"globalEvent":{"addEventListener":"function() { [native code]
}","removeAllEventListeners":"function() { [native code]
}","removeEventListener":"function() { [native code]
}"},"tools":{"__UUID__":3,"UNKNOWN":-1,"IOS":0,"ANDROID":1,"platform":1,"debug":true,"UUID":"function()
{ [native code] }","extend":"function() { [native code]
}","typeName":"function() { [native code] }","isDate":"function() { [native
code] }","isArray":"function() { [native code] }","isDebug":"function() {
[native code] }","stringify":"function() { [native code]
}","isNumber":"function() { [native code]
}","getElementOffsetInWebview"

遂开始面向百度编程 这个东西是跟app的升级更新有关 其实我现在还是没有整太明白,但是有时候不怕百度就怕不知道咋百度,所以把我遇到的问题分享给大家,希望对你有帮助

粘贴原文如下————

uni-app 整包升级/更新方案

w微凉半秋

2019.10.31 21:40:00

注意:plus.runtime.appid,plus.runtime.version, plus.runtime.openURL()
在真机环境下才有效

使用 uni-app 开发,可将代码编译到iOS、Android、微信小程序等多个平台,升级时也需考虑多平台同步升级。

uni-app发布为小程序的升级模式较简单,只需将开发完的代码提交小程序后台,待审核通过后用户将自动升级 iOS/Android App
的升级需开发者自己处理,本文主要简介 App 的整包升级模式。 App
的资源热更新另见文档:http://ask.dcloud.net.cn/article/35667 接口约定
如下数据接口约定仅为示例,开发者可以自定义接口参数。 请求地址:https://www.example.com/update

请求方法:GET

请求数据:

    "appid": plus.runtime.appid,  
    "version": plus.runtime.version   }   ```

响应数据:

```javascript {  
    "status":1,//升级标志,1:需要升级;0:无需升级  
    "note": "修复bug1;\n修复bug2;",//release notes  
    "url": "http://www.example.com/uniapp.apk" //更新包下载地址   }  ```

客户端实现 App启动时,向服务端上报当前版本号,服务端判断是否提示升级。

在App.vue的onLaunch中,发起升级检测请求,如下:

```javascript onLaunch: function () {  
    //#ifdef APP-PLUS  
    var server = "https://www.example.com/update"; //检查更新地址  
    var req = { //升级检测数据  
        "appid": plus.runtime.appid,  
        "version": plus.runtime.version  
    };  
    uni.request({  
        url: server,  
        data: req,  
        success: (res) => {  
            if (res.statusCode == 200 && res.data.status === 1) {  
                uni.showModal({ //提醒用户更新  
                    title: "更新提示",  
                    content: res.data.note,  
                    success: (res) => {  
                        if (res.confirm) {  
                            plus.runtime.openURL(res.data.url);  
                        }  
                    }  
                })  
            }  
        }  
    })  
    //#endif   }   ```

注意:App的升级检测代码必须使用条件编译,否则在微信环境由于不存在plus相关API,将会报错。

服务端实现 根据客户端上报的版本号,比对服务端最新版本号,决定是否需要升级,若需升级则返回升级信息(rease notes、更新包地址等)

开发者可以根据服务端开发语言,自己实现升级检测逻辑,如下是一个php示例代码:

```javascript header("Content-type:text/json");   $appid =
$_GET["appid"];   $version = $_GET["version"]; //客户端版本号   $rsp =
array("status" => 0); //默认返回值,不需要升级   if (isset($appid) &&
isset($version)) {  
    if ($appid === "__UNI__123456") { //校验appid  
        if ($version !== "1.0.1") { //这里是示例代码,真实业务上,最新版本号及relase notes可以存储在数据库或文件中  
            $rsp["status"] = 1;  
            $rsp["note"] = "修复bug1;\n修复bug2;"; //release notes  
            $rsp["url"] = "http://www.example.com/uniapp.apk"; //应用升级包下载地址  
        }  
    }   }    echo json_encode($rsp);   exit;   ```

常见问题 版本检测需要打包app,真机运行基座无法测试。因为真机运行的plus.runtime.version是固定值。

原文地址:https://ask.dcloud.net.cn/article/34972


顺便把评论也粘贴过来

Han涛_ 205.06 17:43 我这样给后端传过去,后端拿到的数据一直是null

w微凉半秋
05.06 18:51 你取的前端有取到数据吗

Han涛_
05.07 13:43 @w晚风 发现问题了,后端设置的问题,谢谢
相关标签: html5 javascript