最近要在一个原生app的基础上开发新功能, 新功能和原app没有太多交集, 考虑到原生app开发复杂,工期较长, 决定在原生app的基础上整合uni小程序, 使用uniapp开发新功能, 在整合的过程中遇到了几个问题, 这里记录一下,
一. uni小程序的文档在3.5.3这个版本, 目前为止,他的文档还没有随之修改,很多接口对不上, 第一次整合的时候遇到打开小程序闪退的问题, 也没有具体的报错信息, 这就很难调试,
解决问题的方法是
根据他自带的demo进行调试,
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,跳转到小程序传参问题, 不能跳转到tabBar页面这个问题到目前为止, 一直还是没有修复, 那我就尝试使用中转页面获取参数, 不知道是这个3.5.3版本的问题还是怎么回事, 在浏览器可以获取到中转页的数据, 在原生app跳转就不行, 于是采用了uniapp向宿主app发送消息事件获取token参数的方案, 具体代码如下
宿主原生App
DCUniMPSDK.getInstance().setOnUniMPEventCallBack { appid, event, data, callback ->
Log.i("cs", "onUniMPEventReceive event=$event")
//回传数据给小程序
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 修复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'
});
}
});
//延时一会我要测试下到底传过去的参数是什么
},2000)
}
}
}
</script>
<style>
@import '../../common/uni-nvue.css';
</style>
获取到token之后就可以跳转到tabBar页面了, 我觉得这还算是一个坑的,
三. 关于wgt的解压和替换文章来源:https://www.toymoban.com/news/detail-492809.html
每次打包wgt, 然后改成zip, 解压之后替换原生app里面的文件, 感觉还是很繁琐, 我在调试首页传参这个问题的时候就因为这个感到很烦躁, 于是写了一个建议脚本, 自动替换原文件文章来源地址https://www.toymoban.com/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
到了这里,关于原生app 打开uni小程序 传参问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!