// // NYWXApiManager.swift // JiaPeiManage // // Created by Ning.ge on 2023/8/2. // import Foundation import SwiftyJSON import RxSwift class NYWXApiManager : NSObject { //rxcode 回调 let blockSubject = PublishSubject() var city:String = "" // 静态属性,用于存储单例实例 static let shared = NYWXApiManager() override init() { super.init() } func registerApp(){ //在register之前打开log, 后续可以根据log排查问题 WXApi.startLog(by: WXLogLevel.detail) { log in NSLog("WeChatSDK: %@", log); } //微信绑定 let isSuccess = WXApi.registerApp(NYMacros.wxappid, universalLink: NYMacros.universalLink) if isSuccess { print("微信初始化成功") } // //调用自检函数 // WXApi.checkUniversalLinkReady { step, result in // print("%@, %u, %@, %@", step, result.success, result.errorInfo, result.suggestion) // } } //发起微信send func sendWxapi(city:String){ self.city = city if WXApi.isWXAppInstalled() { let rep = SendAuthReq() //这两个参数 可以照抄 第一个是固定的,第二个随意写 rep.scope = "snsapi_userinfo" rep.state = "wx_oauth_authorization_state" WXApi.send(rep, completion: nil) } else { // NYTips.showMsg(txt: "本地未安装微信") let rep = SendAuthReq() //这两个参数 可以照抄 第一个是固定的,第二个随意写 rep.scope = "snsapi_userinfo" rep.state = "wx_oauth_authorization_state" DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { // 在延迟 1 秒后执行的代码 let vc = NYWindow.currentVc() WXApi.sendAuthReq(rep, viewController: vc, delegate: self) } } } func handleOpenUrl(url:URL){ WXApi.handleOpen(url, delegate: NYWXApiManager.shared) } func handleOpenUniversalLink(userActivity: NSUserActivity) ->Bool{ return WXApi.handleOpenUniversalLink(userActivity, delegate: NYWXApiManager.shared) } } extension NYWXApiManager :WXApiDelegate { //MARK:微信回调 func onResp(_ resp: BaseResp) { if resp.isKind(of: PayResp.self) { //这里是微信支付的回调 } else if resp.isKind(of: SendAuthResp.self) { //这里是授权登录的回调 let aresp = resp as! SendAuthResp DispatchQueue.main.async { [unowned self] in if aresp.errCode == 0 { if let code = aresp.code { //这里拿到code之后 对接服务器接口 //这步 相当于账号密码登录的流程 返回用户信息 //后端这个接口返回的数据需要判断是第一次授权还是 不是第一次授权,第一次授权需要去绑定手机号界面,不是第一次授权就直接跳转到首页,登录成功 //如果是第一次授权,服务器再给个绑定手机号的接口 //大概就这个流程 self.blockSubject.onNext(code) //发送rx消息 } else { NYTips.showMsg(txt: "微信授权失败") } } else { NYTips.showMsg(txt: "微信授权失败") } } } } func onReq(_ req: BaseReq) { print("%@",req) } }