//
|
// ShareView.swift
|
// OKProject
|
//
|
// Created by alvin_y on 2020/6/12.
|
// Copyright © 2020 yangwang. All rights reserved.
|
//
|
|
import UIKit
|
import MessageUI
|
typealias ShareSuccessBlock = () -> Void
|
let icon_image = "ios_120"
|
|
class ShareView: YYView {
|
|
/// 标题
|
@IBOutlet weak var label_title: UILabel!
|
|
/// 关闭
|
@IBOutlet weak var button_close: UIButton!
|
|
/// sms
|
@IBOutlet weak var button_message: YYButton!
|
|
/// qq
|
@IBOutlet weak var button_qq: YYButton!
|
|
/// 微信
|
@IBOutlet weak var button_wechat: YYButton!
|
|
/// 容器
|
@IBOutlet weak var view_container: YYView!
|
|
/// 成功
|
var successBlock: ShareSuccessBlock?
|
|
/// 内容
|
var content: String = ""
|
|
/// 网址
|
var url: String = ""
|
|
/// 标题
|
var titleString: String?
|
|
var hiddenMessage: Bool = true
|
|
private var messageVC: MFMessageComposeViewController?
|
|
/// UIViewController
|
private var baseController: UIViewController?
|
|
//MARK: - Rx
|
func bindRx() {
|
button_close.rx.tap.subscribe(onNext: {[unowned self] (_) in
|
self.dismiss()
|
}).disposed(by: rx.disposeBag)
|
|
button_qq.rx.tap.subscribe(onNext: {[unowned self] (_) in
|
self.sharedPubilcManger(shareObjType: .QQ, messageObjText: self.content, descr: self.content, title: "宽窄优行", thumbImage: icon_image, url: self.url)
|
}).disposed(by: rx.disposeBag)
|
|
|
button_wechat.rx.tap.subscribe(onNext: {[unowned self] (_) in
|
self.sharedPubilcManger(shareObjType: .wechatSession, messageObjText: self.content, descr: self.content, title: "宽窄优行", thumbImage: icon_image, url: self.url)
|
}).disposed(by: rx.disposeBag)
|
|
button_message.rx.tap.subscribe(onNext: {[unowned self] (_) in
|
if MFMessageComposeViewController.canSendText(){
|
self.messageVC = MFMessageComposeViewController()
|
self.messageVC?.recipients = [app.userInfo.emergencyContactNumber]//发送短信的号码,数组形式入参
|
self.messageVC?.body = self.content + self.url //此处的body就是短信将要发生的内容
|
self.messageVC?.messageComposeDelegate = self
|
self.baseController?.present(self.messageVC!, animated: true, completion: nil)
|
}else{
|
alert(text: "无法发送短信")
|
}
|
}).disposed(by: rx.disposeBag)
|
|
}
|
|
//MARK: - UI
|
func setupViews() {
|
self.button_message.isHidden = hiddenMessage
|
self.label_title.text = titleString
|
self.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height)
|
self.view_container.transform = CGAffineTransform.init(translationX: 0, y: screenH)
|
}
|
|
/// 获取Self
|
/// - Returns: Self
|
class func share(controller: UIViewController,title: String?,content: String,url: String,hiddenMessage: Bool = true) -> ShareView {
|
let v = UINib(nibName: "ShareView", bundle: nil).instantiate(withOwner: self, options: nil).first as! ShareView
|
v.content = content
|
v.url = url
|
v.titleString = title
|
v.hiddenMessage = hiddenMessage
|
v.setupViews()
|
v.baseController = controller
|
v.bindRx()
|
return v
|
}
|
|
|
/// 显示
|
func show(success: @escaping () -> Void) {
|
self.successBlock = success
|
app.window?.addSubview(self)
|
UIView.animate(withDuration: 0.2) {
|
self.view_container.transform = CGAffineTransform.identity
|
}
|
}
|
|
/// 隐藏
|
func dismiss() {
|
UIView.animate(withDuration: 0.2, animations: {
|
self.view_container.transform = CGAffineTransform.init(translationX: 0, y: screenH)
|
}) { (_) in
|
self.removeFromSuperview()
|
}
|
}
|
|
/// 封装 三方分享
|
func sharedPubilcManger(shareObjType:UMSocialPlatformType,messageObjText:String,descr:String,title:String,thumbImage:String,url:String){
|
let messageObj = UMSocialMessageObject()
|
let shareObj = UMShareWebpageObject()
|
shareObj.title = title
|
messageObj.text = messageObjText
|
shareObj.descr = descr
|
shareObj.thumbImage = UIImage.init(named: thumbImage)
|
shareObj.webpageUrl = url.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed)
|
messageObj.shareObject = shareObj
|
UMSocialManager.default()?.share(to: shareObjType, messageObject: messageObj, currentViewController: baseController, completion: { (r, e) in
|
if (e == nil) {
|
self.dismiss()
|
self.successBlock?()
|
} else {
|
alert(text: "分享失败!")
|
self.dismiss()
|
}
|
})
|
}
|
|
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
var point: CGPoint? = touches.first?.location(in: self)
|
point = view_container.layer.convert(point ?? CGPoint.zero, from: self.layer)
|
if view_container.layer.contains(point ?? CGPoint.zero) {
|
//处理点击到这个view中要执行的事件
|
return
|
}
|
super.touchesBegan(touches, with: event)
|
self.dismiss()
|
}
|
}
|
|
|
extension ShareView: MFMessageComposeViewControllerDelegate{
|
func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
|
switch (result) {
|
case .sent:
|
//信息传送成功
|
baseController?.dismiss(animated: true, completion: nil)
|
self.successBlock?()
|
break;
|
case .failed:
|
//信息传送失败
|
break;
|
case .cancelled:
|
//信息被用户取消传送
|
baseController?.dismiss(animated: true, completion: nil)
|
break;
|
default:
|
break;
|
}
|
}
|
}
|