最近要在一個原生app的基礎(chǔ)上開發(fā)新功能,? 新功能和原app沒有太多交集, 考慮到原生app開發(fā)復(fù)雜,工期較長, 決定在原生app的基礎(chǔ)上整合uni小程序, 使用uniapp開發(fā)新功能, 在整合的過程中遇到了幾個問題, 這里記錄一下,
一.? uni小程序的文檔在3.5.3這個版本, 目前為止,他的文檔還沒有隨之修改,很多接口對不上, 第一次整合的時候遇到打開小程序閃退的問題, 也沒有具體的報錯信息, 這就很難調(diào)試,??
解決問題的方法是
根據(jù)他自帶的demo進行調(diào)試,
1.修改 targetSdkVersion<30
2. 將proguard.cfg和自己原有的文件整合,??
3. AndroidManifest.xml 別忘添加如下的activity
//uniapp 使用 <activity android:name="io.dcloud.PandoraEntryActivity" android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard" android:hardwareAccelerated="true" android:launchMode="singleTask" android:permission="com.miui.securitycenter.permission.AppPermissionsEditor" android:screenOrientation="user" android:theme="@style/DCloudTheme" android:windowSoftInputMode="adjustResize"> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <action android:name="android.intent.action.VIEW" /> <data android:scheme="h56131bcf" /> </intent-filter> </activity>
二.? 原生app,跳轉(zhuǎn)到小程序傳參問題,? 不能跳轉(zhuǎn)到tabBar頁面這個問題到目前為止, 一直還是沒有修復(fù), 那我就嘗試使用中轉(zhuǎn)頁面獲取參數(shù),? 不知道是這個3.5.3版本的問題還是怎么回事, 在瀏覽器可以獲取到中轉(zhuǎn)頁的數(shù)據(jù), 在原生app跳轉(zhuǎn)就不行, 于是采用了uniapp向宿主app發(fā)送消息事件獲取token參數(shù)的方案, 具體代碼如下
宿主原生App
DCUniMPSDK.getInstance().setOnUniMPEventCallBack { appid, event, data, callback ->
Log.i("cs", "onUniMPEventReceive event=$event")
//回傳數(shù)據(jù)給小程序
callback.invoke(O2SDKManager.instance().cQqrwToken)
}
val uniMPOpenConfiguration = UniMPOpenConfiguration()
uniMPOpenConfiguration.redirectPath = "pages/splash/splash"
DCUniMPSDK.getInstance().openUniMP(applicationContext, "__UNI__1A588F9", uniMPOpenConfiguration)
uni小程序
<template>
<view class="uni-container">
這是歡迎頁面, debug測試時顯示000<br />
qqrwToken:{{token}}
</view>
</template>
<script>
// TODO 修復(fù)Android v3 加載過慢問題
// #ifdef APP-PLUS
var domModule = weex.requireModule('dom');
domModule.addRule('fontFace', {
'fontFamily': "uniicons",
'src': "url('/static/uni.ttf')"
});
// #endif
export default {
data() {
return {
token:''
}
},
onLoad(e) {
var self = this;
uni.sendNativeEvent('unimp-event', {
msg: 'unimp message!!!'
}, ret => {
self.token = '' + ret;
self.setStorage(self.token)
})
},
methods: {
setStorage(token){
setTimeout(()=>{
uni.setStorage({
key: "token",
data: token,
success: function(data){
uni.switchTab({
url: '/pages/tabBar/component/component'
});
}
});
//延時一會我要測試下到底傳過去的參數(shù)是什么
},2000)
}
}
}
</script>
<style>
@import '../../common/uni-nvue.css';
</style>
獲取到token之后就可以跳轉(zhuǎn)到tabBar頁面了,? ?我覺得這還算是一個坑的,?
三. 關(guān)于wgt的解壓和替換文章來源:http://www.zghlxwxcb.cn/news/detail-492809.html
? ? ? ? 每次打包wgt, 然后改成zip, 解壓之后替換原生app里面的文件, 感覺還是很繁瑣, 我在調(diào)試首頁傳參這個問題的時候就因為這個感到很煩躁, 于是寫了一個建議腳本, 自動替換原文件文章來源地址http://www.zghlxwxcb.cn/news/detail-492809.html
@echo off
echo start working
echo clean folder
del /f /s /q D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\*.*
rd /q /s D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
md D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
echo open folder
start explorer "D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www"
xcopy D:\workspace_uniapp\qqrwHe\unpackage\release\__UNI__1A588F9.wgt D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
cd /d "D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www"
ren __UNI__1A588F9.wgt __UNI__1A588F9.zip
"C:\Program Files\WinRAR\WinRAR.exe" X __UNI__1A588F9.zip
del /f /s /q D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\__UNI__1A588F9.zip
pause
到了這里,關(guān)于原生app 打開uni小程序 傳參問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!