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

最近要在一个原生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的解压和替换

        每次打包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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值