uniapp使用相關(guān)技術(shù)要點

1 升級/更新

uniapp升級/更新的文檔

評論區(qū)有提供一個更新插件:更新插件治专,支持整包更新、熱更新堵泽,支持vue3 支持打開安卓、蘋果應(yīng)用市場深员,wgt靜默更新辽话。
插件地址

uniapp安卓包升級未生效

主要參考上這個文章里,對于dcloud_control.xml文件的處理勤篮,對于debug和syncDebug都要設(shè)置成false乳附。不然就有可能升級不生效内地。

uniapp更新版本

uni-app離線包更新

uni-app離線包更新 (導(dǎo)出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'導(dǎo)出失敗
  • 注意:需要npm以及cnpm命令來執(zhí)行模塊綁定阱缓。
npm install -g cnpm --registry=https://registry.npm.taobao.org

如果報錯:沒有權(quán)限,則在命令前添加sudo举农,輸入密碼即可荆针。

npm ERR! It is likely you do not have the permissions to access this file as the current user

如果上述操作執(zhí)行成功后,再次發(fā)布仍然沒有導(dǎo)出資源颁糟。則可以執(zhí)行如下命令:

cnpm install
  • 注意:在這之前還可以執(zhí)行如下命令
npm install

導(dǎo)出成功铅乡,信息如下:

[HBuilder] 20:18:10.187 項目 'app-demo-uniapp'導(dǎo)出成功律秃,路徑為:/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

  • 工程結(jié)構(gòu)
---- 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

  • 工程結(jié)構(gòu)
---- app
    ---- src
    ---- libs
    ---- build.gradle
---- build.gradle
---- gradle

說明:androids離線工程建議自定義工程篮洁,然后將uniapp提供的DEMO下的libs拷貝到app下libs目錄中涩维,再在app下的build.gradle中對需要用到的庫進(jìn)行配置(不需要的不要引入,從而減少安裝包大朽至弧)即可激挪。

3 安裝到API使用

uni-app從安裝到運行,簡單使用

HTML5Plus

uni-app API

common.ajax

Mui

  • 參考:

平臺區(qū)分判斷:

如果是原生比如Android和iOS的開發(fā)锋叨,應(yīng)該需要使用如下來判斷

   // #ifdef APP-PLUS

如下這個是瀏覽器的判斷

      // #ifdef H5

這個是判斷代碼在那個環(huán)境(app垄分,瀏覽器,小程序)里運行娃磺,小程序里面又細(xì)分了平臺薄湿,
這個官網(wǎng)有明確的文檔。

uniapp檢測網(wǎng)絡(luò)變化

獲取應(yīng)用的版本號

  • 獲取應(yīng)用的版本號的不同
plus.runtime.version
plus.runtime.getProperty

說明:
plus.runtime.getProperty:從前端代碼的manifest.json中獲取version
plus.runtime.version:需要配置Android/iOS原生工程對應(yīng)參數(shù)

注意:由于HBuilder支持熱更新(APP增量更新)偷卧,而增量更新不依賴原生工程豺瘤,所以做APP更新升級的時候,獲取版本號最好從plus.runtime.getProperty獲取听诸。

4 事件監(jiān)聽和觸發(fā)

事件監(jiān)聽和觸發(fā)

uniapp監(jiān)聽Android手機右滑事件

5 Storage存儲

html Storage

  • html和vue通信方式:
    (1)在html中使用如下方式獲茸蟆:
let progress = plus.storage.getItem('progresschange');

(2)在App.vue中使用如下設(shè)置:

uni.setStorageSync(key, data);

說明:這里是在cookie.js中封裝了上述方法,實際調(diào)用如下:
cookie.set('progresschange', res.progress);

(3)注意:在App.vue中使用如下設(shè)置晌梨,暫時拿不到值桥嗤,不知道為什么:

plus.storage.setItem('progresschange', res.progress);

說明:找到原因,通過對API的官方介紹仔蝌,發(fā)現(xiàn)這個API的value的類型必須為string泛领。而上面設(shè)置的為number類型。

plus.storage.setItem('progresschange', res.progress.toString());

uniapp獲取ios/android存儲數(shù)據(jù)

6 JSON和Console

解析Object為JSON對象

  • 可以使用如下來解析Object為JSON對象敛惊,并從對象里獲取data的值渊鞋。
var progressVar = JSON.parse(progress).data; 

-uniapp toJSON

Uni-App離線打包輸出Console.log信息

  • 只需要修改 dcloud_control.xml 文件的<hbuilder>標(biāo)簽添加debug 和 syncDebug 如圖所示:
<hbuilder debug="true" syncDebug="true">
<apps>
    <app appid="__UNI__XXXXX" appver=""/>
</apps>
</hbuilder>
  • ios修改control.xml文件中的同樣標(biāo)簽即可。

  • 特別注意:
    (1)調(diào)試的時候瞧挤,如果重新運行APP锡宋,可能需要卸載掉手機已有APP,然后再重新安裝特恬,不然可能代碼修改會失效员辩。
    (2)正式打包的時候,這兩個要設(shè)置為false或者去掉鸵鸥,不然會導(dǎo)致熱更新/升級失效奠滑。

  • 參考:
    https://blog.csdn.net/u010227042/article/details/115676438

uniapp轉(zhuǎn)對象為json字符串

  • 對象轉(zhuǎn)字符串
var str = JSON.stringify(Obj);

obj 替換成你要轉(zhuǎn)的對象

  • 字符串轉(zhuǎn)對象
var str1 = JSON.parse(str);

str 替換成你要轉(zhuǎn)的字符串

7 微信登錄

unipp(iOS)微信授權(quán)登錄跳轉(zhuǎn)到其他APP

  • 問題:
    手機同時安裝有自己公司開發(fā)的兩個應(yīng)用,其中一個APP通過微信授權(quán)登錄完成后會跳轉(zhuǎn)到另一個APP妒穴。

  • 排查:
    (1)APP在配置微信登錄的時候宋税,只改了weixinoauth(官方文檔介紹這是HBuilder 3.2.0之前的配置),而沒有改weixin配置讼油。
    (2)修改Universal Link杰赛。
    (3)查看info.plist文件下 URL types 下的Item(比如A工程為Item 3),其中的URL Schemes還是配置的為B工程的參數(shù)矮台。


    image.png

8 一鍵登錄

關(guān)于一鍵登錄

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

說明:當(dāng)返回結(jié)果的provider有提供“univerify”即說明一鍵登錄可以使用。

  • 預(yù)登錄失敵皆巍:
10:20:09.084 preLogin fail err: , [Object] {"errMsg":"preLogin:fail -20203預(yù)登錄失敗","errCode":30005,"code":30005,"appid":"pPyZWvH3Fa6PXba10aJ009","metad...}  at assets/js/login.js:131

原因:一鍵登錄的庫導(dǎo)入的時候蛤迎,漏掉了aar后綴,導(dǎo)致沒有導(dǎo)入包內(nèi)含友。

implementation files('libs/oauth-univerify-release.aar')
  • 注意:一鍵登錄需要插入SIM卡替裆,才能生效:

  • iOS的一鍵登錄,需要導(dǎo)入庫窘问,如下3個:
    UniVerify.framework辆童、libGTCommonSDK-1.2.2.0.a、GeYanSdk.framework

9 阿里云云空間

阿里云云空間云函數(shù)創(chuàng)建

  • 上傳部署惠赫,報錯:
11:39:02.828 [阿里云:]正在上傳云函數(shù)get-phone-number...
11:39:02.847 [阿里云:]云函數(shù)get-phone-number上傳失敗把鉴。失敗原因:請先選擇一個云服務(wù)空間。儿咱。

原因:由于本地HBuilder X登錄的是我自己的賬號纸镊,但是阿里云云空間申請的是另一個開發(fā)賬號,所以在阿里云云空間進(jìn)行關(guān)聯(lián)的時候就關(guān)聯(lián)不上概疆。

  • 由于新的項目逗威,沒有加入,所以報錯:
11:46:10.856 [阿里云:demo-cloud]云函數(shù)get-phone-number上傳失敗岔冀。失敗原因:此應(yīng)用 DCloud APPID 為 __UNI__XXXXXX 凯旭,您不是這個應(yīng)用的項目成員。1使套、聯(lián)系這個應(yīng)用的所有者罐呼,請求加入項目成員(https://dev.dcloud.net.cn可設(shè)置項目成員);2侦高、重新在manifest.json中生成自己的APPID嫉柴。

原因:這個還是需要在另一個開發(fā)賬號的創(chuàng)建的工程上去創(chuàng)建云函數(shù)。目前本地創(chuàng)建的屬于我個人的項目奉呛,所以Dcloud appid不一致计螺。

  • 云函數(shù),調(diào)試接口瞧壮,報錯:
[getPhoneNumber/ac141c151641282245358181067/39ms/ERROR] errCode: 1001 | errMsg: getPhoneNumber參數(shù)access_token值不可為空
Error: errCode: 1001 | errMsg: getPhoneNumber參數(shù)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

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)
        }
}}

說明:前端調(diào)用非常方便登馒,代碼非常簡潔。

iOS

(1)定義協(xié)議類
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第一個參數(shù)為需要回調(diào)給前端的參數(shù);第二個參數(shù)表示是否保活麦射,如果設(shè)置為NO蛾娶,則回調(diào)調(diào)用一次即被銷毀,而設(shè)置為YES潜秋,則執(zhí)行回調(diào)后仍然繼續(xù)存在蛔琅,比如下載進(jìn)度回調(diào)時就需要多次調(diào)用callback。

2)協(xié)議類和UniModule類
如果沒有特殊情況下半等,協(xié)議類只需要設(shè)置一個即可。而UniModule類可以根據(jù)不同的功能做不同的自定義呐萨。

(3)配置Info.plist


image.png

說明:協(xié)議類和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"
        }
      ]
    }
  ]
}

Native.js

  • Native.js技術(shù)谜悟,簡稱NJS,是一種將手機操作系統(tǒng)的原生對象轉(zhuǎn)義北秽,映射為JS對象葡幸,在JS里編寫原生代碼的技術(shù)。
    說明:Native.js技術(shù)與插件方式相比贺氓,優(yōu)點在于不需要做額外配置蔚叨,直接通過plus提供的封裝接口來調(diào)用原生工程的API(包括系統(tǒng)的或者自定義的)。缺點在于它是直接在前端代碼里嵌套調(diào)用原生API辙培,導(dǎo)致代碼臃腫蔑水,調(diào)用繁瑣,不夠靈活扬蕊。

  • 示例:

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')
     }
}

說明:上面調(diào)用自定義類的時候搀别,兩者是有一些差別的,iOS是直接引入的類名尾抑,而Android是需要包名+類名歇父。

原生是否可以直接調(diào)用uniapp方法

plus5調(diào)用Android的自定義類方法

11 定位和地圖

uniapp獲取定位權(quán)限

uniapp地圖

  • 如果前端代碼使用地圖時使用了nvue,則會有地圖不能顯示的問題:
    從dcloud官方文檔可知:
    開發(fā)者需要修改使用的地圖插件時再愈,需要修改dcloud_properties.xml文件的features節(jié)點下Maps節(jié)點value屬性的配置庶骄,高德地圖和百度地圖的配置只能保留一個
    百度地圖暫時不支持 nvue map 標(biāo)簽

  • API使用:
    根據(jù)官方文檔可知,如果使用uni.getLocation方法践磅,百度地圖/高德地圖都可以单刁。
    如果使用uni.chooseLocation方法,目前APP端只支持高德地圖。

  • 從百度地圖切到高德地圖:
    1.app下build.gradle下添加百度/高德的appkey羔飞,并在dependency下切換百度/高德的implementation對應(yīng)的庫文件
    2.修改dcloud_properties.xml文件的features節(jié)點下Maps節(jié)點value屬性的配置肺樟,高德地圖和百度地圖的配置只能保留一個
    3.AndroidManifest.xml下配置百度/高德的權(quán)限以及對應(yīng)的配置項

  • iOS:引入高德地圖時,同樣需要引入nvue相關(guān)庫

plus.maps API

uniapp通過經(jīng)緯度獲取地理位置

騰訊地圖API

uniapp獲取定位失敗逻淌。

  • assets/data目錄下dcloud_properties.xml文件么伯,features節(jié)點下添加:
<feature name="Maps" value="io.dcloud.js.map.JsMapPluginImpl"></feature>
Copy to clipboardErrorCopied
services節(jié)點下添加:

<service name="Maps"   value="io.dcloud.js.map.MapInitImpl" />

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

12 文件處理

uni.chooseFile

17:23:38.536  API `chooseFile` is not yet implemented __ERROR 

參考:
https://ask.dcloud.net.cn/question/125325

uniapp的預(yù)覽文件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

  • 如下為前端代碼調(diào)用uni.saveFile的日志:
    日志中"savedFilePath"對應(yīng)的路徑為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

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 如果您需要在生產(chǎn)環(huán)境關(guān)閉上面的日志牲剃,請 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 當(dāng)前是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 獲取系統(tǒng)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調(diào)試問題:

apps_131584 當(dāng)前使用的設(shè)備信息如下:
該 UserID 從未上報過證書ID 和設(shè)備 Token,請檢查雄可。

uniapp接入IM離線消息

14 其他

uniapp不彈toast

uniapp navigator

uni-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

uni-simple-router

mac查看nodejs版本

uniapp設(shè)置Android狀態(tài)欄

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包內(nèi)部文件夾結(jié)構(gòu)不一樣戏仓。
HBuilder的zip內(nèi)部是直接文件分布疚宇,目前Jenkins打包時的zip內(nèi)部是先有www文件夾路徑,www內(nèi)部有文件赏殃。

處理:通過如下命令來處理文件夾壓縮

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

執(zhí)行:

npm WARN using --force Recommended protections disabled.

原因:版本太高導(dǎo)致
使用命令降低版本即可:
npm install npm@6.14.10 -g

當(dāng)前版本:

npm@8.1.1 /usr/local/lib/node_modules/npm

當(dāng)前環(huán)境無法運行“Vue3”版本的uni-app應(yīng)用敷待!

uniapp錄音

uniapp播放音視頻

unipush和個推

uniapp配置VideoPlayer無反應(yīng)

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包仁热,之前沒有遇到這個問題榜揖,剛刪掉就正常了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市举哟,隨后出現(xiàn)的幾起案子思劳,更是在濱河造成了極大的恐慌,老刑警劉巖妨猩,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潜叛,死亡現(xiàn)場離奇詭異,居然都是意外死亡壶硅,警方通過查閱死者的電腦和手機威兜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庐椒,“玉大人椒舵,你說我怎么就攤上這事《蟛牵” “怎么了逮栅?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵悴势,是天一觀的道長窗宇。 經(jīng)常有香客問我,道長特纤,這世上最難降的妖魔是什么军俊? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮捧存,結(jié)果婚禮上粪躬,老公的妹妹穿的比我還像新娘。我一直安慰自己昔穴,他們只是感情好镰官,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吗货,像睡著了一般泳唠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宙搬,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天笨腥,我揣著相機與錄音,去河邊找鬼勇垛。 笑死脖母,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的闲孤。 我是一名探鬼主播谆级,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哨苛?” 一聲冷哼從身側(cè)響起鸽凶,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎建峭,沒想到半個月后玻侥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡亿蒸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年凑兰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片边锁。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡姑食,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茅坛,到底是詐尸還是另有隱情音半,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布贡蓖,位于F島的核電站曹鸠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏斥铺。R本人自食惡果不足惜彻桃,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晾蜘。 院中可真熱鬧邻眷,春花似錦、人聲如沸剔交。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岖常。三九已至驯镊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間腥椒,已是汗流浹背阿宅。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笼蛛,地道東北人洒放。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像滨砍,于是被迫代替她去往敵國和親往湿。 傳聞我的和親對象是個殘疾皇子妖异,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容