r***@163.com
r***@163.com
  • 发布:2022-07-04 09:47
  • 更新:2022-07-05 17:21
  • 阅读:830

【报Bug】云打包之后, 获取不到其他app传递过来的数据,plus.runtime.arguments是空的。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Window 10

HBuilderX类型: 正式

HBuilderX版本号: 3.4.15

手机系统: Android

手机系统版本号: Android 12

手机厂商: OPPO

手机机型: PDHM00

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

一个其他原生Android app,这里简称 AAApp,通过以下代码把数据发送数据到uniapp

val bundle = Bundle()  
bundle.putString("code", "123456")  
intent.putExtras(bundle)  
startActivity(intent)

uniapp 通过以下方法获取数据(这个onShow()是具体的业务页面,不是App.vue里面的onShow())

onShow() {  
    var dataFromNativeApp = plus.runtime.arguments  
},

1.如果uniapp是通过“运行到手机或模拟器”编译到手机的话,那么dataFromNativeApp 是有数据的;
2.如果是通过Android 离线打包,那么dataFromNativeApp 也是有数据的;
3.如果通过云打包之后,那么dataFromNativeApp 是空的;

另外,很多人说可以延迟一下再获取数据,比如以下, 也是拿不到数据的

setTimeout(() => {  
 var dataFromNativeApp = plus.runtime.arguments  
}, 3000);

预期结果:

希望云打包也能获取到数据
希望云打包之后plus.runtime.arguments 也是有数据

实际结果:

云打包获取不到数据
云打包之后plus.runtime.arguments 是‘’

bug描述:

使用云打包之后,plus.runtime.arguments拿到的数据是空‘’

2022-07-04 09:47 负责人:无 分享
已邀请:
r***@163.com

r***@163.com (作者)

Android传递给uinapp的方式做了个调整:

val bundle = Bundle()    
bundle.putString("code", "123456")    
intent.putExtras(bundle)    
startActivity(intent)

使用以下方式替代上面的方式:

val uri= Uri.parse("alpha://x=20&y=30")  
val intent = Intent(Intent.ACTION_VIEW, uri)  
startActivity(intent)

其中alpha是uniapp要配置的schema,在distribute-->android-->schemes配置(这是Android标签,iOS不太懂,估计也有对应的标签),然后在uniapp具体的业务页面的onShow()方法通过plus.runtime.arguments拿出来。

1.网上很多人说要在App.vue的onShow()方法取数据,如果有异常的话,大家可以试一下,反正我是在具体的页面的onShow()方法都能拿到。

2.有很多人说要要延后一点取数据,比如

setTimeout(function() {  
    var dataFromOtherApp = plus.runtime.arguments                 
}, 500);

但我也是不做延迟,也能正常拿到数据

该问题目前已经被锁定, 无法添加新回复