无故事王国
3 天以前 41aa6375f4086c3bbabd00c710c0734b25962d78
DolphinEnglishLearnStudent/Config/WeChatTools.swift
@@ -8,216 +8,216 @@
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)
//    }
//}