DCloud_iOS_XHY
DCloud_iOS_XHY
  • 发布:2020-03-02 20:09
  • 更新:2020-03-31 07:20
  • 阅读:5029

启动小程序

分类:uni小程序sdk

请移步 新的文档。此文档以停止更新

启动小程序

宿主应用启动小程序时可实现如下功能

  • 支持传入参数到小程序环境,
  • 支持启动后直接打开指定页面

注:暂不支持同时运行多个小程序,可以关闭A小程序后在打开B小程序

下面讲解一下具体实现

UniMPSDK 各端 API 说明

iOS 平台

Class DCUniMPSDKEngine  
/// 启动小程序  
+ (void)openApp:(NSString *)appid  
      arguments:(NSDictionary * _Nullable)arguments  
   redirectPath:(NSString * _Nullable)redirectPath;
参数 类型 说明
appid NSString 小程序的 appid
arguments NSDictionary 启动小程序传入的参数
redirectPath NSString 指定启动应用后直接打开的页面路径

Android 平台

// 启动小程序  
DCUniMPSDK.getInstance().startApp(context, appid, splashClass, redirectPath, arguments)
参数 类型 必填 说明
context Context 上下文
appid String 小程序的 appid
splashClass IDCUniMPAppSplashView 自定义splashView接口类
redirectPath String 指定启动应用后直接打开的页面路径
arguments JSONObject 启动小程序传入的参数

Tips

Android startApp详细说明可参考uni小程序SDK API参考手册

启动小程序并传参

宿主启动小程序时支持传入参数到小程序环境,小程序中可以通过 plus.runtime.arguments 获取宿主传入的参数

iOS 示例

// 启动小程序并传入参数  
NSDictionary *arguments = @{@"value":@"Hello uni microprogram"};  
[DCUniMPSDKEngine openApp:appid arguments:arguments];

Android 示例

// 启动小程序并传入参数 "Hello uni microprogram"  
try {  
    JSONObject arguments = new JSONObject();  
    arguments.put("MSG","Hello uni microprogram");  
    DCUniMPSDK.getInstance().startApp(context, "__UNI__04E3A11", arguments);  
} catch (Exception e) {  
    e.printStackTrace();  
}

小程序中获取参数

var info = plus.runtime.arguments;

启动小程序打开指定页面

宿主启动小程序时可通过传入页面路径来打开指定页面

页面路径格式要求

路径从 pages/ 开始填写绝对路径并支持参数 示例:

pages/component/view/view?action=redirect

iOS 示例

// 启动直达页面  
NSString *pagePath = @"pages/component/view/view?action=redirect";  
[DCUniMPSDKEngine openApp:k_AppId arguments:nil redirectPath:pagePaht];

Android 示例

// 启动直达页面  
DCUniMPSDK.getInstance().startApp(context,"__UNI__04E3A11", "pages/component/view/view?action=redirect");

屏蔽返回

直达二级页面如果您想屏蔽返回按钮及返回手势,可以在 小程序页面的 onLoad() 方法中通过调用 setStyle() 方法实现,代码如下

<script>  
    export default {  
        onLoad(e) {  
            // #ifdef APP-PLUS  
            // 启动直达二级页面屏蔽返回手势及返回按钮  
            // e 为直达页面时传入的参数 jsonObject 类型  
            if (e.action === "redirect") {  
                const currentWebview = this.$scope.$getAppWebview();  
                currentWebview.setStyle({  
                    popGesture: 'none',  
                    titleNView: {  
                        autoBackButton: false  
                    }  
                })  
            }  
            // #endif  
        }  
    }  
</script>
0 关注 分享

要回复文章请先登录注册

gaus

gaus

回复 DCloud_iOS_XHY :
多谢!
2020-03-31 07:20
DCloud_iOS_XHY

DCloud_iOS_XHY (作者)

回复 Chason89 :
目前uni小程序不支持同时开启多个,需要关闭当前的在打开另一个
2020-03-30 20:03
Chason89

Chason89

回复 DCloud_iOS_XHY :
能不能从一个uni小程序,直接跳转打开第二个uni小程序?是否需要原生搭桥呢?
2020-03-30 17:36
DCloud_iOS_XHY

DCloud_iOS_XHY (作者)

回复 c***@qq.com :
文档已更新按照新的方式做
2020-03-26 15:23
c***@qq.com

c***@qq.com

屏蔽返回的设置style的方法,再nvue页面要失效
2020-03-26 11:14
DCloud_iOS_XHY

DCloud_iOS_XHY (作者)

回复 8***@qq.com :
无法通过plus.runtime.arguments 获取参数 Android 还是 iOS ?
2020-03-16 12:36
DCloud_iOS_XHY

DCloud_iOS_XHY (作者)

回复 gaus :
这个目前是可以实现的,从微信跳转当前App这个需要宿主App自行实现,跳转的时候只要能获取到文章中说明的打开指定页面所需要的 path 即可
2020-03-16 12:05
gaus

gaus

请问,是否支持 在微信公众号中打开小程序,可以指定页面?
2020-03-14 19:38
8***@qq.com

8***@qq.com

使用最新的3月10号的SDK,小程序还是无法通过plus.runtime.arguments 获取参数,只有一个isInitToolbar参数,其他自定义参数无论用JSON还是url路径都无法获取
2020-03-14 18:14