Commit 4ca2107a by ludi

保存一下

parent 96e4a8c5
...@@ -64,22 +64,27 @@ import SwiftyJSON ...@@ -64,22 +64,27 @@ import SwiftyJSON
}).disposed(by: calendarOpenReuseDisposeBag) }).disposed(by: calendarOpenReuseDisposeBag)
}else if type == 1 { }else if type == 1 {
Observable.combineLatest(FUSSwiftCacheDataShare.share.isLogin,FUSSwiftCacheDataShare.share.switchStintConfig).delay(.seconds(1), scheduler: MainScheduler.instance).subscribe(onNext: {[weak self] isLogin, switchStintConfig in let roomId = dataJson["roomId"].stringValue
let behaviorLog = dataJson["behaviorLog"]
if isLogin && switchStintConfig != nil { let liveType = behaviorLog["liveType"].intValue
let roomId = dataJson["roomId"].stringValue self.fus_handleEnterRoom(roomId: roomId, behaviorLog: behaviorLog, liveType: liveType)
FUSRouter.live().fus_enterLiveRoom(roomId)
// Observable.combineLatest(FUSSwiftCacheDataShare.share.isLogin,FUSSwiftCacheDataShare.share.switchStintConfig).delay(.seconds(1), scheduler: MainScheduler.instance).subscribe(onNext: {[weak self] isLogin, switchStintConfig in
let behaviorLog = dataJson["behaviorLog"] //
let liveType = behaviorLog["liveType"].intValue // if isLogin && switchStintConfig != nil {
if liveType != 0 { // let roomId = dataJson["roomId"].stringValue
FUSDataStatisticsManager.fus_behaviorJoinRoomLog(withReqType: 5, reqEventType: liveType, extraInfo: "", extraJson: behaviorLog.rawString(options: .sortedKeys) ?? "", roomId: roomId) // FUSRouter.live().fus_enterLiveRoom(roomId)
} //
// let behaviorLog = dataJson["behaviorLog"]
self?.urlScheduleDisposeBag = DisposeBag() // let liveType = behaviorLog["liveType"].intValue
} // if liveType != 0 {
// FUSDataStatisticsManager.fus_behaviorJoinRoomLog(withReqType: 5, reqEventType: liveType, extraInfo: "", extraJson: behaviorLog.rawString(options: .sortedKeys) ?? "", roomId: roomId)
}).disposed(by: urlScheduleDisposeBag) // }
//
// self?.urlScheduleDisposeBag = DisposeBag()
// }
//
// }).disposed(by: urlScheduleDisposeBag)
} }
} }
...@@ -109,27 +114,36 @@ import SwiftyJSON ...@@ -109,27 +114,36 @@ import SwiftyJSON
FUSDataStatisticsManager.fus_behaviorExternalCallLog(withReqType: reqType, reqEventType: -1, reqJson: behaviorLog.rawString(options: .sortedKeys) ?? "") FUSDataStatisticsManager.fus_behaviorExternalCallLog(withReqType: reqType, reqEventType: -1, reqJson: behaviorLog.rawString(options: .sortedKeys) ?? "")
} }
let type = FUSOutsideJumpAPPType(rawValue: dataJson["type"].intValue)
if type == .EnterRoom {
// 进入房间这一块单独拿出来,因为要耦合手动登录后查询推荐房间的进入房间
let roomId = data["paramInfo"].stringValue
let behaviorLog = dataJson["behaviorLog"]
let liveType = behaviorLog["liveType"].intValue
fus_handleEnterRoom(roomId: roomId, behaviorLog: behaviorLog, liveType: liveType)
return
}
Observable.combineLatest(FUSSwiftCacheDataShare.share.isLogin,FUSSwiftCacheDataShare.share.switchStintConfig).delay(.seconds(1), scheduler: MainScheduler.instance).subscribe(onNext: {[weak self] isLogin, switchStintConfig in Observable.combineLatest(FUSSwiftCacheDataShare.share.isLogin,FUSSwiftCacheDataShare.share.switchStintConfig).delay(.seconds(1), scheduler: MainScheduler.instance).subscribe(onNext: {[weak self] isLogin, switchStintConfig in
if isLogin && switchStintConfig != nil { if isLogin && switchStintConfig != nil {
let type = FUSOutsideJumpAPPType(rawValue: dataJson["type"].intValue)
switch type { switch type {
case .PushLive: case .PushLive:
FUSRouter.live().fus_pushLive() FUSRouter.live().fus_pushLive()
case .EnterRoom: case .EnterRoom:
let roomId = data["paramInfo"].stringValue // let roomId = data["paramInfo"].stringValue
// Mediator.Live?.enterLiveRoom(roomId: roomId, behaviorSrc: "1") //// Mediator.Live?.enterLiveRoom(roomId: roomId, behaviorSrc: "1")
FUSRouter.live().fus_enterLiveRoom(roomId) // FUSRouter.live().fus_enterLiveRoom(roomId)
//
let behaviorLog = dataJson["behaviorLog"] // let behaviorLog = dataJson["behaviorLog"]
let liveType = behaviorLog["liveType"].intValue // let liveType = behaviorLog["liveType"].intValue
if liveType != 0 { // if liveType != 0 {
FUSDataStatisticsManager.fus_behaviorJoinRoomLog(withReqType: 5, reqEventType: liveType, extraInfo: "", extraJson: behaviorLog.rawString(options: .sortedKeys) ?? "", roomId: roomId) // FUSDataStatisticsManager.fus_behaviorJoinRoomLog(withReqType: 5, reqEventType: liveType, extraInfo: "", extraJson: behaviorLog.rawString(options: .sortedKeys) ?? "", roomId: roomId)
} // }
break
case .EnterZone: case .EnterZone:
let uid = data["paramInfo"].stringValue let uid = data["paramInfo"].stringValue
...@@ -164,6 +178,56 @@ import SwiftyJSON ...@@ -164,6 +178,56 @@ import SwiftyJSON
} }
} }
} }
func fus_handleEnterRoom(roomId: String, behaviorLog: JSON, liveType: Int) {
let behaviorLogStr: String = behaviorLog.rawString(options: .sortedKeys) ?? ""
if FUSSwiftCacheDataShare.share.isLogin.value == true {
// 如果是已经是登录了的,那么就直接进入直播间,不做任何缓存
FUSRouter.live().fus_enterLiveRoom(roomId, behaviorSrc: "1")
if liveType != 0 {
FUSDataStatisticsManager.fus_behaviorJoinRoomLog(withReqType: 5, reqEventType: liveType, extraInfo: "", extraJson: behaviorLog.rawString(options: .sortedKeys) ?? "", roomId: roomId)
}
}else {
// 如果是没有登录的,就需要记录相关的东西,托管给手动登录进入直播间去管理
FUSSwiftCacheDataShare.share.recommendRoomId = roomId
FUSSwiftCacheDataShare.share.recommendExtraJson = behaviorLogStr
FUSSwiftCacheDataShare.share.recommendReqEventType = liveType
}
}
/// 检查并且进入网页分享的直播间
@objc static public func fus_checkAndEnterWebShareLiveRoom(isEnter: Bool) -> Bool {
if let recommendRoomId = FUSSwiftCacheDataShare.share.recommendRoomId,
recommendRoomId.count > 0 {
if isEnter == false {
// 如果不需要进入,则不进入,仅仅返回检查结果
return true
}
// 有指定的直播间
FUSRouter.live().fus_enterLiveRoom(recommendRoomId, behaviorSrc: "1")
let liveType = FUSSwiftCacheDataShare.share.recommendReqEventType
if liveType != 0 {
FUSDataStatisticsManager.fus_behaviorJoinRoomLog(withReqType: 5, reqEventType: liveType, extraInfo: "", extraJson: FUSSwiftCacheDataShare.share.recommendExtraJson ?? "", roomId: recommendRoomId)
}
// 完成了所有推荐的任务,清空数据,以防干扰
FUSSwiftCacheDataShare.share.recommendRoomId = nil
FUSSwiftCacheDataShare.share.recommendExtraJson = nil
FUSSwiftCacheDataShare.share.recommendReqEventType = 0
// 直播间:网页进入,然后推荐就确定不能进入了
FUSRouter.live().fus_setLaunchCompleteRecommendLiveRoom(2)
FUSRouter.live().fus_setLaunchCompleteWebShareLiveRoom(1)
return true
}
if isEnter == true {
// 作为最后才判定的网页,如果网页都不能进入,那么就代表都不能进入了
FUSRouter.live().fus_setLaunchCompleteRecommendLiveRoom(2)
FUSRouter.live().fus_setLaunchCompleteWebShareLiveRoom(2)
}
return false
}
} }
extension String { extension String {
......
...@@ -195,6 +195,14 @@ import SwiftyJSON ...@@ -195,6 +195,14 @@ import SwiftyJSON
/// 注册的时候绑定成功的标志性:1=绑定成功,0=绑定失败 /// 注册的时候绑定成功的标志性:1=绑定成功,0=绑定失败
public var registeredBindsuccess: Int = 0 public var registeredBindsuccess: Int = 0
// 网页或者其他分享相关
/// 网页或者其他地方分享的直播间id,需要保存下来,在手动登录之后请求服务器推荐直播间,再进入,如果无推荐直播间,就直接进入这个roomid
@objc public var recommendRoomId: String?
/// 网页或者其他地方分享的 额外参数,配合recommendRoomId使用
@objc public var recommendExtraJson: String? = ""
/// 网页或者其他地方分享的 类型,配合recommendRoomId使用
@objc public var recommendReqEventType: Int = 0
// - base // - base
public override init() { public override init() {
super.init() super.init()
......
...@@ -101,6 +101,11 @@ NS_ASSUME_NONNULL_BEGIN ...@@ -101,6 +101,11 @@ NS_ASSUME_NONNULL_BEGIN
- (void)fus_showVideoScoreQualityAlertView:(NSString *)sid; - (void)fus_showVideoScoreQualityAlertView:(NSString *)sid;
/// 第一次启动的时候,完成了推荐分享房间的操作,0=初始化,1= 有推荐分享并进入,2=没有推荐分享并且完成了
- (void)fus_setLaunchCompleteRecommendLiveRoom:(NSInteger)tag;
/// 第一次启动的时候,完成了网页分享房间的操作,0=初始化,1= 有网页分享并进入,2=没有网页分享并且完成了
- (void)fus_setLaunchCompleteWebShareLiveRoom:(NSInteger)tag;
#pragma mark - HTTP #pragma mark - HTTP
/** /**
* 追踪包房 * 追踪包房
......
...@@ -673,7 +673,7 @@ ...@@ -673,7 +673,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_ENTITLEMENTS = FuSiLive/FuSiLive.entitlements; CODE_SIGN_ENTITLEMENTS = FuSiLive/FuSiLive.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202506260032; CURRENT_PROJECT_VERSION = 202506260033;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 6GG26BHUMC; DEVELOPMENT_TEAM = 6GG26BHUMC;
ENABLE_ON_DEMAND_RESOURCES = NO; ENABLE_ON_DEMAND_RESOURCES = NO;
...@@ -938,7 +938,7 @@ ...@@ -938,7 +938,7 @@
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CODE_SIGN_ENTITLEMENTS = FuSiLive/FuSiLive.entitlements; CODE_SIGN_ENTITLEMENTS = FuSiLive/FuSiLive.entitlements;
CODE_SIGN_STYLE = Automatic; CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202506260032; CURRENT_PROJECT_VERSION = 202506260033;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 6GG26BHUMC; DEVELOPMENT_TEAM = 6GG26BHUMC;
ENABLE_ON_DEMAND_RESOURCES = NO; ENABLE_ON_DEMAND_RESOURCES = NO;
......
...@@ -28,6 +28,46 @@ import RxSwift ...@@ -28,6 +28,46 @@ import RxSwift
let _ = ProcessInfo.processInfo.thermalState let _ = ProcessInfo.processInfo.thermalState
// 注册监听热量状态变化的通知 // 注册监听热量状态变化的通知
NotificationCenter.default.addObserver(self, selector: #selector(handleThermalStateChange), name: ProcessInfo.thermalStateDidChangeNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(handleThermalStateChange), name: ProcessInfo.thermalStateDidChangeNotification, object: nil)
// 每次退出登录的时候,都设置一遍列表仍为加载
FUSSwiftCacheDataShare.share.isLogin
.distinctUntilChanged()
.filter({ $0 == false })
.subscribe(onNext: {[weak self] _ in
self?.liveRoomsDataDidLoaded.accept(false)
self?.loginAlertViewIsComplete.accept(false)
self?.recommendLiveRoomHasShow = false
self?.launchCompleteRecommendLiveRoom.accept(0)
self?.launchCompleteWebShareLiveRoom.accept(0)
})
.disposed(by: disposeBag)
// 每一次房间列表加载完成状态的改变
Observable.combineLatest(self.liveRoomsDataDidLoaded, self.loginAlertViewIsComplete)
.subscribe(onNext: {[weak self] liveRoomsDataDidLoaded, loginAlertViewIsComplete in
guard let self = self else { return }
if liveRoomsDataDidLoaded == true &&
loginAlertViewIsComplete == true {
if self.recommendLiveRoomHasShow == true {
// 每次登录只整一次
return
}
self.recommendLiveRoomHasShow = true
// 当每一次房间列表从未加载变成加载完成的状态
if self.isManualLoginBehavior.value == true {
// 是手动登录的
// Mediator.HomeList?.ff_getSuccessRecommendResult()
}
else {
// 不是手动登录的,所以不会触发推荐房间,那么检查一下是否有分享房间的缓存
let _ = FUSHandleEventHelper.fus_checkAndEnterWebShareLiveRoom(isEnter: true)
}
}
})
.disposed(by: disposeBag)
} }
...@@ -204,18 +244,29 @@ import RxSwift ...@@ -204,18 +244,29 @@ import RxSwift
// } // }
// // 这里控制着几个非常复杂的逻辑,要求的过程是在登录期间:1.首页信息加载完成+弹窗弹完了--->2.检查是否能进入推荐房间,并且进入。--->3.如果没有推荐进入房间,则立刻弹出7天签到,如果进入了推荐房间,则退出推荐房间再进行7天签到 // 这里控制着几个非常复杂的逻辑,要求的过程是在登录期间:1.首页信息加载完成+弹窗弹完了--->2.检查是否能进入推荐房间,并且进入。--->3.如果没有推荐进入房间,则立刻弹出7天签到,如果进入了推荐房间,则退出推荐房间再进行7天签到
// /// 直播间房间已经加载过 /// 直播间房间已经加载过
// public let liveRoomsDataDidLoaded: BehaviorRelay<Bool> = .init(value: false) public let liveRoomsDataDidLoaded: BehaviorRelay<Bool> = .init(value: false)
// /// 登录期间,弹窗已经弹完了 /// 登录期间,弹窗已经弹完了
// public let loginAlertViewIsComplete: BehaviorRelay<Bool> = .init(value: false) public let loginAlertViewIsComplete: BehaviorRelay<Bool> = .init(value: false)
// /// 第一次启动的时候,完成了推荐分享房间的操作,0=初始化,1= 有推荐分享并进入,2=没有推荐分享并且完成了 /// 第一次启动的时候,完成了推荐分享房间的操作,0=初始化,1= 有推荐分享并进入,2=没有推荐分享并且完成了
// public let launchCompleteRecommendLiveRoom: BehaviorRelay<Int> = .init(value: 0) public let launchCompleteRecommendLiveRoom: BehaviorRelay<Int> = .init(value: 0)
// /// 第一次启动的时候,完成了网页分享房间的操作,0=初始化,1= 有网页分享并进入,2=没有网页分享并且完成了 @objc public var oc_launchCompleteRecommendLiveRoom: Int {
// public let launchCompleteWebShareLiveRoom: BehaviorRelay<Int> = .init(value: 0) get { self.launchCompleteRecommendLiveRoom.value }
// set { self.launchCompleteRecommendLiveRoom.accept(newValue) }
// /// 是否通过账号/第三方登陆进来,是为true,如果是自动登录,也就是重新打开app进来的为false }
// public let isManualLoginBehavior: BehaviorRelay<Bool> = .init(value: false) /// 第一次启动的时候,完成了网页分享房间的操作,0=初始化,1= 有网页分享并进入,2=没有网页分享并且完成了
public let launchCompleteWebShareLiveRoom: BehaviorRelay<Int> = .init(value: 0)
@objc public var oc_launchCompleteWebShareLiveRoom: Int {
get { self.launchCompleteWebShareLiveRoom.value }
set { self.launchCompleteWebShareLiveRoom.accept(newValue) }
}
/// 这一次登录是否已经检查过推荐房间了
private var recommendLiveRoomHasShow = false
/// 是否通过账号/第三方登陆进来,是为true,如果是自动登录,也就是重新打开app进来的为false
public let isManualLoginBehavior: BehaviorRelay<Bool> = .init(value: false)
/// 当前的推流 View /// 当前的推流 View
@objc public var currentPushView:FUSStreamPushView? { @objc public var currentPushView:FUSStreamPushView? {
......
...@@ -642,6 +642,14 @@ ...@@ -642,6 +642,14 @@
menuView.dismissHandler = dismissHandle; menuView.dismissHandler = dismissHandle;
} }
- (void)fus_setLaunchCompleteRecommendLiveRoom:(NSInteger)tag {
[FUSSwiftLiveHelper shared].oc_launchCompleteRecommendLiveRoom = tag;
}
- (void)fus_setLaunchCompleteWebShareLiveRoom:(NSInteger)tag {
[FUSSwiftLiveHelper shared].oc_launchCompleteWebShareLiveRoom = tag;
}
#pragma mark - HTTP #pragma mark - HTTP
/** /**
* 追踪包房 * 追踪包房
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment