NYWXApiManager.swift 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. //
  2. // NYWXApiManager.swift
  3. // JiaPeiManage
  4. //
  5. // Created by Ning.ge on 2023/8/2.
  6. //
  7. import Foundation
  8. import SwiftyJSON
  9. import RxSwift
  10. class NYWXApiManager : NSObject {
  11. //rxcode 回调
  12. let blockSubject = PublishSubject<String>()
  13. var city:String = ""
  14. // 静态属性,用于存储单例实例
  15. static let shared = NYWXApiManager()
  16. override init() {
  17. super.init()
  18. }
  19. func registerApp(){
  20. //在register之前打开log, 后续可以根据log排查问题
  21. WXApi.startLog(by: WXLogLevel.detail) { log in
  22. NSLog("WeChatSDK: %@", log);
  23. }
  24. //微信绑定
  25. let isSuccess = WXApi.registerApp(NYMacros.wxappid, universalLink: NYMacros.universalLink)
  26. if isSuccess {
  27. print("微信初始化成功")
  28. }
  29. // //调用自检函数
  30. // WXApi.checkUniversalLinkReady { step, result in
  31. // print("%@, %u, %@, %@", step, result.success, result.errorInfo, result.suggestion)
  32. // }
  33. }
  34. //发起微信send
  35. func sendWxapi(city:String){
  36. self.city = city
  37. if WXApi.isWXAppInstalled() {
  38. let rep = SendAuthReq()
  39. //这两个参数 可以照抄 第一个是固定的,第二个随意写
  40. rep.scope = "snsapi_userinfo"
  41. rep.state = "wx_oauth_authorization_state"
  42. WXApi.send(rep, completion: nil)
  43. }
  44. else {
  45. // NYTips.showMsg(txt: "本地未安装微信")
  46. let rep = SendAuthReq()
  47. //这两个参数 可以照抄 第一个是固定的,第二个随意写
  48. rep.scope = "snsapi_userinfo"
  49. rep.state = "wx_oauth_authorization_state"
  50. DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
  51. // 在延迟 1 秒后执行的代码
  52. let vc = NYWindow.currentVc()
  53. WXApi.sendAuthReq(rep, viewController: vc, delegate: self)
  54. }
  55. }
  56. }
  57. func handleOpenUrl(url:URL){
  58. WXApi.handleOpen(url, delegate: NYWXApiManager.shared)
  59. }
  60. func handleOpenUniversalLink(userActivity: NSUserActivity) ->Bool{
  61. return WXApi.handleOpenUniversalLink(userActivity, delegate: NYWXApiManager.shared)
  62. }
  63. }
  64. extension NYWXApiManager :WXApiDelegate {
  65. //MARK:微信回调
  66. func onResp(_ resp: BaseResp) {
  67. if resp.isKind(of: PayResp.self) {
  68. //这里是微信支付的回调
  69. } else if resp.isKind(of: SendAuthResp.self) {
  70. //这里是授权登录的回调
  71. let aresp = resp as! SendAuthResp
  72. DispatchQueue.main.async { [unowned self] in
  73. if aresp.errCode == 0 {
  74. if let code = aresp.code {
  75. //这里拿到code之后 对接服务器接口
  76. //这步 相当于账号密码登录的流程 返回用户信息
  77. //后端这个接口返回的数据需要判断是第一次授权还是 不是第一次授权,第一次授权需要去绑定手机号界面,不是第一次授权就直接跳转到首页,登录成功
  78. //如果是第一次授权,服务器再给个绑定手机号的接口
  79. //大概就这个流程
  80. self.blockSubject.onNext(code) //发送rx消息
  81. }
  82. else {
  83. NYTips.showMsg(txt: "微信授权失败")
  84. }
  85. }
  86. else {
  87. NYTips.showMsg(txt: "微信授权失败")
  88. }
  89. }
  90. }
  91. }
  92. func onReq(_ req: BaseReq) {
  93. print("%@",req)
  94. }
  95. }