123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- //
- // NYWXApiManager.swift
- // JiaPeiManage
- //
- // Created by Ning.ge on 2023/8/2.
- //
- import Foundation
- import SwiftyJSON
- import RxSwift
- class NYWXApiManager : NSObject {
- //rxcode 回调
- let blockSubject = PublishSubject<String>()
- 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)
- }
- }
|