• 原生app 打开uni小程序 传参问题


    最近要在一个原生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

    1. DCUniMPSDK.getInstance().setOnUniMPEventCallBack { appid, event, data, callback ->
    2. Log.i("cs", "onUniMPEventReceive event=$event")
    3. //回传数据给小程序
    4. callback.invoke(O2SDKManager.instance().cQqrwToken)
    5. }
    6. val uniMPOpenConfiguration = UniMPOpenConfiguration()
    7. uniMPOpenConfiguration.redirectPath = "pages/splash/splash"
    8. DCUniMPSDK.getInstance().openUniMP(applicationContext, "__UNI__1A588F9", uniMPOpenConfiguration)

    uni小程序

    1. <template>
    2. <view class="uni-container">
    3. 这是欢迎页面, debug测试时显示000<br />
    4. qqrwToken:{{token}}
    5. view>
    6. template>
    7. <script>
    8. // TODO 修复Android v3 加载过慢问题
    9. // #ifdef APP-PLUS
    10. var domModule = weex.requireModule('dom');
    11. domModule.addRule('fontFace', {
    12. 'fontFamily': "uniicons",
    13. 'src': "url('/static/uni.ttf')"
    14. });
    15. // #endif
    16. export default {
    17. data() {
    18. return {
    19. token:''
    20. }
    21. },
    22. onLoad(e) {
    23. var self = this;
    24. uni.sendNativeEvent('unimp-event', {
    25. msg: 'unimp message!!!'
    26. }, ret => {
    27. self.token = '' + ret;
    28. self.setStorage(self.token)
    29. })
    30. },
    31. methods: {
    32. setStorage(token){
    33. setTimeout(()=>{
    34. uni.setStorage({
    35. key: "token",
    36. data: token,
    37. success: function(data){
    38. uni.switchTab({
    39. url: '/pages/tabBar/component/component'
    40. });
    41. }
    42. });
    43. //延时一会我要测试下到底传过去的参数是什么
    44. },2000)
    45. }
    46. }
    47. }
    48. script>
    49. <style>
    50. @import '../../common/uni-nvue.css';
    51. style>

    获取到token之后就可以跳转到tabBar页面了,   我觉得这还算是一个坑的, 

    三. 关于wgt的解压和替换

            每次打包wgt, 然后改成zip, 解压之后替换原生app里面的文件, 感觉还是很繁琐, 我在调试首页传参这个问题的时候就因为这个感到很烦躁, 于是写了一个建议脚本, 自动替换原文件

    1. @echo off
    2. echo start working
    3. echo clean folder
    4. del /f /s /q D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\*.*
    5. rd /q /s D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
    6. md D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
    7. echo open folder
    8. start explorer "D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www"
    9. xcopy D:\workspace_uniapp\qqrwHe\unpackage\release\__UNI__1A588F9.wgt D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\
    10. cd /d "D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www"
    11. ren __UNI__1A588F9.wgt __UNI__1A588F9.zip
    12. "C:\Program Files\WinRAR\WinRAR.exe" X __UNI__1A588F9.zip
    13. del /f /s /q D:\workspace_android_try\o2oa-android\app\assets\apps\__UNI__1A588F9\www\__UNI__1A588F9.zip
    14. pause

  • 相关阅读:
    分布式动态路由的实现
    Git 使用规范流程
    SpringBoot中文乱码问题解决方案
    【owt】构建m79的owt-client-native:使用vs2017
    gdb调试常见命令详细总结
    Nginx下载安装,什么是nginx,什么是反向代理,Windows下、linux下安装nginx(保姆级教程)
    商业模式画布框架
    最近发现齐博x1火车头发布信息异常
    游戏心理学Day26
    mmlab实现图像分类
  • 原文地址:https://blog.csdn.net/qq345oo/article/details/126526347