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

启动小程序

分类: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