向 iOS 小程序传递启动参数

本文以传递 name 和 pwd 参数为例,介绍向小程序的默认接收页(pages/index/index)传递参数的实现过程。

前提条件

参照 快速开始 文档接入小程序组件。

操作步骤

  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"}; ,多个参数之间用 & 隔开。

    重要
    • 小程序框架会对每对自定义入参的键值对的 value 进行 decode。若您的入参键值对的 value 中有特殊字符 & ,请调用以下方法对入参进行 encode。NSString *pwd = [@"123&*!@#$%^*" stringByAddingPercentEncodingWithAllowedCharacters:[[NSCharacterSet characterSetWithCharactersInString:@"?!@#$^&%*+,:;='\"`<>()[]{}/\\| "] invertedSet]];如果没有特殊字符,则不需要使用 encode。

    • 小程序框架不会对自定义入参的键值对的 key 做任何处理。因此,请不要对 key 设置特殊字符,防止小程序侧无法识别自定义参数。

  2. 小程序从 onLaunch/onShow(options) 方法的参数 options 中获取参数。存储 app.js 会获取客户端向小程序传递的参数并保存到全局变量 globalData 中,使用时从 globalData 直接取值或更新值。例如,请求头中的 tokenuser_id 等参数,从 Native 传递过来后,保存到 globalData 中,使用时直接取值。

通过启动参数跳转到小程序指定页面

当小程序有多个页面时,业务打开小程序就需要展示指定页面。可通过如下代码实现:

NSDictionary * dict = @{
    @"page" : @"/pages/demo3/index"
};
[MPNebulaAdapterInterface startTinyAppWithId:@"1234567891234567" params:dict];