Android APP打开和分享小程序处理方案以及遇到的坑

背景

最近公司的业务都在逐步转战小程序战场,当然就少不了将APP原有流量转到小程序上面,所以通过APP打开和分享小程序就成为了必然的需求。不过还好,微信已为我们铺好路了。只需要集成微信开放平台的SDK即可实现。当然这里面的坑还是会有的。

相关链接:打开小程序文档  分享小程序文档

实现步骤

1、通过gradle形式集成更新微信SDK

旧版的SDK只能通过下载拷贝到项目中,新版的SDK,微信已经改为gradle的形式,发布到jcenter上面的,Android Studio环境下集成非常方便。只需要在app.gradle中添加:

dependencies {
    ....
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.1.4'
}

 后面的版本号可以用“+”代替,实时更新最新版SDK。

2、配置参数及调起方法

首先需要调起的APP必须在微信开放平台上面注册账号绑定。

以下是打开小程序的代码示例:

String appId = "wxd930ea5d5a258f4f"; // 填应用AppId,APP在开放平台注册的id
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);

WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_d43f693ca31f"; // 填小程序原始id
req.path = path;                  //拉起小程序页面的可带参路径,不填默认拉起小程序首页
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版
api.sendReq(req);

然后需要回调的话可以在WXEntryActivity中重写reonResp方法:

public void onResp(BaseResp resp) {
    if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
        WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
        String extraData =launchMiniProResp.extMsg; //对应小程序组件 <button open-type="launchApp"> 中的 app-parameter 属性
    }
}

到这里算是基本完成的,但是有可能你会发现你并打不开小程序,因为这里还需要一个关联操作。

可在“管理中心-移动应用-应用详情-关联小程序信息”,为通过审核的移动应用发起关联小程序操作。
在同一开放平台账号下的移动应用及小程序无需关联即可完成跳转,非同一开放平台账号下的小程序需与移动应用(APP)成功关联后才支持跳转。

一个移动应用只能最多同时绑定3个小程序,每月支持绑定3次。同一个小程序可被500个移动应用关联。

示意图

以上是打开小程序,接下来说一下怎么分享小程序。

这里的分享到小程序只支持分享到会话列表,不支持分享朋友圈。

1、SDK集成跟打开小程序一样,只需要配置一次就可以了。

2、代码示例:

String appId = "wxd930ea5d5a258f4f"; // 填应用AppId,APP在开放平台注册的id
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);

WXMiniProgramObject miniProgramObj = new WXMiniProgramObject();
miniProgramObj.webpageUrl = "http://www.qq.com"; // 兼容低版本的网页链接
miniProgramObj.miniprogramType = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;// 正式版:0,测试版:1,体验版:2
miniProgramObj.userName = "gh_d43f693ca31f";     // 小程序原始id
miniProgramObj.path = "/pages/media";            //小程序页面路径
WXMediaMessage msg = new WXMediaMessage(miniProgramObj);
msg.title = "小程序消息Title";                    // 小程序消息title
msg.description = "小程序消息Desc";               // 小程序消息desc
msg.thumbData = getThumb();                      // 小程序消息封面图片,小于128k

SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
req.scene = SendMessageToWX.Req.WXSceneSession;  // 目前支持会话
api.sendReq(req);

3、分享小程序会有比较多要注意的问题

要求:

  • 发起分享的App与小程序属于同一微信开放平台帐号

  • 支持分享小程序类型消息至会话,暂不支持分享至朋友圈。

  • 若客户端版本低于6.5.6,小程序类型分享将自动转成网页类型分享。开发者必须填写网页链接字段,确保低版本客户端能正常打开网页链接。

支持分享大图卡片样式

自定义图片建议长宽比是 5:4。6.5.9及以上版本微信客户端小程序类型分享使用大图卡片样式。

支持分享开发版/体验版小程序

为支持开发者调试,开发者工具包支持分享开发版/体验版小程序至微信,开发者可控制分享的小程序版本。

以上是基本完成所需要的功能。

 

以下是需要特别注意的坑:

1、官方要求图片大小必须小于128k,而msg.thumbData需要的是byte[],如果是通过网络图片地址的话,需要自行下载下来转为byte[],最后亲测实际上如果是128k的图片是会报错的,提示图片太大,所以真正的网络图片大小保险起见需要控制在100k以内。

2、webpageUrl参数不能传null,如果实在没有地址的话,可以传“ ”,至少包含一个空格。

3、userName参数指的是小程序原始的id

4、msg.thumbData 绝对不能传空。

 

以上是我个人的集成心得,有什么问题可以留言交流。谢谢

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值