uniapp使用相关技术要点

1 升级/更新

uniapp升级/更新的文档

  • uni-app资源在线升级/热更新 以及 uni-app 整包升级/更新方案
    官方文档参考:
    https://ask.dcloud.net.cn/article/35667
    https://ask.dcloud.net.cn/article/34972

评论区有提供一个更新插件:更新插件,支持整包更新、热更新,支持vue3 支持打开安卓、苹果应用市场,wgt静默更新。
插件地址

uniapp安卓包升级未生效

  • 参考:
    https://my.oschina.net/u/2606060/blog/5253116

主要参考上这个文章里,对于dcloud_control.xml文件的处理,对于debug和syncDebug都要设置成false。不然就有可能升级不生效。

uniapp更新版本

  • 参考:
    https://www.cnblogs.com/yeziyou/p/13391349.html

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中对需要用到的库进行配置(不需要的不要引入,从而减少安装包大小)即可。

  • 参考(官方文档):
    https://nativesupport.dcloud.net.cn/AppDocs/README

3 安装到API使用

uni-app从安装到运行,简单使用

  • 参考:
    https://ask.dcloud.net.cn/article/38639

HTML5Plus

  • 参考:
    https://www.html5plus.org/doc/zh_cn/runtime.html

uni-app API

  • 参考:
    https://uniapp.dcloud.io/api/request/request?id=request

common.ajax

  • 参考:
    https://blog.csdn.net/qq_42014192/article/details/96837957

Mui

  • 参考:
  • Mui v3.7.2 (http://dev.dcloud.net.cn/mui)

平台区分判断:

如果是原生比如Android和iOS的开发,应该需要使用如下来判断

   // #ifdef APP-PLUS

如下这个是浏览器的判断

      // #ifdef H5

这个是判断代码在那个环境(app,浏览器,小程序)里运行,小程序里面又细分了平台,
这个官网有明确的文档。

uniapp检测网络变化

  • 参考:
    https://blog.csdn.net/weixin_44334013/article/details/119451633

获取应用的版本号

  • 获取应用的版本号的不同
plus.runtime.version
plus.runtime.getProperty

说明:
plus.runtime.getProperty:从前端代码的manifest.json中获取version
plus.runtime.version:需要配置Android/iOS原生工程对应参数

注意:由于HBuilder支持热更新(APP增量更新),而增量更新不依赖原生工程,所以做APP更新升级的时候,获取版本号最好从plus.runtime.getProperty获取。

  • 参考:
    https://ask.dcloud.net.cn/question/2674
    https://ask.dcloud.net.cn/question/8893

4 事件监听和触发

事件监听和触发

  • uniapp事件监听和触发

    • 参考:
      https://blog.csdn.net/weixin_42524824/article/details/119411903
  • js事件监听和触发

    • 参考:
      https://blog.csdn.net/changliangwl/article/details/82703251
  • html5+事件监听和触发

    • 参考:
      https://blog.csdn.net/weixin_35434041/article/details/117851947
  • dcloud事件监听和触发

    • 参考:
      https://www.kancloud.cn/ymsxxx/uniapp/2263062

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());
  • 参考:
    https://www.w3school.com.cn/html/html5_webstorage.asp

uniapp获取ios/android存储数据

  • 参考:
    https://jingyan.baidu.com/article/046a7b3e7491d2f9c27fa996.html

  • uniapp本地数据库_App/uni-app离线本地存储方案
    参考:
    参考链接

6 JSON和Console

解析Object为JSON对象

  • 可以使用如下来解析Object为JSON对象,并从对象里获取data的值。
var progressVar = JSON.parse(progress).data; 

-uniapp toJSON

  • 参考:
    https://blog.csdn.net/wsfgrdgh/article/details/108893805
  • JSON.stringify
    • 参考:
      https://www.runoob.com/js/javascript-json-stringify.html

Uni-App离线打包输出Console.log信息

  • 只需要修改 dcloud_control.xml 文件的标签添加debug 和 syncDebug 如图所示:


    


  • 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 替换成你要转的字符串

  • 参考:
    https://blog.csdn.net/xuelang532777032/article/details/52335851?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=2

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工程的参数。


    image.png

8 一键登录

关于一键登录

  • 参考:
    https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/oauth?id=%e4%b8%80%e9%94%ae%e7%99%bb%e5%bd%95

  • 一键登录,失败:

2022-01-10 12:05:12.845339+0800 demo-app-ios[36551:13055048] [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 ()
    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 
#import "UniPluginProtocol.h"

NS_ASSUME_NONNULL_BEGIN

@interface NativeUniProxy : NSObject

@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 
#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


image.png

说明:协议类和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是需要包名+类名。

  • 参考:
    https://ask.dcloud.net.cn/article/88
    https://www.cnblogs.com/Renyi-Fan/p/9381873.html

原生是否可以直接调用uniapp方法

  • 参考:
    https://blog.csdn.net/qq_38227017/article/details/122425864
    https://blog.csdn.net/maimiho/article/details/107708593

plus5调用Android的自定义类方法

  • 参考:
    https://www.xyhtml5.com/14688.html

11 定位和地图

uniapp获取定位权限

  • 参考:
    https://blog.csdn.net/qq_42778001/article/details/104922059

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

  • 参考:
    https://lbs.qq.com

uniapp获取定位失败。

  • assets/data目录下dcloud_properties.xml文件,features节点下添加:

Copy to clipboardErrorCopied
services节点下添加:


  • 参考:
    https://nativesupport.dcloud.net.cn/AppDocs/usemodule/androidModuleConfig/map
    https://blog.csdn.net/sansanyuner/article/details/105218265

uni.getLocation获取位置信息失败

  • 参考:
    https://blog.csdn.net/ly1075951090/article/details/108117147

百度定位失败,日志信息:

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 --->  at uni_modules/uview-ui/components/u-popup/u-popup.vue:1
10:06:38.243      at uni_modules/uview-ui/components/u-picker/u-picker.vue:1
10:06:38.266       at uni_modules/uview-ui/components/u-datetime-picker/u-datetime-picker.vue:1
10:06:38.289        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

  • 参考:
    https://uniapp.dcloud.io/api/media/file.html

  • 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上打不开文件

  • 参考:
    http://t.zoukankan.com/lizhao123-p-11498948.html
    https://ask.dcloud.net.cn/question/128518

13 腾讯即时通讯IM

tim-js-sdk: 腾讯即时通信IM

  • 参考:
    https://wenku.baidu.com/view/e3127bfcbaf3f90f76c66137ee06eff9aef8496a.html
    https://blog.csdn.net/qq_43551801/article/details/122634641
    https://www.jianshu.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#login

  • IM:报错日志

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,请检查。
  • 参考:
    https://cloud.tencent.com/document/product/269/38658

uniapp接入IM离线消息

  • 参考:
    https://blog.csdn.net/qq_37263130/article/details/121479451

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

  • 参考:
    https://www.uviewui.com/components/navbar.html

注意:这个轮子很好,很方便,赞。

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无效

  • 参考:
    https://ask.dcloud.net.cn/question/97758
    https://ask.dcloud.net.cn/question/65696

uniapp启动页面隐藏tabbar

  • 参考:
    https://owoii.com/archives/132.html

  • uniapp 登录页隐藏tabbar
    参考:
    登录页隐藏

uni-simple-router

  • 参考:
    https://hhyang.cn/v2/
    https://router.vuejs.org/zh/introduction.html

mac查看nodejs版本

  • 参考:
    https://blog.csdn.net/weixin_32862641/article/details/113403605

uniapp设置Android状态栏

  • 参考:
    https://blog.csdn.net/qq_46018418/article/details/122904950
    https://www.jianshu.com/p/6bdfdc90f89c

  • 参考:官方文档
    https://uniapp.dcloud.io/collocation/pages.html

  • uniapp设置状态栏颜色
    参考:
    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哪个命令

  • 参考:
    https://ask.dcloud.net.cn/question/132229
    https://ask.dcloud.net.cn/question/101175

uni-app的快速上手里的cli命令

  • 参考:
    https://blog.csdn.net/weixin_44872995/article/details/107907170

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
    https://www.jianshu.com/p/b0814f3e497c

原因:版本太高导致
使用命令降低版本即可:
npm install [email protected] -g

当前版本:

[email protected] /usr/local/lib/node_modules/npm

当前环境无法运行“Vue3”版本的uni-app应用!

  • 参考:
    https://blog.csdn.net/kuizuo12/article/details/123773936
    https://www.xyhtml5.com/15354.html

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播放音视频

  • 参考:
    https://www.php.cn/uni-app/482179.html

unipush和个推

  • 参考:
    https://ask.dcloud.net.cn/question/83485

  • lib.5plus.aar
    参考:
    https://ask.dcloud.net.cn/article/39119

uniapp配置VideoPlayer无反应

  • 参考:
    https://blog.csdn.net/qq285744011/article/details/123363298

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包,之前没有遇到这个问题,刚删掉就正常了。

你可能感兴趣的:(uniapp使用相关技术要点)