前言
在局部场景下,须要向小程序的默认接管页(pages/index/index)传递参数。
本文将以传递 name 和 pwd 参数为例,别离介绍此场景在 Android 小程序和 iOS 小程序中的实现过程。
前提条件
已参照 疾速开始 文档接入了小程序组件。
Android 小程序
1. 在客户端增加启动时跳转页面的参数信息。如下所示:
Bundle param = new Bundle();
String query = "name="+Uri.encode("123")+"&pwd="+Uri.encode("456");
param.putString("query",query); // 设置参数
MPNebula.startApp(appId:"2020121620201216",param);
URL 启动传参时,传递参数的字段为 query;获取参数时,通过解析 query 字段获取。
startApp 参数阐明:
- appId:小程序的 ID,能够从 mPaaS 控制台查看。
- param:Bundle 对象,能够向 Bundle 对象传递申请参数,key=”query”,value=” 键值对 ”;多个参数两头用(&)隔开。
- 留神 1:小程序框架会对每对自定义入参的键值对的 value 进行 uri decode。因而,请对入参键值对的 value 进行 uri encode。
- 留神 2:小程序框架不会对自定义入参的键值对的 key 做任何解决。因而,请不要对 key 设置特殊字符,避免小程序侧无奈辨认自定义参数。
2. 小程序获取参数。从 onLaunch/onShow(options) 办法的参数 options 中获取。
存储 app.js 会获取客户端向小程序传递的参数并保留到全局变量 globalData 中,应用时从 globalData 间接取值或更新值。如申请头里的 token、user_id 等参数,从 Native 传递过去后,保留到 globalData 中,应用时间接取值。
iOS 小程序
1. 在客户端增加启动时跳转页面的参数信息。如下所示:
NSString *pwd = [@"123&*!@#$%^*" stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\|"] invertedSet]];
NSString *queryvalue = [NSString stringWithFormat:@"name=mpaas&pwd=%@",pwd];
NSDictionary * dic = @{@"query":queryvalue};
[MPNebulaAdapterInterface startTinyAppWithId:@"1234567891234567" params:dic];
URL 启动传参时,传递参数的字段为 query;获取参数时,通过解析 query 字段获取。startApp 参数阐明:
- appId:小程序的 ID,从 mPaaS 控制台获取。
- param:params 小程序参数,自定义传值请应用 @{@”query”:@”key=value&key=value”};,多个参数之间用 & 隔开。
- 留神 1:小程序框架会对每对自定义入参的键值对的 value 进行 decode。若您的入参键值对的 value 中有特殊字符 &,请调用以下办法对入参进行 encode。NSString pwd = [@”123&!@#$%^*” stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@”?!@#$^&%*+,:;=’\”`<>()[]{}/\| “] invertedSet]];
如果没有特殊字符,则不须要应用 encode。 - 留神 2:小程序框架不会对自定义入参的键值对的 key 做任何解决。因而,请不要对 key 设置特殊字符,避免小程序侧无奈辨认自定义参数。
2. 小程序从 onLaunch/onShow(options) 办法的参数 options 中获取参数。
操作方法同安卓统一。
撰文:刘启洋、滕宏才
E · N · D