最近要在一个原生app的基础上开发新功能, 新功能和原app没有太多交集, 考虑到原生app开发复杂,工期较长, 决定在原生app的基础上整合uni小程序, 使用uniapp开发新功能, 在整合的过程中遇到了几个问题, 这里记录一下,
一. uni小程序的文档在3.5.3这个版本, 目前为止,他的文档还没有随之修改,很多接口对不上, 第一次整合的时候遇到打开小程序闪退的问题, 也没有具体的报错信息, 这就很难调试,
解决问题的方法是
根据他自带的demo进行调试,
1.修改 targetSdkVersion<30
2. 将proguard.cfg和自己原有的文件整合,
3. AndroidManifest.xml 别忘添加如下的activity
//uniapp 使用
二. 原生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的解压和替换
每次打包wgt, 然后改成zip, 解压之后替换原生app里面的文件, 感觉还是很繁琐, 我在调试首页传参这个问题的时候就因为这个感到很烦躁, 于是写了一个建议脚本, 自动替换原文件
- @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
-