1 升级/更新
uniapp升级/更新的文档
- uni-app资源在线升级/热更新 以及 uni-app 整包升级/更新方案
官方文档参考:
https://ask.dcloud.net.cn/article/35667
https://ask.dcloud.net.cn/article/34972
评论区有提供一个更新插件:更新插件,支持整包更新、热更新,支持vue3 支持打开安卓、苹果应用市场,wgt静默更新。
插件地址
uniapp安卓包升级未生效
主要参考上这个文章里,对于dcloud_control.xml文件的处理,对于debug和syncDebug都要设置成false。不然就有可能升级不生效。
uniapp更新版本
uni-app离线包更新
- 参考:
https://ask.dcloud.net.cn/article/35763
https://nativesupport.dcloud.net.cn/AppDocs/download/android
uni-app离线包更新 (导出dist离线资源):
[HBuilder] 20:16:03.275 项目 'app-demo-uniapp' 编译成功。
[HBuilder] 20:16:03.275 文件查找失败:'vue-jsonp' at main.js:15
[HBuilder] 20:16:04.366 项目 'app-demo-uniapp'导出失败
- 注意:需要npm以及cnpm命令来执行模块绑定。
npm install -g cnpm --registry=https://registry.npm.taobao.org
如果报错:没有权限,则在命令前添加sudo,输入密码即可。
npm ERR! It is likely you do not have the permissions to access this file as the current user
如果上述操作执行成功后,再次发布仍然没有导出资源。则可以执行如下命令:
cnpm install
- 注意:在这之前还可以执行如下命令
npm install
导出成功,信息如下:
[HBuilder] 20:18:10.187 项目 'app-demo-uniapp'导出成功,路径为:/Users/hh/Documents/webviewapp-demo-uniapp/app-demo-uniapp/unpackage/resources/__UNI__XXXXX/www
[HBuilder] 20:18:10.193 提示:本wgt文件由HBuilderX 3.2.16版本生成,运行的基座sdk也需配套相同版本,否则在手机端部分功能可能无法正常使用。详见 http://ask.dcloud.net.cn/article/35627
2离线工程
iOS
- 工程结构
---- app-demo-ios
---- Application
---- HBuilder
---- app-demo-ios.xcodeproj
---- SDK
---- Bundles
---- inc
---- Libs
---- control.xml
说明:iOS离线工程建议以uniapp提供的DEMO工程为参考,将工程放置于DEMO路径下(与demo里的其他示例工程同级)。如此,可以和示例工程一样同样共享SDK里的库和资源文件,且工程的Build Settings下的Search Paths配置可以和示例工程保持一致,减少不必要的错误。
Android
- 工程结构
---- app
---- src
---- libs
---- build.gradle
---- build.gradle
---- gradle
说明:androids离线工程建议自定义工程,然后将uniapp提供的DEMO下的libs拷贝到app下libs目录中,再在app下的build.gradle中对需要用到的库进行配置(不需要的不要引入,从而减少安装包大小)即可。
3 安装到API使用
uni-app从安装到运行,简单使用
HTML5Plus
uni-app API
common.ajax
Mui
- 参考:
- Mui v3.7.2 (http://dev.dcloud.net.cn/mui)
平台区分判断:
如果是原生比如Android和iOS的开发,应该需要使用如下来判断
// #ifdef APP-PLUS
如下这个是浏览器的判断
// #ifdef H5
这个是判断代码在那个环境(app,浏览器,小程序)里运行,小程序里面又细分了平台,
这个官网有明确的文档。
uniapp检测网络变化
获取应用的版本号
- 获取应用的版本号的不同
plus.runtime.version
plus.runtime.getProperty
说明:
plus.runtime.getProperty:从前端代码的manifest.json中获取version
plus.runtime.version:需要配置Android/iOS原生工程对应参数
注意:由于HBuilder支持热更新(APP增量更新),而增量更新不依赖原生工程,所以做APP更新升级的时候,获取版本号最好从plus.runtime.getProperty获取。
4 事件监听和触发
事件监听和触发
-
uniapp事件监听和触发
-
js事件监听和触发
-
html5+事件监听和触发
-
dcloud事件监听和触发
uniapp监听Android手机右滑事件
参考:
参考链接如下包括Android/iOS滑动返回事件:
https://ask.dcloud.net.cn/question/101333
https://www.html5plus.org/doc/zh_cn/webview.html#plus.webview.WebviewStyles
5 Storage存储
html Storage
- html和vue通信方式:
(1)在html中使用如下方式获取:
let progress = plus.storage.getItem('progresschange');
(2)在App.vue中使用如下设置:
uni.setStorageSync(key, data);
说明:这里是在cookie.js中封装了上述方法,实际调用如下:
cookie.set('progresschange', res.progress);
(3)注意:在App.vue中使用如下设置,暂时拿不到值,不知道为什么:
plus.storage.setItem('progresschange', res.progress);
说明:找到原因,通过对API的官方介绍,发现这个API的value的类型必须为string。而上面设置的为number类型。
plus.storage.setItem('progresschange', res.progress.toString());
uniapp获取ios/android存储数据
参考:
https://jingyan.baidu.com/article/046a7b3e7491d2f9c27fa996.htmluniapp本地数据库_App/uni-app离线本地存储方案
参考:
参考链接
6 JSON和Console
解析Object为JSON对象
- 可以使用如下来解析Object为JSON对象,并从对象里获取data的值。
var progressVar = JSON.parse(progress).data;
-uniapp toJSON
- JSON.stringify
Uni-App离线打包输出Console.log信息
- 只需要修改 dcloud_control.xml 文件的<hbuilder>标签添加debug 和 syncDebug 如图所示:
<hbuilder debug="true" syncDebug="true">
<apps>
<app appid="__UNI__XXXXX" appver=""/>
</apps>
</hbuilder>
ios修改control.xml文件中的同样标签即可。
特别注意:
(1)调试的时候,如果重新运行APP,可能需要卸载掉手机已有APP,然后再重新安装,不然可能代码修改会失效。
(2)正式打包的时候,这两个要设置为false或者去掉,不然会导致热更新/升级失效。参考:
https://blog.csdn.net/u010227042/article/details/115676438
uniapp转对象为json字符串
- 对象转字符串
var str = JSON.stringify(Obj);
obj 替换成你要转的对象
- 字符串转对象
var str1 = JSON.parse(str);
str 替换成你要转的字符串
7 微信登录
unipp(iOS)微信授权登录跳转到其他APP
问题:
手机同时安装有自己公司开发的两个应用,其中一个APP通过微信授权登录完成后会跳转到另一个APP。-
排查:
(1)APP在配置微信登录的时候,只改了weixinoauth(官方文档介绍这是HBuilder 3.2.0之前的配置),而没有改weixin配置。
(2)修改Universal Link。
(3)查看info.plist文件下 URL types 下的Item(比如A工程为Item 3),其中的URL Schemes还是配置的为B工程的参数。
8 一键登录
关于一键登录
2022-01-10 12:05:12.845339+0800 demo-app-ios[36551:13055048] <Weex>[log]WXBridgeContext.m:1310, jsLog: preLogin fail err: ---COMMA------BEGIN:JSON---{"errMsg":"preLogin:fail provider not find","errCode":0,"code":0}---END:JSON--- at assets/js/login.js:133 __LOG
参考:
https://baijiahao.baidu.com/s?id=1712308991464664814&wfr=spider&for=pc
https://blog.csdn.net/E86huang/article/details/107100073
https://ask.dcloud.net.cn/question/131159?notification_id-84803__rf-false__item_id-25486
- 一键登录可以使用的日志判断:
10:20:08.726 getProvider success res, [Object] {"errMsg":"getProvider:ok","service":"oauth","provider":["univerify","weixin","qq","sinaweibo","google","f...} at assets/js/login.js:110
说明:当返回结果的provider有提供“univerify”即说明一键登录可以使用。
- 预登录失败:
10:20:09.084 preLogin fail err: , [Object] {"errMsg":"preLogin:fail -20203预登录失败","errCode":30005,"code":30005,"appid":"pPyZWvH3Fa6PXba10aJ009","metad...} at assets/js/login.js:131
原因:一键登录的库导入的时候,漏掉了aar后缀,导致没有导入包内。
implementation files('libs/oauth-univerify-release.aar')
注意:一键登录需要插入SIM卡,才能生效:
iOS的一键登录,需要导入库,如下3个:
UniVerify.framework、libGTCommonSDK-1.2.2.0.a、GeYanSdk.framework
9 阿里云云空间
阿里云云空间云函数创建
- 上传部署,报错:
11:39:02.828 [阿里云:]正在上传云函数get-phone-number...
11:39:02.847 [阿里云:]云函数get-phone-number上传失败。失败原因:请先选择一个云服务空间。。
原因:由于本地HBuilder X登录的是我自己的账号,但是阿里云云空间申请的是另一个开发账号,所以在阿里云云空间进行关联的时候就关联不上。
- 由于新的项目,没有加入,所以报错:
11:46:10.856 [阿里云:demo-cloud]云函数get-phone-number上传失败。失败原因:此应用 DCloud APPID 为 __UNI__XXXXXX ,您不是这个应用的项目成员。1、联系这个应用的所有者,请求加入项目成员(https://dev.dcloud.net.cn可设置项目成员);2、重新在manifest.json中生成自己的APPID。
原因:这个还是需要在另一个开发账号的创建的工程上去创建云函数。目前本地创建的属于我个人的项目,所以Dcloud appid不一致。
- 云函数,调试接口,报错:
[getPhoneNumber/ac141c151641282245358181067/39ms/ERROR] errCode: 1001 | errMsg: getPhoneNumber参数access_token值不可为空
Error: errCode: 1001 | errMsg: getPhoneNumber参数access_token值不可为空
at Tt (/tmp/function/@dcloudio/serverless/lib/aliyun/uni-cloud.js:1:42161)
at exports.main (/tmp/function/__index.js:4:29)
at i (/tmp/function/index.js:1:2736)
at p (/tmp/function/index.js:1:3209)
at runUserFunction (/code/index.js:130:195499)
at (<anonymous>)
at _tickCallback (internal/process/next_tick.js:189:7)
参考:https://ask.dcloud.net.cn/question/125550
- 参考:
https://blog.csdn.net/wang_9909/article/details/115446039
https://ask.dcloud.net.cn/article/38708
https://cloud.tencent.com/developer/article/1801980
https://blog.csdn.net/li2635996169/article/details/115600060
10 uniapp和原生交互
requireNativePlugin
- uniapp和原生交互
前端代码示例:
let info = {'name': 'abc', 'age': 12}
let nativeplugin = uni. requireNativePlugin('nativeplugin')
nativeplugin.nativeCall('haha', info, (res) => {
if (res) {
console.log('res:' + res)
}
}}
说明:前端调用非常方便,代码非常简洁。
iOS
(1)定义协议类
NativeUniProxy.h
#import <Foundation/Foundation.h>
#import "UniPluginProtocol.h"
NS_ASSUME_NONNULL_BEGIN
@interface NativeUniProxy : NSObject<UniPluginProtocol>
@end
NS_ASSUME_NONNULL_END
NativeUniProxy.m
#import "NativeUniProxy.h"
@implementation NativeUniProxy
-(void)onCreateUniPlugin{
NSLog(@"TestPlugin 有需要初始化的逻辑可以放这里!");
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSLog(@"TestPlugin 有需要didFinishLaunchingWithOptions可以放这里!");
return YES;
}
@end
(2)定义UniModele类
NativeUniModule.h
#import <Foundation/Foundation.h>
#import "DCUniModule.h"
NS_ASSUME_NONNULL_BEGIN
@interface NativeUniModule : DCUniModule
@end
NS_ASSUME_NONNULL_END
NativeUniModule.m
#import "NativeUniModule.h"
@implementation NativeUniModule
UNI_EXPORT_METHOD(@selector(nativeCall:info:callback:))
- (void)nativeCall:(NSString *)params info:(NSDictionary *)info callback:(UniModuleKeepAliveCallback)callback
{
NSLog(@"nativeCall:%@, info:%@", params, info);
//other things
if (mapCallback) {
callback(@"result call mock", NO);
}
}
@end
说明:
1)callback
typedef void (^UniModuleKeepAliveCallback)(id result, BOOL keepAlive);
callback第一个参数为需要回调给前端的参数;第二个参数表示是否保活,如果设置为NO,则回调调用一次即被销毁,而设置为YES,则执行回调后仍然继续存在,比如下载进度回调时就需要多次调用callback。
2)协议类和UniModule类
如果没有特殊情况下,协议类只需要设置一个即可。而UniModule类可以根据不同的功能做不同的自定义。
(3)配置Info.plist
说明:协议类和UniModule类都需要在这里配置。
Android
(1)继承UniModule
package com.demo.apps.nativeSDK;
import android.app.Activity;
import android.util.Log;
import org.json.JSONObject;
import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;
public class NativeUniModule extends UniModule {
private static final String TAG = "demo.app: ";
/**
* @param params
* @param jsCallback
*/
@UniJSMethod(uiThread = true)
public void nativeCall(String params, JSONObject info, UniJSCallback jsCallback) {
Log.d(TAG, "native ===> " + params);
if (mUniSDKInstance.getContext() instanceof Activity) {
Log.d(TAG, "native ===> can start ");
//other things
// com.alibaba.fastjson.JSONObject result = new com.alibaba.fastjson.JSONObject();
// result.put("type", "native result:mock data");
// jsCallback.invoke(result);
}
}
}
(2)callback
同iOS,也有两个,一个是invoke,invokeAndKeepAlive(保活)。
(3)配置dcloud_uniplugins.json
路径为:app/sr/main/assets/apps/__UNI_XXXXX/www
{
"nativePlugins": [
{
"hooksClass": "",
"plugins": [
{
"type": "module",
"name": "nativeplugin",
"class": "com.demo.apps.nativeSDK.NativeUniModule"
},
{
"type": "module",
"name": "othernativeplugin",
"class": "com.demo.apps.nativeSDKOther.OtherNativeUniModule"
}
]
}
]
}
- 参考:
https://ask.dcloud.net.cn/article/35412
https://ask.dcloud.net.cn/article/35428
https://ask.dcloud.net.cn/article/35416
https://ask.dcloud.net.cn/article/35416
Native.js
Native.js技术,简称NJS,是一种将手机操作系统的原生对象转义,映射为JS对象,在JS里编写原生代码的技术。
说明:Native.js技术与插件方式相比,优点在于不需要做额外配置,直接通过plus提供的封装接口来调用原生工程的API(包括系统的或者自定义的)。缺点在于它是直接在前端代码里嵌套调用原生API,导致代码臃肿,调用繁琐,不够灵活。示例:
let system = uni.getSystemInfoSync()
if (system.platform == 'android') {
let util = plus.android.importClass('com.test.demo.app.TestUtil')
if (util) {
util.login('haha')
}
} else if (system.platform == 'ios') {
let tool = plus.ios.importClass('TestTools')
if (tool) {
tool.setTestValue('haha')
}
}
说明:上面调用自定义类的时候,两者是有一些差别的,iOS是直接引入的类名,而Android是需要包名+类名。
原生是否可以直接调用uniapp方法
- 参考:
https://blog.csdn.net/qq_38227017/article/details/122425864
https://blog.csdn.net/maimiho/article/details/107708593
plus5调用Android的自定义类方法
11 定位和地图
uniapp获取定位权限
uniapp地图
如果前端代码使用地图时使用了nvue,则会有地图不能显示的问题:
从dcloud官方文档可知:
开发者需要修改使用的地图插件时,需要修改dcloud_properties.xml文件的features节点下Maps节点value属性的配置,高德地图和百度地图的配置只能保留一个
百度地图暂时不支持 nvue map 标签API使用:
根据官方文档可知,如果使用uni.getLocation方法,百度地图/高德地图都可以。
如果使用uni.chooseLocation方法,目前APP端只支持高德地图。从百度地图切到高德地图:
1.app下build.gradle下添加百度/高德的appkey,并在dependency下切换百度/高德的implementation对应的库文件
2.修改dcloud_properties.xml文件的features节点下Maps节点value属性的配置,高德地图和百度地图的配置只能保留一个
3.AndroidManifest.xml下配置百度/高德的权限以及对应的配置项iOS:引入高德地图时,同样需要引入nvue相关库
plus.maps API
uniapp通过经纬度获取地理位置
- 参考:
https://www.html5plus.org/doc/zh_cn/maps.html#plus.maps.Map.reverseGeocode
http://t.zoukankan.com/hinux-p-11021999.html
https://blog.csdn.net/weixin_44052462/article/details/105135519
腾讯地图API
uniapp获取定位失败。
- assets/data目录下dcloud_properties.xml文件,features节点下添加:
<feature name="Maps" value="io.dcloud.js.map.JsMapPluginImpl"></feature>
Copy to clipboardErrorCopied
services节点下添加:
<service name="Maps" value="io.dcloud.js.map.MapInitImpl" />
- 参考:
https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/map
https://blog.csdn.net/sansanyuner/article/details/105218265
uni.getLocation获取位置信息失败
百度定位失败,日志信息:
D/baidu_location_service: baidu location service start1 ...20190617...24119
I/baidu_location_service: LocationAuthManager Authentication AUTHENTICATE_SUCC
D/baidu_location_service: baidu location service register ...
W/Settings: Setting airplane_mode_on has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
D/baidu_location_service: baidu location service stop ...
D/baidu_location_service: baidu location service has stoped ...
直接使用HBuilderX跑真机,错误信息:
10:06:38.220 ---> <UPopup> at uni_modules/uview-ui/components/u-popup/u-popup.vue:1
10:06:38.243 <UPicker> at uni_modules/uview-ui/components/u-picker/u-picker.vue:1
10:06:38.266 <DatetimePicker> at uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue:1
10:06:38.289 <DatePicker> at components/uni-picker/uni-datePicker.vue:1
10:06:38.309 at marketing/crm/visit/comm/addVisit.vue:1
10:06:45.734 [JS Framework] Failed to execute the callback function:
10:06:45.758 TypeError: Cannot read property 'removeEventListener' of undefined
10:06:45.782 reportJSException >>>> exception function:__WEEX_CALL_JAVASCRIPT__, exception:JavaScript execute error!Uncaught TypeError: Cannot read property 'removeEventListener' of undefined
- 参考:
https://blog.csdn.net/weixin_43343144/article/details/98085487
https://blog.csdn.net/qq_33718648/article/details/113862439
12 文件处理
uni.chooseFile
uni.chooseFile问题
17:23:38.536 API `chooseFile` is not yet implemented __ERROR
参考:
https://ask.dcloud.net.cn/question/125325
uniapp的预览文件ios不起作用
参考:
https://ask.dcloud.net.cn/question/116965
https://lequ7.com/guan-yu-uniapp-kua-ping-tai-wen-jian-zai-xian-yu-lan-jie-jue-fang-an-si-android-he-ios-yuan-sheng-cha-jian.html
https://www.cnblogs.com/lizhao123/p/11498948.html
uni.saveFile
- 如下为前端代码调用uni.saveFile的日志:
日志中"savedFilePath"对应的路径为uniapp特有,iOS沙盒中暂时找不到,不确定是不是uniap做了特殊的路径映射。
16:51:10.144 sy.app: downloadAndSaveFile download res:{"tempFilePath":"_doc/uniapp_temp_1649839860074/download/e18e6e9ee590525ec02179dfc6e0ebd1-Log07-10-22-15.txt","statusCode":200,"errMsg":"downloadFile:ok"} at utils/file.js:272
16:51:10.168 sy.app: downloadAndSaveFile save res:{"errMsg":"saveFile:ok","savedFilePath":"_doc/uniapp_save/16498398700410.txt"} at utils/file.js:278
- iOS中保存文件
报错:
2022-04-14 01:21:53.003730+0800 demo-app-ios[8296:2412596] sy.app: saveFileToLocalByPath fail: filePth:https://cos.ap-shanghai.myqcloud.com/6126-shanghai-007-shared-05-1256635546/1dc9-1400655679/bc4a-apps_131268/a1b4a05dc5d4ffe1cf5ed0adadf6ebcb-fileuploadtext.txt, toPath:/var/mobile/Containers/Data/Application/4ED63A5D-4C7B-490A-8082-172574448E68/Library/Caches/SavedFiles/a1b4a05dc5d4ffe1cf5ed0adadf6ebcb-fileuploadtext.txt, error:Error Domain=NSCocoaErrorDomain Code=262 "未能打开文件“a1b4a05dc5d4ffe1cf5ed0adadf6ebcb-fileuploadtext.txt”,因为不支持URL类型https。" UserInfo={NSURL=https://cos.ap-shanghai.myqcloud.com/6126-shanghai-007-shared-05-1256635546/1dc9-1400655679/bc4a-apps_131268/a1b4a05dc5d4ffe1cf5ed0adadf6ebcb-fileuploadtext.txt}
参考:
https://www.thinbug.com/q/32770050
uni.openDocument在iOS上打不开文件
13 腾讯即时通讯IM
tim-js-sdk: 腾讯即时通信IM
参考:
https://wenku.baidu.com/view/e3127bfcbaf3f90f76c66137ee06eff9aef8496a.html
https://blog.csdn.net/qq_43551801/article/details/122634641
//www.greatytc.com/p/2e9220ba61d5官方文档:
https://cloud.tencent.com/document/product/269/52962
https://cloud.tencent.com/document/product/269
https://web.sdk.qcloud.com/im/doc/zh-cn/tutorial-02-upgradeguideline.html
https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html#loginIM:报错日志
15:07:38.694 TIM 15:07:38 GMT+0800 (CST).360:TIM.VERSION: 2.17.1
15:07:38.714 API `getFileSystemManager` is not yet implemented
15:07:38.875 TIM 15:07:38 GMT+0800 (CST).517:TIM.VERSION: 2.17.1
15:07:39.314 %c uView V2.0.30 %c https://www.uviewui.com/
15:07:39.359 , color: #ffffff; background: #3c9cff; padding:5px 0;, color: #3c9cff;background: #ffffff; padding:5px 0; at node_modules/uview-ui/libs/config/config.js:6
15:07:39.674 TIM 15:07:39 GMT+0800 (CST).329:TIM.create
15:07:39.717 TIM 15:07:39 GMT+0800 (CST).378:SocketHandler._connect isWorkerEnabled:false socketID:48710914 url:wss://wss.im.qcloud.com/info?sdkappid=1400655679&instanceid=aa2d78c302e1fd61a2adce0ccd921d55&random=0.5302842571595281&platform=15&host=android
15:07:39.805 TIM 15:07:39 GMT+0800 (CST).460:SDK instanceID:aa2d78c302e1fd61a2adce0ccd921d55 SDKAppID:1400655679 host:android oversea:false inBrowser:false inMiniApp:true workerAvailable:false UserAgent:
15:07:39.832 TIM 15:07:39 GMT+0800 (CST).463:TIM.create ok
15:07:39.870 ________ ______ __ __ __ __ ________ _______
15:07:39.892 | \| \| \ / \| \ _ | \| \| \
15:07:39.916 \$$$$$$$$ \$$$$$$| $$\ / $$| $$ / \ | $$| $$$$$$$$| $$$$$$$\
15:07:39.937 | $$ | $$ | $$$\ / $$$| $$/ $\| $$| $$__ | $$__/ $$
15:07:39.957 | $$ | $$ | $$$$\ $$$$| $$ $$$\ $$| $$ \ | $$ $$
15:07:39.979 | $$ | $$ | $$\$$ $$ $$| $$ $$\$$\$$| $$$$$ | $$$$$$$\
15:07:40.000 | $$ _| $$_ | $$ \$$$| $$| $$$$ \$$$$| $$_____ | $$__/ $$
15:07:40.023 | $$ | $$ \| $$ \$ | $$| $$$ \$$$| $$ \| $$ $$
15:07:40.046 \$$ \$$$$$$ \$$ \$$ \$$ \$$ \$$$$$$$$ \$$$$$$$
15:07:40.089 at node_modules/tim-wx-sdk/tim-wx-friendship.js:1
15:07:40.109 %cIM 智能客服,随时随地解决您的问题 →_→ https://cloud.tencent.com/act/event/smarty-service?from=im-doc, color:#006eff at node_modules/tim-wx-sdk/tim-wx-friendship.js:1
15:07:40.133 %c从v2.11.2起,SDK 支持了 WebSocket,小程序需要添加受信域名!升级指引: https://web.sdk.qcloud.com/im/doc/zh-cn/tutorial-02-upgradeguideline.html, color:#ff0000 at node_modules/tim-wx-sdk/tim-wx-friendship.js:1
15:07:40.180 参考以下文档,会更快解决问题哦!(#^.^#)
15:07:40.226 SDK 更新日志: https://cloud.tencent.com/document/product/269/38492
15:07:40.270 SDK 接口文档: https://web.sdk.qcloud.com/im/doc/zh-cn/SDK.html
15:07:40.313 常见问题: https://web.sdk.qcloud.com/im/doc/zh-cn/tutorial-01-faq.html
15:07:40.362 反馈问题?戳我提 issue: https://github.com/tencentyun/TIMSDK/issues
15:07:40.403 如果您需要在生产环境关闭上面的日志,请 tim.setLogLevel(1)
15:07:40.426 at node_modules/tim-wx-sdk/tim-wx-friendship.js:1
15:07:40.446 TIM 15:07:39 GMT+0800 (CST).467:set level from 0 to 0
15:07:40.466 当前是APP at api/message/imApi.js:35
15:07:40.779 TIM 15:07:40 GMT+0800 (CST).429:SocketHandler._onOpen cost 1092 ms. socketID:48710914
15:07:40.799 TIM 15:07:40 GMT+0800 (CST).434:SocketHandler._resend reConnectFlag:false promiseMap.size:0 simpleRequestMap.size:0
15:07:41.526 Unhandled promise rejection
15:07:41.629 定位问题-接口报错信息error:, [Object] {"message":"request:ok","status":500,"response":{"data":{"timestamp":"2022-05-24 15:07:41","status":500,"e...} at utils/request.js:32
15:07:41.654 获取系统IM模块失败 at store/modules/im.js:223
15:07:42.395 定位问题-接口报错信息error:, [Object] {"message":"request:ok","status":500,"response":{"data":{"timestamp":"2022-05-24 15:07:42","status":500,"e...} at utils/request.js:32
15:07:42.396 IM_SDK 登录失败, [Object] {"timestamp":"2022-05-24 15:07:42","status":500,"error":"Internal Server Error","exception":"com.xxx.demo...} at store/modules/im.js:238
IM调试问题:
apps_131584 当前使用的设备信息如下:
该 UserID 从未上报过证书ID 和设备 Token,请检查。
uniapp接入IM离线消息
14 其他
uniapp不弹toast
- 参考:
https://blog.csdn.net/qq_36904182/article/details/116228334
https://blog.csdn.net/qq_32958797/article/details/88993900
https://blog.csdn.net/wangyl1995/article/details/108119106?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link&utm_relevant_index=3
uniapp navigator
- 参考:
https://uniapp.dcloud.io/component/navigator
http://www.hcoder.net/tutorials/info/id/1347/
https://www.cnblogs.com/ckfuture/p/14384042.html
https://uniapp.dcloud.io/component/navigation-bar
uni-list
- 这个功能菜单用uni-list做,参考:
https://hellouniapp.dcloud.net.cn/pages/extUI/list/list
uview
注意:这个轮子很好,很方便,赞。
uniapp配置tabBar没有显示
参考:
https://blog.csdn.net/wangzhenhuait/article/details/104309232
https://blog.csdn.net/qq_28004379/article/details/121160126?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ETopBlog-1.topblog&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ETopBlog-1.topblog
uni.hideTabBar无效
uniapp启动页面隐藏tabbar
uniapp 登录页隐藏tabbar
参考:
登录页隐藏
uni-simple-router
mac查看nodejs版本
uniapp设置Android状态栏
参考:
https://blog.csdn.net/qq_46018418/article/details/122904950
//www.greatytc.com/p/6bdfdc90f89cuniapp设置状态栏颜色
参考:
https://blog.csdn.net/qq_45018844/article/details/121267868
wgt安装失败
15:44:43.812 sy.shop: install fail, e:{"code":-1202,"message":"WGT安装包中manifest.json文件不存在"} at utils/console-custom.js:3
原因:wgt即zip,只是后缀名改了一下。
这里wgt安装失败,原因是,Jenkins打包时shell脚本压缩文件夹时zip包内部文件夹结构不一样。
HBuilder的zip内部是直接文件分布,目前Jenkins打包时的zip内部是先有www文件夹路径,www内部有文件。
处理:通过如下命令来处理文件夹压缩
if [ -d "www"]; then
zip -q -r www.zip .
echo 'zip www.zip successful!'
else
echo 'zip www.zip failure'
fi
原生APP制作wgt包使用的是zip哪个命令
uni-app的快速上手里的cli命令
npm清理缓存
npm cache clean -f
npm cache clean --force
- 参考:
https://blog.csdn.net/qq_41664096/article/details/121796617
https://blog.csdn.net/m0_62030960/article/details/120737899
执行:
npm WARN using --force Recommended protections disabled.
- 参考:
https://blog.csdn.net/weixin_46721287/article/details/122509279
//www.greatytc.com/p/b0814f3e497c
原因:版本太高导致
使用命令降低版本即可:
npm install npm@6.14.10 -g
当前版本:
npm@8.1.1 /usr/local/lib/node_modules/npm
当前环境无法运行“Vue3”版本的uni-app应用!
uniapp录音
- 参考:
https://www.gxlsystem.com/qianduan-4114.html
https://www.php.cn/uni-app/465919.html
https://blog.csdn.net/weixin_44020340/article/details/122100100
uniapp播放音视频
unipush和个推
lib.5plus.aar
参考:
https://ask.dcloud.net.cn/article/39119
uniapp配置VideoPlayer无反应
15 问题处理
xcode编译报错:
error: write /Users/hh/Library/Developer/Xcode/DerivedData/app-demo-ios-dcdjysptjjflydaxwrnaypfthnac/Build/Intermediates.noindex/ArchiveIntermediates/app-demo-ios/InstallationBuildProductsLocation/Applications/app-demo-ios.app/Pandora/apps/__UNI__XXXXX/www/__uniappchooselocation.html: Bad address (in target 'app-demo-ios' from project 'app-demo-ios')
- 原因:Pandora/apps/__UNI__XXXXX/下除了www文件夹外,还放了一个zip包,之前没有遇到这个问题,刚删掉就正常了。