需求
在iOS的UIWebView界面,點擊button禽绪,直接打開微信跳轉(zhuǎn)到微信小程序。
實現(xiàn)方式
1.接入微信SDK,pod中增加下面一句話
pod 'WechatOpenSDK'
終端中 install pods
2.info-Url Types中添加url
3.Bridging-Header.h的橋頭文件中添加
#import "WXApi.h"
#import "WXApiObject.h"
#import <CommonCrypto/CommonCrypto.h>
#import?<WechatOpenSDK/WXApi.h>
4.在AppDelegate里實現(xiàn)代理
4.1
?? funcapplication(_application:UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey:Any]?) ->Bool{
//注冊微信 添加小程序ID
WXApi.registerApp("wx3ae562f6a92540bf")
}
4.2
//? ? 這兩個方法有一個(sourceApplication)是必須要執(zhí)行的:反而上面那個openUrl還不執(zhí)行?當時實現(xiàn)了這兩個方法以后回調(diào)就開始走了
//? ? 重寫AppDelegate的handleOpenURL和openURL方法:
? ? funcapplication(_app:UIApplication, open url:URL, options: [UIApplication.OpenURLOptionsKey:Any] = [:]) ->Bool{
? ? ? ? returnWXApi.handleOpen(url, delegate:selfas!WXApiDelegate)
? ? }
4.3? 實現(xiàn)相關(guān)代理
extension AppDelegate : WXApiDelegate{
? ? /// 微信回調(diào)
? ? funconResp(_resp:BaseResp) {
? ? ? ? print("errCode =\(resp.errCode)\ntype=\(resp.type)\nerrStr=\(resp.errStr)\nresp=\(resp)")
? ? ? ? // errCode = 0 type=0 errStr= resp=<SendMessageToWXResp: 0x281231bf0>
? ? ? ? ifresp.errCode==0&& resp.type==0{
? ? ? ? ? ? /// 微信登錄success回調(diào)
? ? ? ? ? ? ifresp.isKind(of:SendAuthResp.classForCoder()) {
? ? ? ? ? ? ? ? letresponse = respas!SendAuthResp
? ? ? ? ? ? ? ? NotificationCenter.default.post(name:Notification.Name(rawValue:"WXLoginSuccessNotification"), object: response.code)
? ? ? ? ? ? ? ? print("微信登錄回調(diào)返回萨蚕。。蹄胰。\(#function)")
? ? ? ? ? ? }
? ? ? ? ? ? /// 發(fā)送(分享)消息給微信【微信的會話內(nèi)】【發(fā)送至朋友圈】【發(fā)送到“我的收藏”】success回調(diào)
? ? ? ? ? ? ifresp.isKind(of:SendMessageToWXResp.classForCoder()) {
? ? ? ? ? ? ? ? print("發(fā)送消息給微信列表回調(diào)....")
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? // 小程序
? ? ? ? ifresp.isKind(of:WXLaunchMiniProgramResp.classForCoder()) {
? ? ? ? ? ? print("小程序回調(diào)返回岳遥。。裕寨。\(resp.errStr), \(resp.errCode)")
? ? ? ? }
? ? ? ? // 小程序2
? ? ? ? // response to H5: extMsg
? ? ? ? ifresp.isKind(of:WXLaunchMiniProgramResp.classForCoder()) {
? ? ? ? ? ? letstr = (respas!WXLaunchMiniProgramResp).extMsg??""
? ? ? ? ? ? //? ? ? ? ? ? DDLogDebug("WXLaunchMiniProgramResp-str = \(str)")
? ? ? ? ? ? //? ? ? ? ? ? javaScriptToEvalute?.value = ["extMsg": str]
? ? ? ? }
? ? }
}
5. 按鈕下添加點擊事件跳轉(zhuǎn)
? ? ? ? letlaunchMiniProgramReq =WXLaunchMiniProgramReq.object()
? ? ? ? launchMiniProgramReq.userName= "gh_*****"
? ? ? ? launchMiniProgramReq.miniProgramType= .release
? ? ? ? WXApi.send(launchMiniProgramReq)
//文中AppID為開發(fā)版浩蓉,所以不能跳轉(zhuǎn)成功,請設(shè)置相線上的AppId