123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- //
- // WebViewJavascriptBridgeManager.swift
- // RainbowPlanet
- //
- // Created by 南鑫林 on 2019/6/21.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- //
- import UIKit
- import WebViewJavascriptBridge
- import SwiftyJSON
- import SwiftyMediator
- class WebViewJavascriptBridgeManager: NSObject {
-
- typealias CallDataClosure = (_ wbjbModel: WVJBModel) -> Void
- var callDataClosure : CallDataClosure?
-
- static let shared : WebViewJavascriptBridgeManager = WebViewJavascriptBridgeManager()
-
- /// 返回用户信息
- ///
- /// - Parameter bridge: 交互对象
- func callHandlerH5(bridge: WebViewJavascriptBridge?) {
- bridge?.callHandler("h5", data: UserModel.shared().getH5UserInfo())
- }
-
- /// 刷新
- ///
- /// - Parameters:
- /// - bridge: 交互对象
- /// - force: 是否强制
- func callHandlerH5Refresh(bridge: WebViewJavascriptBridge?,refreshModelType:WVJBRefreshModelType?,silent:Int? = 0) {
- //获取当前时间
- let refreshModel = WVJBRefreshModel()
- refreshModel.type = refreshModelType?.rawValue
- refreshModel.silent = silent
- var refreshDic = Dictionary<String,Any>()
- refreshDic.updateValue("refresh", forKey: "type")
- refreshDic.updateValue(refreshModel.toJSON() as Any, forKey: "params")
- bridge?.callHandler("h5", data: refreshDic)
- }
-
- /// 返回时间戳
- ///
- /// - Parameter bridge: 交互对象
- func callHandlerDatepicker(bridge: WebViewJavascriptBridge?,timestamp:Double,key:String) {
-
- let datepickerModel = WVJBDatepickerModel()
- datepickerModel.timestamp = timestamp * 1000
- datepickerModel.key = key
- //获取当前时间
- var datepickerDic = Dictionary<String,Any>()
- datepickerDic.updateValue("datepicker", forKey: "type")
- datepickerDic.updateValue(datepickerModel.toJSON() as Any, forKey: "params")
- bridge?.callHandler("h5", data: datepickerDic)
- }
-
- /// 返回话题
- ///
- /// - Parameter bridge: 交互对象
- func callHandlerTopic(bridge: WebViewJavascriptBridge?,topic:Array<CommunityTopicDataModel>) {
- //获取当前时间
- var dictionary = Dictionary<String,Any>()
- dictionary.updateValue("selectTopic", forKey: "type")
- var topicDictionary = Dictionary<String,Any>()
- topicDictionary.updateValue(topic.toJSONString() as Any, forKey: "topic")
- dictionary.updateValue(topicDictionary, forKey: "params")
- NXLLog(JSON(dictionary))
- bridge?.callHandler("h5", data: dictionary)
- }
-
- /// 发布
- ///
- /// - Parameter bridge: 交互对象
- func callHandlerPublish(bridge: WebViewJavascriptBridge?) {
- //获取当前时间
- var dictionary = Dictionary<String,Any>()
- dictionary.updateValue("publish", forKey: "type")
- dictionary.updateValue("", forKey: "params")
- bridge?.callHandler("h5", data: dictionary)
- }
-
-
- /// 注册回调
- ///
- /// - Parameters:
- /// - bridge: 交互对象
- /// - callDataClosure: 回调
- func registerHandlerApp(bridge: WebViewJavascriptBridge?,callDataClosure:@escaping CallDataClosure) {
- bridge?.registerHandler("app", handler: { data, responseCallback in
- if let data = data {
- let jsonData = JSON(data)
- let wbjbModel = WVJBModel(JSONString: jsonData.description)
- callDataClosure(wbjbModel ?? WVJBModel())
- }
- responseCallback!(nil)
- })
- }
-
- func jump(bridge: WebViewJavascriptBridge? = nil,wvjbModel:WVJBModel?,viewController:BaseJSWebBaseViewController? = nil) {
- // 链接
- if wvjbModel?.modelType == .link {
- Mediator.push(H5RouterModuleType.pushWeb(URLString: wvjbModel!.params!.url!))
- }
- // 邀请
- if wvjbModel?.modelType == .share {
- if wvjbModel?.params?.paramsModelType == .invite {
- ShareCommunityView.inviteGoodFriends()
- }
- }
- // 复制邀请码
- if wvjbModel?.modelType == .copy {
- commonCopy(string: wvjbModel!.params!.content!)
- }
-
- // 跳转原生
- if wvjbModel?.modelType == .follow {
- let followStatusModel = FollowStatusModel()
- followStatusModel.uid = wvjbModel!.params?.uid ?? 0
- followStatusModel.isFollowStatus = wvjbModel!.params?.status ?? 0
- NotificationCenter.default.post(name: NSNotification.Name(rawValue: "followApi"), object: followStatusModel, userInfo: ["isPlanet":true])
- }
-
- // 跳转预览图
- if wvjbModel?.modelType == .preview {
- if !(wvjbModel!.params?.list?.isEmpty ?? true) {
- Mediator.push(BrowsePictureRouterModuleType.pushBrowsePictureImageStrs(imageStrs: (wvjbModel!.params?.list)!, index: wvjbModel!.params?.current ?? 0))
- }
- }
-
- // 返回
- if wvjbModel?.modelType == .back {
- viewController?.navigationController?.popViewController(animated: true)
- }
-
- // 刷新U米
- if wvjbModel?.modelType == .bean {
- UserMemberTotalBeanViewModel.shared.userMemberGetTotalBeanApi()
- }
-
- // 日期
- if wvjbModel?.modelType == .datepicker {
- DatePickerManager.shared.initDatePickerManager(title: wvjbModel?.params?.title ?? "", timeStamp: Double(wvjbModel?.params?.timeStamp ?? "")!, dateReturnType: DatePickerManager.DateReturnType.timeStamp) { [weak self] (timeStamp) in
- let timeStamp = timeStamp as? Double
- self?.callHandlerDatepicker(bridge: bridge, timestamp: timeStamp ?? Double(Date().timeStamp()), key: wvjbModel?.params?.key ?? "")
- }
- }
-
- // 分享
- if wvjbModel?.modelType == .shareLink {
- ShareH5LinkView.shareH5LinkView(h5Str:wvjbModel?.params?.link ?? "", thumbnailImg: UIImage.imageUrl(wvjbModel?.params?.imgUrl ?? ""), sharedTitle: wvjbModel?.params?.title ?? "", sharedDetailTitle: wvjbModel?.params?.desc ?? "") {
-
- }
- }
-
- // 话题
- if wvjbModel?.modelType == .selectTopic {
- let vc = PublishAddTopicController()
- NXLLog(wvjbModel?.params?.topic)
- let topicMdlArr : Array<CommunityTopicDataModel> = Array<CommunityTopicDataModel>.init(JSONString: wvjbModel?.params?.topic ?? "[]") ?? []
- vc.selTopicModelArr = topicMdlArr
- vc.selTopicsClosure = {
- [weak self] topicMdlArr in
- self?.callHandlerTopic(bridge: bridge, topic: topicMdlArr)
- }
- UIViewController.topMost?.navigationController?.pushViewController(vc, animated: true)
- }
-
- // 发布
- if wvjbModel?.modelType == .publish {
- NXLLog(wvjbModel?.params?.status)
- if wvjbModel?.params?.status != nil {
- if let callDataClosure = callDataClosure {
- callDataClosure(wvjbModel!)
- }
- }
- }
-
- // 跳转原生
- if wvjbModel?.modelType == .view {
- // 发布
- if wvjbModel?.params?.paramsModelPage == .publist {
- BaseTabbarViewController.shared.pushPublishVC()
- }
- // 推荐
- if wvjbModel?.params?.paramsModelPage == .join {
- BaseTabbarViewController.shared.esTabBarController.selectedIndex = 0
- BaseTabbarViewController.shared.v1.reloadSegmentedView()
- if viewController != nil {
- viewController?.navigationController?.popToRootViewController(animated: true)
- }
- }
- // 兑换商城
- if wvjbModel?.params?.paramsModelPage == .exchange {
- Mediator.push(BackyardModuleRouterType.redemptionArea)
- }
- // 去星球
- if wvjbModel?.params?.paramsModelPage == .planet {
- BaseTabbarViewController.shared.esTabBarController.selectedIndex = 0
- BaseTabbarViewController.shared.v1.reloadSegmentedStarView()
- if viewController != nil {
- viewController?.navigationController?.popToRootViewController(animated: true)
- }
- }
-
- // 去登陆
- if wvjbModel?.params?.paramsModelPage == .signin {
- Mediator.present(RegisterLoginRouterModuleType.presentRegisterLogin)
- }
-
- // 去个人中心
- if wvjbModel?.params?.paramsModelPage == .user {
- if wvjbModel?.params?.payload?.uid != nil && wvjbModel?.params?.payload?.uid != UserModel.shared().getModel()?.uid {
- Mediator.push(MineRouterModuleType.pushOtherPersonalCenter(uid: wvjbModel?.params?.payload?.uid ?? 0))
- }
- }
-
- // 账户(绑定微信/绑定QQ)
- if wvjbModel?.params?.paramsModelPage == .account {
- Mediator.present(MineRouterModuleType.pushAccountSecurity)
- }
-
- // 聊天室
- if wvjbModel?.params?.paramsModelPage == .chatroom {
- if wvjbModel?.params?.payload?.roomId != nil {
- if UserModel.shared().getModel()?.rongCloudToken != nil {
- Mediator.push(RongCloudIMRouterModuleType.IMChatRoom(targetId: wvjbModel?.params?.payload?.roomId ?? "" , messageCount: 50, roomName: wvjbModel?.params?.payload?.roomName ?? ""))
- }else {
- SwiftMoyaNetWorkServiceUser.shared().userRefreshApi { (data) -> (Void) in
- RongCloudIMManager.shared.loginRCIM {
- Mediator.push(RongCloudIMRouterModuleType.IMChatRoom(targetId: wvjbModel?.params?.payload?.roomId ?? "" , messageCount: 50, roomName: wvjbModel?.params?.payload?.roomName ?? ""))
- }
- }
- }
- }
- }
-
- // 圈子
- if wvjbModel?.params?.paramsModelPage == .circle {
- if wvjbModel?.params?.payload?.circleId != nil {
- Mediator.push(CircleRouterModuleType.circle(circleId: "\(wvjbModel?.params?.payload?.circleId ?? 0)"))
- }
- }
-
- }
-
- }
- }
|