| | |
| | | import Foundation |
| | | import HandyJSON |
| | | |
| | | typealias WeachatClosure = (WechatModel?)->(Void) |
| | | typealias WechatUserClosure = (WechatUserInfoModel?)->(Void) |
| | | //typealias WeachatClosure = (WechatModel?)->(Void) |
| | | //typealias WechatUserClosure = (WechatUserInfoModel?)->(Void) |
| | | |
| | | struct WechatModel:HandyJSON{ |
| | | var access_token = "" |
| | | var expires_in = 0 |
| | | var openid = "" |
| | | var refresh_token = "" |
| | | var scope = "" |
| | | var unionid = "" |
| | | } |
| | | |
| | | struct WechatUserInfoModel:HandyJSON{ |
| | | var openid = "" |
| | | var nickname = "" |
| | | var sex = 1 |
| | | var province = "" |
| | | var city = "" |
| | | var country = "" |
| | | var headimgurl = "" |
| | | var privilege = "" |
| | | var unionid = "" |
| | | } |
| | | |
| | | class WeChatTools{ |
| | | |
| | | static func register(appid:String,link:String){ |
| | | WXApi.registerApp(appid, universalLink: link) |
| | | } |
| | | |
| | | /// 授权登录 |
| | | static func sendAuthRequest(){ |
| | | let sendAuthReq = SendAuthReq() |
| | | sendAuthReq.scope = "snsapi_userinfo" |
| | | sendAuthReq.state = "dolpinEnglishStudent_iOS" |
| | | WXApi.send(sendAuthReq) |
| | | } |
| | | |
| | | /// 完成授权登录,获取token |
| | | static func getAccessToken(_ resp:SendAuthResp, loginInfo:WeachatClosure?){ |
| | | guard resp.code != nil else { |
| | | return |
| | | } |
| | | let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=\(WeChatAPPID)&secret=\(WeChatSecrect)&code=\(resp.code!)&grant_type=authorization_code" |
| | | let Url = URL(string: url) |
| | | let session = URLSession.shared |
| | | let task = session.dataTask(with: Url!) { (data, response, error) in |
| | | if error != nil{ |
| | | return |
| | | } |
| | | do{ |
| | | if let dataAsJSON = try JSONSerialization.jsonObject(with: data!) as? Dictionary<String, Any>{ |
| | | let model = WechatModel.deserialize(from: dataAsJSON) |
| | | loginInfo?(model) |
| | | }else{ |
| | | loginInfo?(nil) |
| | | } |
| | | }catch{ |
| | | loginInfo?(nil) |
| | | } |
| | | } |
| | | task.resume() |
| | | } |
| | | |
| | | /// 获取用资料 |
| | | static func getUserInfo(access_token:String,openId:String,userInfo:WechatUserClosure?){ |
| | | guard !access_token.isEmpty else { |
| | | return |
| | | } |
| | | |
| | | guard !openId.isEmpty else { |
| | | return |
| | | } |
| | | |
| | | let url = "https://api.weixin.qq.com/sns/userinfo?access_token=\(access_token)&openid=\(openId)" |
| | | let Url = URL(string: url) |
| | | let session = URLSession.shared |
| | | let task = session.dataTask(with: Url!) { (data, response, error) in |
| | | if error != nil{ |
| | | return |
| | | } |
| | | do{ |
| | | if let dataAsJSON = try JSONSerialization.jsonObject(with: data!) as? Dictionary<String, Any>{ |
| | | let model = WechatUserInfoModel.deserialize(from: dataAsJSON) |
| | | userInfo?(model) |
| | | }else{ |
| | | userInfo?(nil) |
| | | } |
| | | }catch{ |
| | | userInfo?(nil) |
| | | } |
| | | } |
| | | task.resume() |
| | | } |
| | | |
| | | /// 分享文本 |
| | | static func shareText(_ text:String,scene:WXScene = WXSceneSession){ |
| | | let req = SendMessageToWXReq() |
| | | req.bText = true |
| | | req.text = text |
| | | req.scene = Int32(scene.rawValue) |
| | | WXApi.send(req) |
| | | } |
| | | |
| | | /// 分享图片 |
| | | static func sharePic(_ img:UIImage,thumb:UIImage,scale:CGFloat = 0.6,scene:WXScene = WXSceneTimeline){ |
| | | |
| | | let imageObject = WXImageObject() |
| | | imageObject.imageData = img.jpegData(compressionQuality: scale)! |
| | | |
| | | let mediaMessage = WXMediaMessage() |
| | | mediaMessage.thumbData = thumb.jpegData(compressionQuality: scale) |
| | | mediaMessage.mediaObject = imageObject |
| | | |
| | | let req = SendMessageToWXReq() |
| | | req.bText = false |
| | | req.message = mediaMessage |
| | | req.scene = Int32(scene.rawValue) |
| | | WXApi.send(req) |
| | | } |
| | | |
| | | /// 分享图片 |
| | | static func sharePic(_ img:UIImage,thumb:UIImage,text:String,scale:CGFloat = 0.6,scene:WXScene = WXSceneTimeline){ |
| | | |
| | | let imageObject = WXImageObject() |
| | | imageObject.imageData = img.pngData()! |
| | | |
| | | let mediaMessage = WXMediaMessage() |
| | | // mediaMessage.thumbData = thumb.pngData()! |
| | | mediaMessage.mediaObject = imageObject |
| | | mediaMessage.title = text |
| | | |
| | | let req = SendMessageToWXReq() |
| | | req.bText = false |
| | | req.message = mediaMessage |
| | | req.scene = Int32(scene.rawValue) |
| | | WXApi.send(req) |
| | | } |
| | | |
| | | /// 分享音乐 |
| | | static func shareMusic(_ musicUrl:String,musicLowBandUrl:String,title:String,desc:String,thumb:UIImage,scene:WXScene = WXSceneSession){ |
| | | let musicObject = WXMusicObject() |
| | | musicObject.musicUrl = musicUrl |
| | | musicObject.musicLowBandUrl = musicLowBandUrl |
| | | |
| | | let mediaMessage = WXMediaMessage() |
| | | mediaMessage.title = title |
| | | mediaMessage.description = desc |
| | | mediaMessage.setThumbImage(thumb) |
| | | mediaMessage.mediaObject = musicObject |
| | | |
| | | let req = SendMessageToWXReq() |
| | | req.bText = false |
| | | req.message = mediaMessage |
| | | req.scene = Int32(scene.rawValue) |
| | | WXApi.send(req) |
| | | } |
| | | |
| | | /// 分享音乐 |
| | | static func shareMusic(_ musicData:String,musicLowBandData:String,title:String,desc:String,thumb:UIImage,scene:WXScene = WXSceneSession){ |
| | | let musicObject = WXMusicObject() |
| | | musicObject.musicDataUrl = musicData |
| | | musicObject.musicLowBandUrl = musicLowBandData |
| | | |
| | | let mediaMessage = WXMediaMessage() |
| | | mediaMessage.title = title |
| | | mediaMessage.description = desc |
| | | mediaMessage.setThumbImage(thumb) |
| | | mediaMessage.mediaObject = musicObject |
| | | |
| | | let req = SendMessageToWXReq() |
| | | req.bText = false |
| | | req.message = mediaMessage |
| | | req.scene = Int32(scene.rawValue) |
| | | WXApi.send(req) |
| | | } |
| | | |
| | | static func shareUrl(_ url:String,title:String,desc:String,thumb:UIImage,scene:WXScene = WXSceneSession){ |
| | | |
| | | let webpageObject = WXWebpageObject() |
| | | webpageObject.webpageUrl = url |
| | | |
| | | let mediaMessage = WXMediaMessage() |
| | | mediaMessage.title = title |
| | | mediaMessage.description = desc |
| | | mediaMessage.setThumbImage(thumb) |
| | | mediaMessage.mediaObject = webpageObject |
| | | |
| | | let req = SendMessageToWXReq() |
| | | req.bText = false |
| | | req.message = mediaMessage |
| | | req.scene = Int32(scene.rawValue) |
| | | WXApi.send(req) |
| | | } |
| | | |
| | | static func shareVideo(_ url:String,videoLowBandUrl:String,title:String,desc:String,thumb:UIImage, scene:WXScene = WXSceneSession){ |
| | | let videoObject = WXVideoObject() |
| | | videoObject.videoUrl = url |
| | | videoObject.videoLowBandUrl = videoLowBandUrl |
| | | |
| | | let mediaMessage = WXMediaMessage() |
| | | mediaMessage.title = title |
| | | mediaMessage.description = desc |
| | | mediaMessage.setThumbImage(thumb) |
| | | mediaMessage.mediaObject = videoObject |
| | | |
| | | let req = SendMessageToWXReq() |
| | | req.bText = false |
| | | req.message = mediaMessage |
| | | req.scene = Int32(scene.rawValue) |
| | | WXApi.send(req) |
| | | } |
| | | } |
| | | //struct WechatModel:HandyJSON{ |
| | | // var access_token = "" |
| | | // var expires_in = 0 |
| | | // var openid = "" |
| | | // var refresh_token = "" |
| | | // var scope = "" |
| | | // var unionid = "" |
| | | //} |
| | | // |
| | | //struct WechatUserInfoModel:HandyJSON{ |
| | | // var openid = "" |
| | | // var nickname = "" |
| | | // var sex = 1 |
| | | // var province = "" |
| | | // var city = "" |
| | | // var country = "" |
| | | // var headimgurl = "" |
| | | // var privilege = "" |
| | | // var unionid = "" |
| | | //} |
| | | // |
| | | //class WeChatTools{ |
| | | // |
| | | // static func register(appid:String,link:String){ |
| | | // WXApi.registerApp(appid, universalLink: link) |
| | | // } |
| | | // |
| | | // /// 授权登录 |
| | | // static func sendAuthRequest(){ |
| | | // let sendAuthReq = SendAuthReq() |
| | | // sendAuthReq.scope = "snsapi_userinfo" |
| | | // sendAuthReq.state = "dolpinEnglishStudent_iOS" |
| | | // WXApi.send(sendAuthReq) |
| | | // } |
| | | // |
| | | // /// 完成授权登录,获取token |
| | | // static func getAccessToken(_ resp:SendAuthResp, loginInfo:WeachatClosure?){ |
| | | // guard resp.code != nil else { |
| | | // return |
| | | // } |
| | | // let url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=\(WeChatAPPID)&secret=\(WeChatSecrect)&code=\(resp.code!)&grant_type=authorization_code" |
| | | // let Url = URL(string: url) |
| | | // let session = URLSession.shared |
| | | // let task = session.dataTask(with: Url!) { (data, response, error) in |
| | | // if error != nil{ |
| | | // return |
| | | // } |
| | | // do{ |
| | | // if let dataAsJSON = try JSONSerialization.jsonObject(with: data!) as? Dictionary<String, Any>{ |
| | | // let model = WechatModel.deserialize(from: dataAsJSON) |
| | | // loginInfo?(model) |
| | | // }else{ |
| | | // loginInfo?(nil) |
| | | // } |
| | | // }catch{ |
| | | // loginInfo?(nil) |
| | | // } |
| | | // } |
| | | // task.resume() |
| | | // } |
| | | // |
| | | // /// 获取用资料 |
| | | // static func getUserInfo(access_token:String,openId:String,userInfo:WechatUserClosure?){ |
| | | // guard !access_token.isEmpty else { |
| | | // return |
| | | // } |
| | | // |
| | | // guard !openId.isEmpty else { |
| | | // return |
| | | // } |
| | | // |
| | | // let url = "https://api.weixin.qq.com/sns/userinfo?access_token=\(access_token)&openid=\(openId)" |
| | | // let Url = URL(string: url) |
| | | // let session = URLSession.shared |
| | | // let task = session.dataTask(with: Url!) { (data, response, error) in |
| | | // if error != nil{ |
| | | // return |
| | | // } |
| | | // do{ |
| | | // if let dataAsJSON = try JSONSerialization.jsonObject(with: data!) as? Dictionary<String, Any>{ |
| | | // let model = WechatUserInfoModel.deserialize(from: dataAsJSON) |
| | | // userInfo?(model) |
| | | // }else{ |
| | | // userInfo?(nil) |
| | | // } |
| | | // }catch{ |
| | | // userInfo?(nil) |
| | | // } |
| | | // } |
| | | // task.resume() |
| | | // } |
| | | // |
| | | // /// 分享文本 |
| | | // static func shareText(_ text:String,scene:WXScene = WXSceneSession){ |
| | | // let req = SendMessageToWXReq() |
| | | // req.bText = true |
| | | // req.text = text |
| | | // req.scene = Int32(scene.rawValue) |
| | | // WXApi.send(req) |
| | | // } |
| | | // |
| | | // /// 分享图片 |
| | | // static func sharePic(_ img:UIImage,thumb:UIImage,scale:CGFloat = 0.6,scene:WXScene = WXSceneTimeline){ |
| | | // |
| | | // let imageObject = WXImageObject() |
| | | // imageObject.imageData = img.jpegData(compressionQuality: scale)! |
| | | // |
| | | // let mediaMessage = WXMediaMessage() |
| | | // mediaMessage.thumbData = thumb.jpegData(compressionQuality: scale) |
| | | // mediaMessage.mediaObject = imageObject |
| | | // |
| | | // let req = SendMessageToWXReq() |
| | | // req.bText = false |
| | | // req.message = mediaMessage |
| | | // req.scene = Int32(scene.rawValue) |
| | | // WXApi.send(req) |
| | | // } |
| | | // |
| | | // /// 分享图片 |
| | | // static func sharePic(_ img:UIImage,thumb:UIImage,text:String,scale:CGFloat = 0.6,scene:WXScene = WXSceneTimeline){ |
| | | // |
| | | // let imageObject = WXImageObject() |
| | | // imageObject.imageData = img.pngData()! |
| | | // |
| | | // let mediaMessage = WXMediaMessage() |
| | | // // mediaMessage.thumbData = thumb.pngData()! |
| | | // mediaMessage.mediaObject = imageObject |
| | | // mediaMessage.title = text |
| | | // |
| | | // let req = SendMessageToWXReq() |
| | | // req.bText = false |
| | | // req.message = mediaMessage |
| | | // req.scene = Int32(scene.rawValue) |
| | | // WXApi.send(req) |
| | | // } |
| | | // |
| | | // /// 分享音乐 |
| | | // static func shareMusic(_ musicUrl:String,musicLowBandUrl:String,title:String,desc:String,thumb:UIImage,scene:WXScene = WXSceneSession){ |
| | | // let musicObject = WXMusicObject() |
| | | // musicObject.musicUrl = musicUrl |
| | | // musicObject.musicLowBandUrl = musicLowBandUrl |
| | | // |
| | | // let mediaMessage = WXMediaMessage() |
| | | // mediaMessage.title = title |
| | | // mediaMessage.description = desc |
| | | // mediaMessage.setThumbImage(thumb) |
| | | // mediaMessage.mediaObject = musicObject |
| | | // |
| | | // let req = SendMessageToWXReq() |
| | | // req.bText = false |
| | | // req.message = mediaMessage |
| | | // req.scene = Int32(scene.rawValue) |
| | | // WXApi.send(req) |
| | | // } |
| | | // |
| | | // /// 分享音乐 |
| | | // static func shareMusic(_ musicData:String,musicLowBandData:String,title:String,desc:String,thumb:UIImage,scene:WXScene = WXSceneSession){ |
| | | // let musicObject = WXMusicObject() |
| | | // musicObject.musicDataUrl = musicData |
| | | // musicObject.musicLowBandUrl = musicLowBandData |
| | | // |
| | | // let mediaMessage = WXMediaMessage() |
| | | // mediaMessage.title = title |
| | | // mediaMessage.description = desc |
| | | // mediaMessage.setThumbImage(thumb) |
| | | // mediaMessage.mediaObject = musicObject |
| | | // |
| | | // let req = SendMessageToWXReq() |
| | | // req.bText = false |
| | | // req.message = mediaMessage |
| | | // req.scene = Int32(scene.rawValue) |
| | | // WXApi.send(req) |
| | | // } |
| | | // |
| | | // static func shareUrl(_ url:String,title:String,desc:String,thumb:UIImage,scene:WXScene = WXSceneSession){ |
| | | // |
| | | // let webpageObject = WXWebpageObject() |
| | | // webpageObject.webpageUrl = url |
| | | // |
| | | // let mediaMessage = WXMediaMessage() |
| | | // mediaMessage.title = title |
| | | // mediaMessage.description = desc |
| | | // mediaMessage.setThumbImage(thumb) |
| | | // mediaMessage.mediaObject = webpageObject |
| | | // |
| | | // let req = SendMessageToWXReq() |
| | | // req.bText = false |
| | | // req.message = mediaMessage |
| | | // req.scene = Int32(scene.rawValue) |
| | | // WXApi.send(req) |
| | | // } |
| | | // |
| | | // static func shareVideo(_ url:String,videoLowBandUrl:String,title:String,desc:String,thumb:UIImage, scene:WXScene = WXSceneSession){ |
| | | // let videoObject = WXVideoObject() |
| | | // videoObject.videoUrl = url |
| | | // videoObject.videoLowBandUrl = videoLowBandUrl |
| | | // |
| | | // let mediaMessage = WXMediaMessage() |
| | | // mediaMessage.title = title |
| | | // mediaMessage.description = desc |
| | | // mediaMessage.setThumbImage(thumb) |
| | | // mediaMessage.mediaObject = videoObject |
| | | // |
| | | // let req = SendMessageToWXReq() |
| | | // req.bText = false |
| | | // req.message = mediaMessage |
| | | // req.scene = Int32(scene.rawValue) |
| | | // WXApi.send(req) |
| | | // } |
| | | //} |