一, 思维导图分析
二, 类的分析
Base
PXXRoomBaseModule
基础组件
1.请求房间基本信息。设置最大重复请求次数
2.配置 PXXLiveHouseLimitManager
public:
1.请求房间基本信息:loadData:rootview:
(PXXLiveHouseLimitManager):房间限制管理:密码限制,
是否有邀请码等
Normal
PXXRoomContentModeNormal:PXXRoomContentMode
直播间组件控制加载 private 业务流程: 1.设置直播间进入信息 setRoomInfo: 2.设置直播间装载容器(键盘监听)setController: 3.创建直播间逻辑功能 createRoomFunction: 4.创建初始化模块组件 loadRoomModules: 5.加载内容:moduleDidLoad didLoad 6. VC.videDidLoaded -> 创建Root容器:createRootContentView 6.1 创建Root容器 -> 横屏视图 createLandscapeView 6.2 创建Root容器 -> 竖屏视图 createPortraitView 6.3 创建Root容器 -> 根视图 createRootLayout 6.4 创建Root容器 -> 添加点击事件 addTapGestureRecognizer 7. VC.videDidLoaded -> 分发消息:createDefaultInterface 8. VC.videDidLoaded -> 请求baseInfo :loadRoomData: 9. VC.viewWillAppear -> 分发消息: viewWillAppear 10.VC.viewDidAppear -> 分发消息: viewDidAppear 11.VC.viewWillDisappear -> 分发消息: viewWillDisappear 12.VC.viewDidDisappear -> 分发消息: viewDidDisappear 13.VC.willRotateToInterfaceOrientation -> 分发消息 14.VC.didRotateFromInterfaceOrientation -> 分发消息
Modules
Extension
PXXRoomModule (PXXRoomModuleSearchResult)
PXXRoomModule Extension 组件工厂: 内容简介 1.获取其他功能和业务组件
PXXRoomNoticeModule
直播间通知组件:直播间状态改变通知 private: 1.长链解析:MESSAGE_TYPE_STEAMCUT:10 断流-> onNoticeSteamCut :MESSAGE_TYPE_BANROOM:11 封禁 -> onNoticeBan :MESSAGE_TYPE_SEALUP:20 整改 -> onNoticeSealup :MESSAGE_TYPE_UNSEAL:21 接触整改 -> onNoticeUnseal :MESSAGE_TYPE_LIGHT_REMIND:22 显示轻度提醒 -> sendLightRemind :MESSAGE_TYPE_UN_LIGHT_REMIND:23 解除轻度提醒 -> removeLightRemind 2.更改 PXXRoomStateContext.statetype 3.更改 PXXRoomStateContext.errortype public: 1.首充提示:onRechargeRemindState:(NSNotification *)notification 2.支付完成:rechargeFinish;
PXXRoomUserModule
直播间用户信息组件:用户权限变更,信息变更,主播开播提醒 private: 1.长链解析:MESSAGE_TYPE_GRANT:209 给用户分配权限的通知 -> updateUserInfoWithDictionary 2.长链解析:MESSAGE_TYPE_REVOKE:210 解除用户权限 -> updateUserInfoWithDictionary 3.请求是否已经关注了当前主播 -> requestIsFollowed 4.添加用户信息变化通知 -> onAccountState -> 分发:userLogin -> 分发:userLogout
PXXRoomAnchorModule
直播间主播信息组件: 简介:直播间主播信息更改,观看人数。主播身高,主播经验 private 1.长链解析:MESSAGE_TYPE_VIEWERS:207 观看人数更新 2.长链解析:MESSAGE_TYPE_HEIGHT :208 主播身高更新 3.长链解析:MESSAGE_TYPE_UPDATE_ANCHORLEVEL_VALUE :212 主播经验更新提示
PXXRoomSideBarModule
直播间右边栏组件:管理直播间内活动按钮 简介:统一管理直播间竖屏状态下活动按钮,根据产品优先级排列顺序,并实现相关按钮的点击事件和效果。 private 1.按钮:PXXRoomSideBar_PKButton 100 //PK按钮 2.按钮:PXXRoomSideBar_CompetitionButton 200 //竞技按钮 3.按钮:PXXRoomSideBar_ManyLuckyButton 300 //多人挖宝 4.按钮:PXXRoomSideBar_LuckyButton 400 //普通抽奖 5.按钮:PXXRoomSideBar_RechargeTask 450 //时效任务 6.按钮:PXXRoomSideBar_AccompanyPlayButton 500 //主播陪玩 7.按钮:PXXRoomSideBar_RewardButton 600 //新主播打赏 对外使用接口 1.根据优先级创建按钮 -> createSideButtonByPriority:action: 2.车队显示更新边栏组件 -> showCarTeamView: 3.根据优先级设置按钮的显示状态 -> updateButtonPriority:show: 4.根据优先级设置按钮的选择状态 -> updateButtonPriority:select: 5.根据优先级设置按钮的文案 -> updateButtonPriority:title: 6.根据优先级设置按钮的normalImg -> updateButtonPriority:normalImg: 7.根据优先级设置按钮的hightImg -> updateButtonPriority:hightImg: 8.根据优先级设置按钮的文案 -> updateButtonPriority:tagInteger:
ManyPeopleLuckyDraw
多人挖宝组件: 简介:竖屏触发按钮由PXXRoomSideBarModule管理 public 1.更新多人挖宝的信息 -> requestInfo 2.清空多人挖宝的信息 -> clearData 3. -> configLuckyDrawInfo 4. -> addLuckyActionBlock 5. -> addClickLuckyActionBlock 6. -> addUpdateLuckyActionBlock 7. -> addHiddenLuckyViewActionBlock 8. -> addLuckySendGiftActionBlock 9. -> addLuckyToastActionBlock
PXXRechargeTaskModule
用户限时任务组件: 简介:类型区分:英雄学院 限时好礼 金色礼包 渡劫飞升,竖屏触发按钮由PXXRoomSideBarModule管理 private: 1.请求限时任务数据:requestRechargeTaskInfo 2.viewDidAppear -> requestRechargeTaskInfoIfNeeded 3.applicationBecomeActive -> requestRechargeTaskInfoIfNeeded public: 1.PXXRoomRechargeTaskManager -> updateData: superview: 2.添加TaskView容器视图,设置TaskView的回调事件: setupControl: 3.装载TaskView视图: setData: 4.添加右边栏时效任务按钮: PXXRoomSideBar_RechargeTask 5.更新右边栏时效任务按钮图片: updateImgWithType 6.当天第一次展示充值任务面板: showTaskViewOrEntranceView
PXXAccompanyToPlayModule
简介: 1.陪玩竖屏触发按钮由PXXRoomSideBarModule管理 2.陪玩视图管理:PXXRoomAccompanyToPlayManager private: 1.长链数据解析:MESSAGE_TYPE_ACCOMPANYTOPLAY -> onAccompanyMessage 2.请求当前直播间的陪玩信息:showAccompanyToPlayViewNeeded 3.添加右边栏陪玩按钮: showAccompanyToPlayViewNeeded 4.显示陪玩视图容器: showAccompanyToPlayView
PXXRoomRegisterModule
注册引导组件:(已经删除)
PXXRoomADModule
广告组件:展示直播间视频广告组件 1.监听长链数据解析:MESSAGE_TYPE_GOOGLE_DPF -> receiveGoogleAd 2.设置ADModule -> setupADModule 3.当播放音频时, 禁用广告:addVideoTypeChangeObserver 4.ad横竖屏UI,横竖屏切换效果 5.实现PXXADModuleCenterProtocol public: 1.(void)videoRestart
PXXRoomCustomSkinModule
直播间皮肤组件:熊猫三周年皮肤 1.下载直播间皮肤信息: downloadSkinImage 2.更新直播间皮肤信息: updateSegmentView 直播间皮肤更改 : updateInputView 输入框皮肤更改
PXXCarStationOptimizeModule
车站功能组件: 1.长链解析: MESSAGE_TYPE_CARSTATION_GIFTPAG 粉丝礼包 -> receiveCarStationGiftPag 1.长链解析: MESSAGE_TYPE_CARSTATION_NOTIFICATION -> appendChatRoomMessage 1.长链解析: MESSAGE_TYPE_CARSTATION_BEFANS -> configGiftInfoWithMessage 2.请求粉丝徽章信息 -> requestCarStationFansBagInfo 3.显示车站容器: showCarStationSendView 内容: 1.PXXCarStationGiftSendView 车队礼物发送 -> requestToOpenGiftPag 发送礼物 2.PXXCarStationGiftSendView -> hideCarStationSendView 3.PXXCarStationGiftReceiveView 车队礼物接受 -> hideCarStationReceiveView
PXXRoomAnchorPKModule
主播PK组件: 对外功能:全屏弹出礼物视图时, 主播pk视图如果存在, 就自动上移 -> moveYProgressView: 1.长链解析: MESSAGE_TYPE_ANCHOR_PK_START_OR_FINISH -> onAnchorPKCreate 1.长链解析: MESSAGE_TYPE_ANCHOR_PK_SCORE_CHANGE -> onAnchorPKScoreChange 1.长链解析: MESSAGE_TYPE_ANCHOR_PK_RESULT_NOTIFICATION -> onAnchorPKNotify 2.请求主播 pk 的信息 -> requestAnchorPkInfoIfNeeded 3.横竖屏UI展示切换 -> setAnchorPkViewFullScreenStatus: 内部逻辑 1. requestAnchorPkInfoIfNeeded -> showAnchorPkView 2. onAnchorPKCreate:type.integerValue == 1 -> receiveShowAnchorPkView 2. onAnchorPKCreate:type.integerValue == 2 -> receiveStartAnchorPkPunishment 2. onAnchorPKCreate:type.integerValue == 3 -> receiveAnchorPKWillRemove 3. onAnchorPKScoreChange -> receiveUpdateAnchorPkScore 4. onAnchorPKNotify -> receiveAnchorPKNotify
QunarRedPacketModule
去哪红包组件: 对外功能: 显示去哪网红包 -> showQunarRedPacketView: 1.videDidLoaded -> showQunarRedPacketViewIfNeeded 2.QunarRedPacketViewMgr -> _redPacketViewClick 跳转直播间
PXXTeamFlagModule
战队队旗组件: 1.长链数据解析:MESSAGE_TYPE_CARTEAMFLAG_BUY -> configGiftInfoWithMessage
PXXBackgroundModule
后台播放管理组件:(冗余代码比较多) 1.添加监听-> applicationWillResignActive:,applicationDidBecomeActive: 2.监听网络-> networkStatusNotification: 3.applicationWillResignActive -> canPlayBackground,endTaskTimer 4.applicationDidBecomeActive -> alertPlayBackground,beginTaskTimer 内部逻辑 1.canPlayBackground:同意后台播放 -> NOTIFY_FlowPackag_EnterBackGround 2.didLeaveRoom 3.alertPlayBackground:设置后台播放,权限
PXXEnterRoomFunctionModule
进入直播间功能组件: 公用方法: 1.隐藏提示用户登录:hideRemindLoginView 2.显示一血:showFirstBloodViewIfNeed 内部逻辑: 1.提示用户登录:showRemindFollowView 2.一血:buildFirstBloodModule 3.显示一血:appendFirstBloodTimer -> ensureFromServerBeforeShow UI 1.firstBloodView 一血视图 2.PXXRemindLoginView 登录视图
PXXLeaveRoomSubscribeModule
直播间订阅组件: 公用方法 1.退出直播间:leaveroom 2.直播观看时长计时:startTimer 3.显示订阅提醒:showSubscribeToastIfNeeded 4.隐藏订阅提醒:hiddenSubscribeToastIfNeeded 内部逻辑: 1.startTimer 开启显示订阅提醒倒计时:10分钟 2.LeaveRoomSubscribeView -> leaveRoomBlock,leaveRoomWithSubscribe 3. leaveRoomWithSubscribe -> requestFollow
PXXNewAnchorRewardModule
新主播打赏组件: 1.长链解析:MESSAGE_TYPE_UPDATE_NEW_ANCHOR_REWARD_INFO -> updateRoomInfoData 内容 PXXRoomRewardViewManager
PXXLivePKModule
礼炮PK组件: 相关内容 1.长链解析:MESSAGE_TYPE_PK_GAME_STATUS ctype == 1 -> showPkGameBtnWithData, ctype == 2 -> updatePkGameProgressWithData ctype == 3 -> updatePkGameProgressWithData ctype == 4 -> updatePkGameCardWithData 2.applicationBecomeActive->requestAnchorPkInfoIfNeeded->showPkGameBtnWithData 3.showPkGameBtnWithData: 3.1 显示PK按钮,展示当前主播PK状态文案 -> showPkGameBtn: 3.2 装载横屏PK视图容器,载入数据 -> portraitView.setData 3.3 装载竖屏PK视图容器,载入数据 -> pkGameFullscreenView.setData 3.4 加载竖屏,横屏PK视图中提示文案 -> updateKillString:introString 3.5 显示礼炮PK按钮 4. updatePkGameProgressWithData: 4.1 更新分数展示信息:updateProgessScoreAndShowBtnState 4.2 更新结果信息:_updateWinnerView 容器功能: 1.发送礼物 2.PK结束抽奖
PXXRoomLotteryModule
普通抽奖组件: 公共方法: 1.刷新粉丝徽章等级 requestFansLevelIfNeeded 相关内容 1.长链解析:MESSAGE_TYPE_LUCKYDRAW_START 1.1 LuckyDrawProgressPrepare -> chatDispatchLuckdrawStart 1.2 LuckyDrawProgressUnstart -> chatDispatchLuckdrawStart 1.3 PXXLuckyDrawManager -> updateLuckyDrawView 2.长链解析:MESSAGE_TYPE_LUCKYDRAW_END 2.1 PXXLuckyDrawManager -> addLuckdrawParticipant:nickName:luckydrawId: 3.长链解析:MESSAGE_TYPE_UPDATE_MY_ROOM_FANS_LEVEL 3.1 updateFansLevelAndActiveForLuckydraw 4.请求抽奖 -> queryPlatformLuckyDraw 容器内容: PXXLuckyDrawManager
PXXUserInformationModule
用户信息组件:简介 公共方法: 1.显示用户信息:showUserInformationViewWith: 2.隐藏用户信息:hiddenUserInformationView 3.获取当前最近的访问者:getCurrentRecentlyVisitor 容器内容: 1.访问者管理:RecentlyVisitor 2.PXXUserInformationModalView
PXXRoomAudioPlayModule
控制蒙层和声音播放组件: 网宿流量使用 公共方法: 1.显示网络提示弹框: showNetworkAlertView 2.隐藏网络提示弹框: hideNetWorkAlertView 容器内容: 1.NonWifiLayerControlImplNew
PXXRoomRecommendModule
直播间推荐模块: 公共方法: 1.请求推荐数据:loadRecommendData 2.隐藏推荐view:hideRecommendView 3.推荐view是否显示:isShowRecommendView 内容方法: 1.addContextKVO -> updateRecommendViewState 2.长链解析:MESSAGE_TYPE_TURNCHANNEL -> receiveTurnChannel 3.请求推荐信息:requestRecommendData 容器: 1.PXXLiveRecommendedView
PXXRoomFansBadgeModule
粉丝徽章组件: 公共方法: 1.显示,隐藏粉丝徽章视图 2.更改用户佩戴的粉丝徽章 3.更新粉丝徽章 4.更新粉丝徽章等级 内容: 1.长链解析:MESSAGE_TYPE_UPDATE_FANSBADGE:徽章等级升级 容器: 1.PXXNormalPortraitFansBadgeModel
PXXRoomHeroSkillsModule
英雄体系组件 英雄体系技能竖屏UI,英雄技能使用方法 英雄技能经验竖屏UI 英雄技能使用后数据解析:英雄礼包,礼物变化
PXXVoteModule
投票组件 内容: 1.长链解析:MESSAGE_TYPE_VOTE_START -> 投票开始 2.长链解析:MESSAGE_TYPE_VOTE_END -> 结束投票 3.长链解析:MESSAGE_TYPE_VOTE_UPDATE -> 投票更新 容器: 1.PXXVoteManager
PXXRoomPushControllerModule
直播间跳转管理组件 实现直播间跳转的其他直播间的功能统一管理
PXXShortVideoContributeMoudule
高能时刻录制组件 简介: 1.直播间录屏组件 2.UI只在横屏 3.可录制一定时长的直播视频 公开方法: 1.横竖屏显示:showShortVideoContributeViewWith
PXXRoomCarteamModule
车队组件 1.长链解析:MESSAGE_TYPE_UPDATE_LIVEROOM_CARTEAM_NUM_NEW -> receiveCarteamNumChange 2.长链解析:MESSAGE_TYPE_UPDATE_LIVEROOM_ACTION_NOFITY -> receiveUpdateLiveroomMyAttendingCarteam
PXXRoomTaskModule
直播间竹子领取定时任务组件 简介: 1.用户登入进入直播间开启竹子领取任务 2.竹子领取相关UI只支持竖屏 3.用户退出直播间,当前阶段到计时停滞 4.完成一个阶段的竹子领取时,领取按钮有相关提示
PXXRoomCurrentGiftModule
直播间礼物组件 公共方法 1.更新背包数据 2.更新礼物数据 3.更新戳主播数据 4.发送背包礼物 5.发送礼物(竹子和礼物) 6.发送竹子 7.发送礼物
PXXGuessCompetitonModule
直播间竞猜组件 公共方法: 1.显示竖屏的竞猜View 2.显示横屏的竞猜View
PXXRoomLuckyDrawModule
直播间宝箱掉落组件 公共方法: 1.创建礼物掉落宝箱 2.创建红包掉落宝箱 3.礼物宝箱数据解析
MainModule
PXXRoomVideoModule
视频播放组件 简介:直播间播放控制组件,提供直播播放的控制方法
PXXRoomMessageModule
长链消息分发组件 简介:长链消息管理组件。
PXXRoomBannerModule
横幅组件 公共方法: 1.根据指定平台礼物信息展示横幅:showBannerWithPlatGiftMessage 2.获取礼物动画管理者:updateGiftAnimationViewLevel 简介:解析长链,根据不同的长链类型解析不同的横幅礼物
PXXRoomEnterSpecialModule
进场特效组件 public: 1.添加当前用户进场特效 appendCurrentUserEnterSpecial 2.配置进场特效是否被屏蔽 configEnterSpecialIsShield
PXXRoomBarrageSettingModule
弹幕管理组件
PXXRoomWorldBarrageModule
世界弹幕组件 public 1.添加世界弹幕:appendWorldBarrageWithModel 2.世界弹幕是否被屏蔽:worldInfoIsShield
PXXRoomChatModule
普通弹幕组件 public: 1.添加礼物聊天信息:appendGiftChatMessage 2.添加聊天信息:appendChatMessage(在聊天室与全屏弹幕中添加聊天信息) 3.添加聊天信息:appendRoomChatMessage(在聊天室中添加聊天信息) 4.发送聊天信息:sendChatMessage
PXXRoomPayBarrageModule
高能弹幕组件 public: 1.高能弹幕竖屏视图:getPayBarrageView 2.高能弹幕横屏视图:getFullPayBarrageView 3.接收聊天消息:recieveChatMessage 4.配置弹幕是否被屏蔽:configBarrageIsShield
PXXRoomEmojiModule
Emoji表情组件 public: 1.获取表情管理:getChatEmojiManager 2.获取全部png表情信息:getAllPngEmojiDictionary 3.获取全部gif表情信息:getAllGifEmojiDictionary 4.获取表情数量:getEmojiCount
PXXRoomBarrageModule
全屏弹幕层组件 public: 1.获取全屏弹幕视图:getFullBarrageView 2.接收聊天消息:recieveChatMessage: 3.添加用户自己聊天信息:appendCurrentUserChatMessage: 4.添加用户自己聊天信息:appendCurrentUserNormalChatMessage: 5.添加礼物聊天信息:appendGiftChatMessage 6.配置弹幕是否被屏蔽:configBarrageIsShield:
PXXScreenAreaAnimateModule
视频区域动画组件
PXXRoomAnimationModule
直播间视图区域管理组件 public: 1.从英雄视图跳转其他房间:jumpToOtherRoom:heroView: 2.跳转其他房间: jumpToOtherRoom:origin: 3.配置高能弹幕视图 configPayBarrageView 4.配置世界弹幕视图 configWorldBarrageView: 5.配置进场特效视图 configEnterSpecialView:
UIModule
PXXRoomLineSettingContributeMoudule
直播线路管理组件 public: 1.显示直播间线路设置showRoomLineSettingContributeModule 2.隐藏直播间线路设置 showRoomLineSettingContributeModule 3:设置直播间setVideoLineSwitch
PXXRoomInteractionMoudule
直播间交互管理组件 public: 1.隐藏/显示轻度提醒 :showLightRemind 2.隐藏/显示轻度提醒视图:removeLightRemin 3.移除轻度提醒:removeLightRemind 4.是否睡眠退出状态:getbDormancyDestory 5.展示全屏提示:showFullScreenToast:
PXXRoomExtendedMoudule
直播间扩展组件 public: 直播间扩展view管理 1.addExtAreaViewBlock:forKey: 2.addExtAreaItemClassString:forKey: 3.updateTabFromExtData: 4.updateExtendedItem:isShowShortVideoTab: 5.arrayTabData 6.findExtendedViewFormTag: 7.findSegmentIndexFormTag: 8.findExtendedItemFormType: 9.scrollToExtendedViewSegmentIndex:animated: 10.scrollToExtendedViewFromTag:animated: 11.updateSegmentCustomSkinImg 12.setScrollEnable
RoomCore
PXXRoomContentMode
直播组件管理基类
PXXKeyboardListener
键盘监听组件
ModuleCenter
组件管理中心 1.功能组件化管理 2.组件方法消息调用 public: 1.setRoomFunction: 2.setRoomContext: 3.loadModulesfromClass: 4.loadModulesFromPlistFile: 5.loadModule: 6.unloadModule:
PXXRoomFunction
功能组件 public: 1.允许屏幕旋转:enableAutorotate: 2.转换屏幕方向:transformScreenOrientation: 3.转换屏幕方向:transformScreenOrientation:complete: 4.退出房间:leaveRoom 5.登录判断:popupLoginIfLogout 6.直播间弹:toast:showToast: 7.通用提示充值:pushRechargeControllerAndSource: 8.通用进入猫店,目前世界弹幕使用:pushCatShop 9.判断的是主播在自己房间发言:isHostEnterRoomSendMsg 10.buyWangsuFlowPackage 11.flowPackageSetting 12.退出全屏:leaveFullscreenMode
PXXRoomModule
组件基类:用于功能组件继承;
PXXRoomStateContext
房间基础信息组件 1.保存直播间部分状态和内容信息