背景:由于公司业务需求,我们公司自己开发了一个微信小程序,然后通过App拉起微信小程序进行交互,有一些功能也可以放在小程序中去实现!
准备:首先你在微信的开放平台创建应用,并通过审核,就是你的App具备:微信支付,分享等功能即可!利用Cocoapods导入第三方 pod 'WechatOpenSDK' 或者是手动导入,这个可以看官方文档!
代码实现:代码实现比较简单,如下:
if ([WXApi isWXAppInstalled]) { //先判断是否安装微信
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
launchMiniProgramReq.userName = @"gh_xxxxxxxxxxxx"; //拉起的小程序的username-原始ID
launchMiniProgramReq.path = nil; //拉起小程序页面的可带参路径,不填默认拉起小程序首页
launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease; //拉起小程序的类型
[WXApi sendReq:launchMiniProgramReq];
}else{
//提示用户没有安装微信,不能拉起小程序
}
/*
参数说明:
userName:拉起的小程序的username-原始ID,这个在小程序->设置中可以看见,必须 必须 必须 以 (gh) 开头的 重要的事情说3遍
**/
launchMiniProgramReq.path ="page/index?key1=xxxx";//类似http的url方法来传递参数,如果不传,默认进入小程序首页!
成功之后得回调:
-(void)onReq:(BaseReq *)req
{
if ([req isKindOfClass:[LaunchFromWXReq class]]) {
LaunchFromWXReq *smallPro = (LaunchFromWXReq *)req;
WXMediaMessage *meessage = smallPro.message;
NSLog(@"meeage = %@", meessage);
}
}
温馨提示:还有一点要求,如果你的App和小程序是在一个微信开发者下面创建的,可以不用关联就能拉起小程序,如果不在同一个账号下的话就需要关联一下即可,在小程序里面有关联App这个选项!一个APP可以关联3个微信小程序!
问题:如果发现关闭微信小程序,停留在微信页面,没有返回到App,这个应该在小程序那边处理一下,Android和iOS处理不太一样,如下:
//小程序端通过navigateBackApplication来关闭
f1: function (e) {
if(在android下){//wx.getSystemInfo
wx.navigateBackApplication({
"extraData":{key:"传递到app的数据"}
})
else{
wx.navigateBackApplication({
"extraData":"传递到app的数据"
})
}
}