Compare commits

...

287 Commits

Author SHA1 Message Date
edwinQQQ
12c76609c5 在 XPHomePartyViewController、XPNewHomePartyCollectionViewCell 和 XPPartyRoomItemCollectionViewCell 中新增 prepareForReuse 方法以优化内存管理,确保在复用时清理资源。更新 XPRoomViewController 以实现房间UID的CP拉取逻辑,并在 dealloc 方法中添加资源释放保障。优化 MicMidpointRectManager 中的安全级别计算逻辑,确保代码整洁性。 2025-09-24 19:40:50 +08:00
edwinQQQ
6da253b403 更新 Podfile 以将 iOS 部署目标从 11.0 升级至 13.0;在 XPRoomViewController 中实现统一的消息分发方法,支持 DiffableDataSource 和原有系统的消息处理;新增 XPMessageItem 和 XPMessageDataSourceManager 以支持 DiffableDataSource 的消息管理,优化消息插入和更新逻辑;在 MsRoomMessageMainView 和 XPRoomMessageContainerView 中实现 DiffableDataSource 支持,确保 UI 更新的安全性。 2025-09-23 14:56:52 +08:00
edwinQQQ
a0b4cc5495 新增礼物特效开关的用户覆盖标记功能,更新 TurboModeStateManager 以支持从用户手动操作的状态更新,同时在房间进入时重置用户覆盖标记。确保在处理房间信息更新时同步礼物特效状态。 2025-09-23 10:47:34 +08:00
edwinQQQ
253a3480f5 更新 XPMineUserInfoEditViewController 以支持 GIF 图像上传,修改视频时长检查逻辑,确保错误提示信息动态化,同时更新本地化字符串以反映视频时长的变化。 2025-09-22 22:47:55 +08:00
edwinQQQ
3a817bb947 在 MsRoomMessageMainView 和 XPRoomMessageContainerView 中添加了主线程调度以确保 UI 更新的安全性,同时实现了安全插入逻辑以处理数据与 UI 不一致的情况,优化了本地化字符串以提升用户体验。 2025-09-22 16:18:07 +08:00
edwinQQQ
ae0f1993e3 移除公共房间管理器中的配置更新通知逻辑,新增 RtcManager 的代理更新方法以支持动态代理切换,优化 StageViewManager 的清理逻辑,确保在清理过程中正确处理视图层级和内存管理,同时更新本地化字符串以提升用户体验。 2025-09-22 15:22:07 +08:00
edwinQQQ
024936570c 优化音量评估参数,将最大评估时间从900毫秒更改为300毫秒;在处理公共房间消息时,新增对 NIM 通知对象的类型检查,确保在特定事件类型下不进行处理;扩展礼物和游戏相关的横幅清理逻辑,确保在特定条件下正确移除横幅;新增清理 CP 相关横幅的逻辑,确保在关闭礼物特效时不再展示;实现麦克风队列的深度复制,确保数据一致性;重置声波动画状态以避免视图复用问题。 2025-09-19 23:17:56 +08:00
edwinQQQ
33e42234ca 删除当前用户切换麦克风时的云信消息发送流程文档,并修复视频时长检查逻辑,将最大时长从555秒更改为10秒,同时更新本地化字符串以反映此更改。确保代码整洁性和可读性。 2025-09-19 17:36:35 +08:00
edwinQQQ
11795a57a1 注释掉了处理 NIM 通知消息中的用户 ID 比较逻辑,以提升代码整洁性和可读性。 2025-09-19 12:01:16 +08:00
edwinQQQ
55e78cade4 移除旧的房间进度条背景图像,新增房间进度条组图像,并更新相关的 Contents.json 文件以反映更改。同时,注释掉了比值标签的发光和描边效果代码,以提升代码整洁性。 2025-09-19 11:52:24 +08:00
edwinQQQ
651db0121b 移除多个文件中的 TODO 注释,提升代码整洁性和可读性。 2025-09-18 17:36:53 +08:00
edwinQQQ
22c7cdb1e8 移除多个文件中的 TODO 注释,优化代码可读性,增强逻辑清晰度。 2025-09-18 14:30:21 +08:00
edwinQQQ
ddd54b96c5 移除与“精灵夺宝”相关的代码和逻辑,优化 UI 元素的约束设置,增强按钮的适应性和可读性,同时更新本地化字符串以确保准确性。 2025-09-18 14:22:39 +08:00
edwinQQQ
888098e2a5 移除“精灵夺宝”相关内容 2025-09-18 11:23:48 +08:00
edwinQQQ
ea849eba1a 优化 XPRoomAnchorInfoCardView 和 XPRoomFunctionContainerView 的布局约束,调整 descLabel 的约束以支持多行文本显示,并在 followBtnClick 方法中添加错误处理逻辑以增强用户体验。使用弱引用和强引用来避免循环引用。 2025-09-17 19:18:30 +08:00
edwinQQQ
b446deb18f 新增同步房间礼物特效状态到 TurboModeStateManager 的逻辑,确保房间设置更新时正确传递特效状态,并记录相关日志以便调试。 2025-09-17 18:55:17 +08:00
edwinQQQ
ab5b704866 修复 Turbo Mode 相关逻辑,确保使用正确的公开接口获取开关状态,优化代码结构和可读性。更新 RoomHeaderView 中的礼物特效显示逻辑,添加 Turbo Mode 状态变化的通知处理,提升用户体验。 2025-09-17 18:44:26 +08:00
edwinQQQ
67f9fb5113 remove some unused images 2025-09-17 17:58:17 +08:00
edwinQQQ
37baab0af4 更新 XPPartyRoomItemCollectionViewCell,替换 subLabel 为 MarqueeLabel 以支持滚动文本,新增 levelImageView 属性并设置约束。优化 BoomInfoViewController 中比值计算逻辑,确保在速度为 100 时正确显示比值。调整 XPRoomFunctionContainerView 和 XPEffectPanelViewController 中的开关逻辑,移除 CP 麦位开关相关代码,提升代码整洁性和可维护性。 2025-09-17 16:21:16 +08:00
edwinQQQ
6e516fb9a6 更新多个视图中的 UILabel 属性,设置 numberOfLines 为 0 以支持多行文本显示,并启用 adjustsFontSizeToFitWidth 以优化字体适应性。同时,在 XPRoomMessageContainerView 中新增 forceReloadNextAppend 属性,增强消息处理逻辑的灵活性。更新本地化字符串,确保 CP 麦克风显示和 Turbo 模式的相关提示信息准确无误。 2025-09-16 22:24:42 +08:00
edwinQQQ
eb0feb1b73 新增控制堆栈视图以优化房间推荐视图的布局,调整约束以确保 UI 元素的正确排列。更新 miniStackView 和 exitStackView 的内容压缩和拥抱优先级,提升布局的灵活性和可维护性。 2025-09-16 16:08:28 +08:00
edwinQQQ
8d8beeaa2d 优化房间视图控制器中的消息处理逻辑,增加 TurboModeStateManager 对全服礼物和游戏飘屏的控制,移除不必要的本地缓存,确保实时查询状态。更新 BoomInfoViewController 中的比值计算方式,提升代码可读性。调整 XPEffectPanelViewController 和 XPRoomMoreMenuViewController 的布局约束,改善用户界面。移除多处调试日志,提升代码整洁性。 2025-09-16 15:55:38 +08:00
edwinQQQ
eb74017143 更新 API 测试环境 URL,优化中点矩形计算逻辑以适配屏幕尺寸,增加常量定义以提升代码可读性和可维护性。 2025-09-16 11:31:56 +08:00
edwinQQQ
345583c197 重构麦位相邻性判断逻辑,新增子类可重写的方法以支持自定义布局配置。更新各个麦位布局类,简化相邻性判断,确保布局逻辑的一致性和可维护性。同时,优化中点矩形计算方法,提升代码的可读性和性能。 2025-09-15 19:09:48 +08:00
edwinQQQ
c8c9985db8 更新 XPRoomLittleGameContainerView.m,新增西班牙语、俄语和乌兹别克语支持。调整 XPEffectPanelViewController.m 中 UISwitch 的颜色设置,使用 UIColorFromRGB 替代系统蓝色。修复 MSRoomGameWebVC.m 中的语言逻辑,确保多语言支持的准确性和一致性。 2025-09-15 18:35:29 +08:00
edwinQQQ
644639dd9a 更新 LoginViewController 和 XPRoomViewController,调整布局约束和新增 CP 逻辑处理,优化数据解析和错误处理。为 MicMidpointRectManager 增加有效配对逻辑,确保中点矩形绘制的准确性。同时,更新多语言支持,补充缺失的翻译字符串,提升用户体验和代码可维护性。 2025-09-15 17:35:16 +08:00
edwinQQQ
6470c642eb 新增 CP SVGA 逻辑迁移测试报告,详细记录了在 MicMidpointRectManager 中新增的 CP 业务逻辑方法及其在 XPRoomViewController 中的简化调用。修复了编译错误,优化了代码结构,提升了可维护性和可测试性。同时,更新了 MicMidpointRectManager 的头文件,添加了新方法的声明,确保代码一致性和清晰性。 2025-09-15 16:12:41 +08:00
edwinQQQ
645be6184e 新增房间底部阴影图像资源及其配置文件,优化 XPHomePartyViewController 和 XPPartyRoomItemCollectionViewCell 的布局逻辑,确保在不同布局模式下正确显示底部阴影。更新布局相关逻辑以提升用户体验和代码可维护性。 2025-09-12 14:31:53 +08:00
edwinQQQ
ca963cf52b 新增多语言支持,更新 Info.plist 文件以包含葡萄牙语(巴西)、西班牙语、俄语和乌兹别克语。重构 YUMIMacroUitls.h 文件以使用 YMLanguageConfig 进行语言代码管理,优化 XPMineSwitchLanguageVC.m 中的语言切换逻辑,确保动态生成语言选项。新增 YMLanguageConfig 类以管理支持的语言列表及相关功能,提升代码可维护性和用户体验。 2025-09-11 19:04:54 +08:00
edwinQQQ
867f893625 更新房间布局相关资源,替换 XPBlankCollectionViewCell 为 XPPartyRoomItemCollectionViewCell,优化布局切换逻辑。新增房间布局类型持久化功能,确保用户选择的布局模式在应用重启后保持一致。同时,更新相关视图控制器以支持新的布局逻辑,提升用户体验和代码可维护性。 2025-09-11 15:30:29 +08:00
edwinQQQ
49fbfb89a5 新增 XPBlankRoomModel 和 XPBlankCollectionViewCell 类,支持布局切换功能。更新 XPHomePartyViewController 以处理布局模式切换,优化数据源处理逻辑,确保在两列和一列布局之间正确插入和移除占位模型。同时,更新 XPHomePagingViewController 以发送布局切换通知,提升用户体验和代码可维护性。 2025-09-10 18:59:36 +08:00
edwinQQQ
5646168553 移除 XPRoomViewController 中的测试按钮及相关逻辑,优化 RoomAnimationView 的动画取消和清理逻辑,新增 TurboModeStateManager 的静默设置功能,确保在不发送通知的情况下更新 Turbo 模式状态。同时,修复 XPEffectPanelViewController 中的开关状态更新逻辑,提升代码可维护性和用户体验。 2025-09-10 17:47:51 +08:00
edwinQQQ
58ff7805bf 新增布局按钮到 XPHomePagingViewController,优化顶部控制视图的交互功能。同时,更新 RoomAnimationView 中的动画管理逻辑,增加本地开关状态缓存,减少对 TurboModeStateManager 的频繁调用,提升性能和可维护性。修复 TurboModeStateManager 的初始化逻辑,确保应用启动时 Turbo 模式为关闭状态,并新增强制打开/关闭所有开关的功能。更新 XPEffectPanelViewController 以同步 Turbo 模式状态,确保 UI 显示与实际状态一致。 2025-09-10 17:21:25 +08:00
edwinQQQ
d414cd1cfc 新增 TurboModeStateManager 的功能,支持 CP 麦位开关状态管理,优化房间中各个视图对 Turbo 模式的集成。更新相关视图控制器以使用 TurboModeStateManager 获取和设置开关状态,提升代码可维护性和用户体验。同时,新增 CP 麦位相关的本地化字符串,确保多语言支持。 2025-09-10 17:21:09 +08:00
edwinQQQ
58ab43c7d8 新增当前用户切换麦位时的云信消息发送流程文档,详细描述了修复后的完整流程及关键修复点。同时,更新了 XPRoomViewController 和相关类以初始化当前用户麦位状态,处理其他用户麦位变化场景,确保麦位关系的正确更新和消息发送。优化了麦位中点矩形的绘制逻辑,提升了代码可维护性和用户体验。 2025-09-09 19:17:21 +08:00
edwinQQQ
68088e00e9 更新房间功能,新增 MicCpInfoModel 类以管理麦位关系数据,优化房间中点矩形和麦位状态管理逻辑。同时,更新相关 Presenter 和 ViewController 以集成新的麦位关系 API,提升代码可维护性和用户体验。新增麦位状态监测和更新机制,确保用户在房间中的麦位信息实时准确。 2025-09-09 15:54:36 +08:00
edwinQQQ
10d4abf5ee 新增 MicMidpointRectManager 类以管理麦位中点矩形的绘制和动画,优化各个 StageView 中的中点矩形处理逻辑。同时,更新相关 StageView 类以集成中点矩形管理器,提升代码可维护性和用户体验。新增 SVGA 动画支持,确保中点矩形的动态展示效果。 2025-09-04 18:43:39 +08:00
edwinQQQ
8d20a9e44f 新增 Turbo Mode 相关功能,包括头饰的 Turbo Mode 状态管理,确保在 Turbo Mode 开启时头饰只显示第一帧并停止动画。同时,更新 MicroView 类以集成 Turbo Mode 状态监听和更新逻辑,提升用户体验和代码可维护性。新增 Turbo Mode Tips 相关的本地化字符串,确保多语言支持。 2025-09-04 17:21:11 +08:00
edwinQQQ
0147800f75 新增 Turbo Mode Tips 功能,包含 XPTurboModeTipsManager 和 XPTurboModeTipsView 类,用于在房间中监测卡顿并显示提示。同时,更新 XPRoomViewController 以启动提示监听,并添加测试按钮以手动触发提示显示,提升用户体验和代码可维护性。 2025-09-03 19:10:06 +08:00
edwinQQQ
f15d229ae1 新增 TurboModeStateManager 类以管理全局 Turbo 模式状态,优化房间动画视图中的开关逻辑,确保与 Turbo 模式一致。同时,更新房间更多菜单的 Action 类以支持新的 Turbo 模式开关,提升代码可维护性和用户体验。 2025-09-03 18:39:34 +08:00
edwinQQQ
8dbb02228f 新增 Turbo Mode 功能,包含相关的 Action 类、常量和视图控制器,优化房间更多菜单的功能扩展性。同时,更新通知逻辑以支持 Turbo Mode 开关状态的管理,提升代码可维护性和用户体验。 2025-09-03 16:32:15 +08:00
edwinQQQ
cff4ddeeba 删除 XPRoomMoreMenuActionTest 相关的测试文件,简化代码结构,提升项目的可维护性和清晰度。 2025-09-01 19:16:48 +08:00
edwinQQQ
b657f3856b 新增多个房间功能相关的 Action 类,包括 XPRoomAppManagerAction、XPRoomCleanMessagesAction、XPRoomBackGroundSettingAction、XPRoomMusicPanelAction 和 XPRoomRoomPhotoAction,优化房间更多菜单的功能扩展性。同时,更新 XPRoomMoreMenuActionFactory 以支持新功能,提升代码可维护性和结构清晰度。 2025-09-01 18:55:46 +08:00
edwinQQQ
c41df5caa0 移除与心愿礼物相关的代码和引用,简化房间功能模块,更新房间更多菜单的 Action 类以集成 PK 相关功能,提升代码可维护性和扩展性。 2025-09-01 16:55:13 +08:00
edwinQQQ
860304ea15 新增房间礼物特效相关功能,更新 XPGiftEffectAction 类以支持根据房间状态创建对应的 Action 实例,并优化了相关的通知逻辑。同时,新增 kRoomGiftEffectUpdateNotificationKey 常量以便于通知管理,提升代码可维护性和功能扩展性。 2025-09-01 14:29:21 +08:00
edwinQQQ
406cf003f5 重构房间更多菜单功能,创建多个 Action 类以优化代码结构和可维护性。新增 XPRoomMoreMenuAction、XPRoomMoreMenuActionContext、XPRoomMoreMenuActionFactory、XPGiftEffectAction、XPRoomSettingAction 和 XPSocialAction 类,整合新架构至 XPRoomMoreMenuViewController,提升功能扩展性和测试能力。同时,更新数据源创建逻辑,简化主控制器的复杂度。 2025-08-29 18:15:35 +08:00
edwinQQQ
8c024c0ec1 优化 XPRoomViewController 中的视图初始化逻辑,移除 stageView 的添加,调整 messageContainerView 的约束。同时,修复 BravoGiftWinningFlagView 和 LuckyGiftWinningFlagView 的位置计算,确保视图在屏幕可见范围内,增强用户体验。新增智能销毁方法以优化 RoomAnimationView 的资源管理,确保重要动画播放时的清理逻辑更加安全。 2025-08-29 15:55:02 +08:00
edwinQQQ
0837457c9f 新增 StageViewManager 类以管理 stageView 的创建和更新逻辑,集成至 XPRoomViewController 中,优化现有的 stageView 更新流程,提升代码可维护性和用户体验。 2025-08-29 15:16:52 +08:00
edwinQQQ
c9df21a005 修复震动反馈初始化和调用逻辑,确保在点击事件中及时响应震动反馈。同时新增准备震动反馈的方法以提升用户体验和代码可维护性。 2025-08-28 17:08:57 +08:00
edwinQQQ
24a4e75fae 新增礼物动画的combo状态管理功能,优化用户状态判断逻辑,确保多用户并发送礼时动画正常显示。同时,添加状态通知机制以实现组件间通信,提升代码可维护性和用户体验。 2025-08-28 16:33:38 +08:00
edwinQQQ
d4ac93adbb 优化礼物消息的动画效果,减少视觉冲突。修改消息插入动画为淡入效果,延迟滚动执行,确保动画流畅性。同时新增礼物消息识别方法,优化 Cell 更新逻辑以避免动画期间的布局更新。 2025-08-28 15:16:26 +08:00
edwinQQQ
d22ddaefcf 整合 Bugly 相关功能,新增 BuglyManager 类以统一管理 Bugly 配置和错误上报,优化 AppDelegate 中的 Bugly 配置逻辑。同时,更新多个模块以使用 BuglyManager 进行错误上报,提升代码可维护性和一致性。新增 BuglyManager 使用说明文档,提供详细的使用示例和功能介绍。 2025-08-28 14:40:05 +08:00
edwinQQQ
dce3ea94ce 删除多个文档和文件,包括 micButton 状态表格、QEmotionBoardView 相关问题分析报告、序列图、飘屏组件分析文档等,以清理项目中的冗余内容,提升代码整洁性和可维护性。 2025-08-27 18:25:12 +08:00
edwinQQQ
eee967c2e1 新增 emoji 缓存清理功能以确保新的尺寸设置生效,优化表情处理逻辑,支持带场景参数的表情转换。同时,更新相关方法以适应新功能,提升用户体验。 2025-08-27 16:35:52 +08:00
edwinQQQ
4d60296a4d 新增 GameBannerGestureManager 类以管理游戏模式下的手势识别,优化 RoomAnimationView 中的手势处理逻辑,确保在小游戏模式下的用户交互体验。同时,更新版本号至 1.0.31,添加调试日志以便于后续排查。 2025-08-27 14:27:25 +08:00
edwinQQQ
77fd8b51c2 新增 QEmotionBoardView 表情不显示问题分析报告和排查报告,详细记录问题描述、代码逻辑、根因分析及解决方案。同时,修复 AppDelegate 中的图片加载逻辑,添加调试日志以便于后续排查,确保表情正常显示。 2025-08-26 13:57:24 +08:00
edwinQQQ
c5cde5b5c4 优化 PIGiftBravoGiftBroadcastView 动画逻辑,调整动画时序和状态管理,增加数据源检查,确保动画流畅性和稳定性。同时,添加详细日志输出以便于调试和监控。 2025-08-25 15:08:24 +08:00
edwinQQQ
3df04b9b90 新增视频选择和处理功能,支持视频压缩与上传,优化头像上传逻辑,自动识别媒体类型并维护原有目录结构。同时,更新图片选择器配置,确保视频选择时禁用裁剪功能,提升用户体验。 2025-08-22 14:50:29 +08:00
edwinQQQ
48053bc2c9 新增房间类型变化通知的发送和监听功能,优化 RoomAnimationView 的手势处理逻辑,提升用户体验。同时,增加触摸事件日志记录,便于调试和分析。 2025-08-22 14:19:15 +08:00
edwinQQQ
cd9c2ea15a 优化 XPRoomMessageContainerView 和 XPRoomMessageTableViewCell,改进消息处理逻辑,增加行高预计算方法,减少不必要的视图更新,提升性能和用户体验。同时,调整 UITableView 的约束更新方式,确保更高效的布局管理。 2025-08-21 19:22:20 +08:00
edwinQQQ
b9de95b4e6 移除 XPRoomViewController 和 RoomAnimationView 中的调试代码,提升代码整洁性和可维护性。 2025-08-21 18:54:04 +08:00
edwinQQQ
1bfc989fe9 移除 RoomAnimationView 中的调试背景色设置,提升代码整洁性和可维护性。 2025-08-21 18:25:46 +08:00
edwinQQQ
09a2b2f02b 优化 XPRoomPresenter、XPRoomViewController 和 XPMessageRemoteExtModel,移除冗余代码,增强 NIM 聊天室成员信息获取逻辑,新增房间类型和模式属性,提升代码可维护性和用户体验。同时,重构定时器管理和消息发送逻辑,确保功能的稳定性和一致性。 2025-08-21 18:23:18 +08:00
edwinQQQ
49975b5dc1 优化 AdvertiseModel 和 XPRoomViewController,移除不必要的注释,新增上麦请求弹窗定时器,增强消息处理逻辑,提升代码可维护性和用户体验。同时,更新本地化字符串,支持新的上麦邀请功能。 2025-08-21 16:36:46 +08:00
edwinQQQ
267650759c 新增 versionType 属性以支持新旧版本兼容,更新 XPRoomPresenter 和 XPMessageRemoteExtModel,优化 micButton 处理逻辑,增强消息发送功能的稳定性和可维护性。 2025-08-20 19:06:49 +08:00
edwinQQQ
0b89480a77 优化 RoomAnimationView 和 PIGiftBravoGiftBroadcastView 的内存管理,新增动画控制方法以提升用户体验。更新了连击视图的清理逻辑,确保资源的正确释放,避免内存泄漏。同时,新增 NetImageView 的取消加载功能,增强图片加载的灵活性和性能。重构相关方法以支持新的逻辑流程,提升代码可维护性和可读性。 2025-08-20 18:07:34 +08:00
edwinQQQ
e0466700b5 新增手势优化和触摸区域缓存管理模块,提升了 Banner 交互性能和用户体验。新增 GestureOptimizer 和 TouchAreaCacheManager,分别负责手势识别优化和触摸区域信息缓存。更新 RoomAnimationView 和 BravoGiftBannerView,集成新模块以优化手势处理逻辑,确保更流畅的用户交互。同时,重构相关方法以支持新的逻辑流程,提升代码可维护性和可读性。 2025-08-20 16:37:48 +08:00
edwinQQQ
be52c53b2f 新增 BannerScheduler 模块,统一管理 V2 Banner 的播放队列和状态,优化了 Banner 播放逻辑,支持优先级排序、状态控制和代理模式。更新 RoomAnimationView,集成 BannerScheduler,重构了 Banner 添加和播放逻辑,提升了代码可维护性和用户体验。同时,新增 BannerScheduler 的单元测试,确保功能的正确性和稳定性。 2025-08-20 14:19:32 +08:00
edwinQQQ
aeb9fcd30e 新增 micButton 状态表格文档,详细记录了 micButton 在不同用户状态下的显示和可用性,以及状态变化的关键时序和同步机制。同时,新增 GiftComboManager 线程优化总结文档,优化了线程处理和网络请求逻辑,提升了代码性能和可维护性。更新了 CountdownRingView 和 GiftComboView 的内存管理和状态处理逻辑,确保资源的正确释放和避免内存泄漏。 2025-08-19 19:33:26 +08:00
edwinQQQ
6d4061bea5 优化 AppDelegate+ThirdConfig 中 NIMSDK 配置,确保生产环境启用 HTTPS,新增 CDN 统计回调和最小时间间隔设置,提升代码可维护性和功能完整性。同时,重构 GiftComboManager,新增后台处理队列和网络处理队列,优化定时器和请求处理逻辑,确保 UI 回调在主线程执行,增强用户体验和代码可读性。 2025-08-19 16:33:22 +08:00
edwinQQQ
83e26bdbae 重构 GiftComboManager,移除 giftComboQueue,新增 networkQueue 和 uiQueue,优化队列处理逻辑,提升代码可维护性和可读性。同时,更新相关方法以支持新的队列结构,确保连击效果的准确处理。 2025-08-19 15:30:39 +08:00
edwinQQQ
c551146afd 优化 GiftComboManager 接口,移除废弃方法并统一配置流程,提升代码可维护性和可读性。同时,更新 XPRoomViewController 和 XPSendGiftView 中的状态检查逻辑,确保连击状态的准确性。新增 GiftComboManager 调用方更新总结文档,记录了接口变更和优化效果。 2025-08-19 14:39:27 +08:00
edwinQQQ
961edefe4a 新增连击计数逻辑修正总结文档,详细记录了连击计数的修正目标、发现的问题及其根源,主要修改内容包括 GiftComboManager、GiftComboView 和 XPSendGiftView 的接口优化和逻辑调整,确保连击计数基于 API 成功回调,提升了用户体验和代码可维护性。同时,更新了相关方法以支持新的逻辑流程和状态管理。 2025-08-19 14:12:51 +08:00
edwinQQQ
f1daa16e59 更新 Podfile 中 NIMSDK_LITE 版本至 '~> 10.9.40',并在多个文件中新增日志记录功能以优化连击消息处理,增强调试能力。同时,新增连击计数重置通知和相关方法,提升用户体验和代码可维护性。 2025-08-18 19:02:47 +08:00
edwinQQQ
9688e4413b 新增 GiftComboManager 及相关模块的重构,优化了连击功能的接口,建立了清晰的分层架构,统一了并发模型,提升了可维护性和可测试性。同时,新增了 GiftComboConfig、GiftComboTransport 和 GiftComboUIAdapter 模块,简化了接口并提供了更好的错误处理机制,确保向后兼容性。 2025-08-18 16:24:45 +08:00
edwinQQQ
79f6f45bc1 新增礼物动画处理日志记录功能,优化了 GiftAnimationManager 和 GiftComboManager 中的连击计数逻辑,确保连击计数的有效性和准确性。同时,增强了日志输出,便于调试和监控动画处理状态,提升用户体验。 2025-08-18 14:01:57 +08:00
edwinQQQ
3f97b0293e 新增 Banner 手势优化实施总结文档,记录了在 RoomAnimationView 中对 banner 手势系统的优化过程,包括手势识别器的重新设计、区域划分逻辑、tap 手势处理逻辑及交互区域检查等。同时,优化了多个视图中的通知处理逻辑,确保手势事件的准确传递与处理,提升用户交互体验。 2025-08-15 19:34:25 +08:00
edwinQQQ
84e146277a 在 RoomAnimationView 中新增触摸事件处理逻辑,确保在没有 banner 显示或 banner 容器不可见时不接收触摸事件,提升用户交互体验。同时,优化了 banner 区域的触摸点检测逻辑,增强代码可读性。 2025-08-15 11:41:45 +08:00
edwinQQQ
5192d58b07 优化 NIMSDK 和 SudSDK 的初始化逻辑,新增从配置中获取 appKey 和 appId 的功能,提升代码灵活性和可维护性。同时,修正 sudKey 的属性名称以保持一致性。 2025-08-14 18:48:47 +08:00
edwinQQQ
cd4710ecf6 优化公共房间管理器的进入逻辑,新增延迟进入公共房间的功能以改善用户体验。同时,移除 RoomAnimationView 中的调试视图相关代码,提升代码整洁性和可维护性。 2025-08-14 18:36:23 +08:00
edwinQQQ
edf844c1e8 新增公共房间管理器的初始化逻辑,并在登录和信息补全成功后调用初始化方法;在相关文件中引入公共房间管理器的头文件以支持新功能。同时,优化了公共房间管理器的状态检查和日志输出,提升代码可读性和功能性。 2025-08-14 18:04:38 +08:00
edwinQQQ
b1e46f6d28 fix(消息容器): 修复多语言文本截断问题并优化布局
统一文本布局策略,修复阿拉伯语、中文等文本显示不全问题
优化约束逻辑,移除冗余计算,提升性能
添加测试用例验证多语言文本布局
2025-08-14 17:56:56 +08:00
edwinQQQ
2a99d2238f feat(文本布局): 统一文本尺寸计算并支持RTL文本
- 使用YYTextLayout统一处理所有文本尺寸计算,提高RTL文本精度
- 根据文本方向自动配置截断类型(RTL文本使用Start,LTR使用End)
- 移除阿拉伯文本的额外高度调整,依赖YYTextLayout的精确计算
- 新增测试类验证纯阿拉伯文本、混合文本和长文本的布局效果
- 添加README文档说明统一文本布局的实现细节和优势
2025-08-14 14:06:35 +08:00
edwinQQQ
3da0148ad1 在多个视图的 dismissBanner 方法中新增日志输出,以便于调试和监控动画完成状态;在 RoomAnimationView 中新增 ensureDebugViewsExist 方法,确保调试视图的存在并优化调试信息的输出;在 inserBannerModelToQueue 方法中添加参数验证和调试信息,提升代码的可读性和调试能力。 2025-08-13 18:16:46 +08:00
edwinQQQ
9206b4be45 优化公共房间管理器的消息处理逻辑,新增 handleFirst_106 方法以处理特定类型的消息转发,提升代码可读性和功能性。同时,移除冗余代码,确保代码整洁性。 2025-08-13 17:21:48 +08:00
edwinQQQ
2867c7ddb5 新增公共房间消息转发通知常量,并在相关管理器和视图控制器中实现消息转发逻辑,优化公共房间消息处理流程,提升代码可读性和功能性。 2025-08-12 18:50:43 +08:00
edwinQQQ
505472b073 在 RoomAnimationView.m 中新增对 MSRoomOnLineView 的引用,并优化了手势识别逻辑,以支持对该视图的直接交互。此更改提升了用户体验和代码的可读性。 2025-08-12 18:50:36 +08:00
edwinQQQ
64cfb1b10e 更新Banner区域手势系统,新增区域化手势识别,优化用户交互体验;调整Banner高度,确保适配性;移除冗余代码,提升代码整洁性和可维护性;更新相关文档以支持新手势系统的集成和使用。 2025-08-12 17:44:32 +08:00
edwinQQQ
9b2ebb796f 更新公共房间管理器的日志输出,改为使用消息的原始附件内容;优化动画播放逻辑,使用 switch 语句替代多个 if-else 语句以提高可读性;移除与守护星球相关的消息处理逻辑,确保代码整洁性;更新多个本地化字符串文件,移除与守护星球相关的条目,确保语言支持的一致性。 2025-08-12 14:51:13 +08:00
edwinQQQ
6fd831ff42 删除与星级厨房相关的所有图像资源及其配置文件,包括 room_star_kitchen.imageset 及其内容;在 AttachmentModel.h 中移除与星级厨房相关的枚举值,确保代码整洁性;更新多个本地化字符串文件,移除与 XPRoomStarKitchenBannerView 相关的条目,确保语言支持的一致性。 2025-08-12 14:07:38 +08:00
edwinQQQ
259ac3e2d3 删除与房间塔罗相关的图像资源及其配置文件,包括 room_tarrow_banner_bg 和 room_tarrow_banner_h5_bg 的所有内容;在 NIMSDKManager.h 和 NIMSDKManager.m 中添加空行以提升代码可读性;更新多个本地化字符串文件,移除与 XPRoomTarrowBannerView 相关的条目,确保语言支持的一致性。 2025-08-12 13:53:12 +08:00
edwinQQQ
446e172939 新增飘屏组件分析文档和新Banner组件架构设计,详细描述了飘屏组件的共同特征、抽象方案及其优势,提供了基类和子类的设计方案,增强了代码的可维护性和扩展性。同时,更新了相关文档以支持新架构的集成和使用。 2025-08-12 11:16:28 +08:00
edwinQQQ
c0bc29486f 新增连击状态管理功能,包含强制重置连击状态的方法和应用生命周期保护;在 XPSendGiftView 和 GiftComboManager 中实现相关逻辑,确保 UI 状态与连击状态一致;注册通知以处理连击状态的强制重置,增强用户体验和系统稳定性。 2025-08-11 14:51:57 +08:00
edwinQQQ
1fb6cadabf 新增公共房间管理器 PublicRoomManager,负责管理用户进入公共聊天房间的逻辑;在 ClientConfig.m 中添加对公共房间管理器的配置更新通知;在多个文件中集成公共房间管理器,确保用户信息更新和状态管理的正确性;更新相关文档以提供使用指南和集成说明。 2025-08-08 17:01:59 +08:00
edwinQQQ
e3dfd8cb0a Version update 2025-07-15 14:59:56 +08:00
edwinQQQ
96c44cb032 删除阿拉伯语首充相关图像资源及其配置文件;在 UIImage+Utils.m 中优化语言图像处理逻辑,新增对葡萄牙语的支持;在多个文件中添加对葡萄牙语的支持,包括本地化字符串和 InfoPlist 配置;更新 UI 组件以适应新的语言设置,确保用户界面的一致性和可用性。 2025-07-15 14:35:05 +08:00
edwinQQQ
16f9041ba9 chore: 更新 .gitignore 文件,移除不必要的包文件类型;新增邮箱验证码登录流程和 OAuth/Ticket 认证系统 API 文档;更新勋章相关逻辑,优化用户信息获取失败处理;调整勋章展示逻辑,支持多等级高亮功能。 2025-07-14 17:37:10 +08:00
edwinQQQ
99db078b62 feat(勋章): 新增多等级高亮功能并优化勋章展示逻辑
refactor(勋章排行): 重构排行榜分页加载和刷新逻辑

fix(会话): 优化官方账号判断逻辑和跳转处理

style(UI): 调整勋章排行榜和游戏菜单UI布局

chore: 更新Podfile配置和bitcode框架列表
2025-07-03 19:35:17 +08:00
edwinQQQ
e32e5653fd change page item limit 2025-07-03 18:04:56 +08:00
edwinQQQ
8a096239da 新增 next-chat.mdc 文件以定义对话上下文的规则;在 Assets.xcassets 中添加多个图像资源及其对应的 Contents.json 文件;更新 AttachmentModel.h 中的枚举值以修正飘屏消息类型;在 SessionViewController.h 和 SessionViewController.m 中添加 userInfo 属性并调整相关逻辑;在 SessionListViewController.h 和 SessionListViewController.m 中优化会话列表的展示逻辑;在多个模型和视图文件中进行小幅调整以提升代码可读性和一致性。 2025-07-02 15:52:48 +08:00
edwinQQQ
f0dad8886f 更新 MedalsModel.h 和 MedalsModel.m,新增 expireDateString 方法以格式化过期时间;在 MedalsCollectionViewCell.m 和 MedalsCyclePagerCell.m 中优化 MP4 和图片的显示逻辑,增强降级处理;在 MedalsDetailView.m 中更新勋章显示逻辑,使用新的 URL 优先级;在 MedalsLevelIndicatorView.h 和 MedalsLevelIndicatorView.m 中新增重置等级指示器的方法;在 MedalsWearingControlCollectionViewCell.m 和 MedalsWearingListCollectionViewCell.m 中实现新的显示逻辑,支持 MP4 和图片的降级处理;在 NSString+Utils.h 和 NSString+Utils.m 中新增图片格式验证方法,提升代码健壮性和可读性。 2025-06-27 19:56:03 +08:00
edwinQQQ
0d6570a086 更新 .vscode/settings.json 文件,新增拼写检查词汇 "Defalut" 和 "MAXFLOAT";在 XPRoomSendTextView.m 中调整约束逻辑,确保 editTextFiled 和 imageButton 的布局正确;在 XPRoomMessageTableViewCell.m 中优化消息内容标签的约束,确保气泡和内容标签的布局一致性,增强代码可读性和健壮性。 2025-06-27 16:15:12 +08:00
edwinQQQ
f52af5d620 更新 YUMIHtmlUrl.h 和 YUMIHtmlUrl.m,新增首充相关的 URL 类型和路径;在 FeedBackViewController.h 和 FeedBackViewController.m 中,调整属性类型为强引用以增强内存管理;重构 FeedBackViewController 的视图设置逻辑,添加子视图的初始化方法以提高代码可读性;移除不再使用的 FeedBackViewController.xib 文件,优化项目结构;在 XPGiftBarView.h 和 XPGiftBarView.m 中,移除首充按钮相关代码,替换为新的首充视图逻辑;更新 XPWebViewController.h 和 XPWebViewController.m,调整 webview 属性为可写以支持动态更新;在 FirstRechargeManager.m 中,优化首充状态检查逻辑,确保在调试模式下始终显示首充信息。 2025-06-27 11:33:16 +08:00
edwinQQQ
86094da26f 添加首充管理功能,新增 FirstRechargeManager 和相关模型以支持首充监控;在多个模块中集成首充监控逻辑,确保在登录和页面加载时正确启动和停止监控;移除不再使用的首充相关代码,优化代码结构和可读性。 2025-06-26 11:08:21 +08:00
edwinQQQ
6f59274ca0 更新 XPRoomMessageParser.m,优化房间表情属性创建逻辑,简化代码结构;新增 createImageAttribute:size: 方法以支持自定义图像大小,增强代码可读性和灵活性;调整图像处理逻辑,确保在不同条件下正确展示表情图像,保持代码一致性。 2025-06-25 15:22:09 +08:00
edwinQQQ
e01148a3a9 更新 pi_area_info.json,新增突尼斯地区信息;更新 Assets.xcassets 中的 Contents.json,修复幸运数字图像的文件名;移除多个文件中的调试代码以优化勋章展示逻辑,保持代码结构一致性;在 XPRoomFaceTool.m 中改进表情文件加载路径和错误处理,增强代码健壮性;在 XPRoomFaceViewController.m 中添加消息发送错误日志;更新 XPRoomMessageContainerView.m 和 XPRoomMessageParser.m,调整索引类型以提高代码一致性。 2025-06-25 14:29:23 +08:00
edwinQQQ
1190e0f6d9 更新 XPMineUserInfoHeaderView.m,调整勋章显示逻辑,允许最多显示 10 个勋章;在 UserRoomCardViewController.m 中新增 UserRoomCardMedalCell 以支持勋章的展示,优化勋章区域的高度计算和更新逻辑,保持代码结构一致性。 2025-06-24 18:50:45 +08:00
edwinQQQ
c5d966317b 更新 XPMineUserInfoHeaderView.m,新增 UIScrollView 作为勋章展示的容器,调整勋章 StackView 的布局逻辑以适应 ScrollView,更新勋章显示方法以处理勋章的内容尺寸,保持代码结构一致性。 2025-06-24 17:10:11 +08:00
edwinQQQ
6573c0f6fe 更新 XPMineUserInfoHeaderView.m,新增 medalsStackView 和 medalMP4Views 属性以支持勋章展示逻辑;添加 medalsHeight 方法计算勋章高度;实现 setupMedalsArea 方法以配置勋章视图;更新 updateMedalsDisplay 方法以处理勋章的 MP4 和图片展示,保持代码结构一致性。同时,更新 .vscode/settings.json 文件以添加拼写检查词汇。 2025-06-24 16:45:26 +08:00
edwinQQQ
7810057542 更新 MedalsViewController.m,移除调试代码以优化勋章展示逻辑;在 XPMineUserInfoHeaderView.m 中新增 medalsStackView 和 userMedals 属性以支持用户勋章的显示;在 UserInfoModel.m 中更新 medalsPic 属性以增强模型的兼容性,保持代码结构一致性。 2025-06-24 15:42:56 +08:00
edwinQQQ
059305d3df 更新 MedalsViewController.m,新增其他用户勋章的显示逻辑,包括 MP4 播放和图片展示,优化相关方法以提升用户体验,保持代码结构一致性。同时,更新 MedalsWearingControlCollectionViewCell.m,移除调试背景颜色设置,保持代码整洁。 2025-06-24 15:01:33 +08:00
edwinQQQ
a15d6b34ed 更新 MedalsRankViewController.m,添加勋章排行视图的点击手势和回调处理,优化用户交互体验,保持代码结构一致性。 2025-06-23 19:09:45 +08:00
edwinQQQ
6d0122f3d1 更新 MedalsViewController.m,调整背景约束和底部勋章列表高度以适应不同显示类型,优化底部背景图像的拉伸处理,保持代码结构一致性。 2025-06-23 18:57:05 +08:00
edwinQQQ
286e68b5e3 更新 MedalsCyclePagerCell 和 MedalsViewController 以优化勋章展示和自动轮播功能,调整可见性管理逻辑,确保在视图切换时正确处理播放状态,保持代码结构一致性。 2025-06-23 18:43:17 +08:00
edwinQQQ
c0500397b6 删除不再使用的资源文件,包括多个图像集和其对应的 Contents.json 文件,更新 MedalsModel.h 和 MedalsModel.m 以支持使用勋章的类型,新增 MedalsCyclePagerCell 组件以优化勋章展示,保持代码结构一致性。 2025-06-23 16:36:39 +08:00
edwinQQQ
f62af24c48 更新勋章相关模型和视图,添加对使用勋章的支持,优化可见性管理和状态更新逻辑,保持代码结构一致性。 2025-06-23 15:55:11 +08:00
edwinQQQ
a72c010b56 新增勋章 VIP 控制相关的资源,包括 medals_control_vip4、medals_control_vip6、medals_control_vip7 和 medals_control_vip9 的 Contents.json 文件及其对应的 vip@3x.png 图片,保持代码结构一致性。 2025-06-23 14:29:08 +08:00
edwinQQQ
143ad115bc 新增勋章排行相关的 UI 组件,包括 MedalsRankViewController、MedalsRankTopView 和 MedalsRankListCell,更新 MedalsViewController 以支持展示其他用户的勋章信息,优化相关逻辑以提升用户体验,保持代码结构一致性。 2025-06-20 18:44:20 +08:00
edwinQQQ
4c76813273 新增勋章相关的 UI 组件,包括 MedalsWearingViewController、MedalsWearingControlCollectionViewCell 和 MedalsWearingListCollectionViewCell,更新相关逻辑以支持勋章的使用状态管理和展示,保持代码结构一致性。 2025-06-19 19:22:56 +08:00
edwinQQQ
da8d88347e 更新 Api+Medals.m 中的请求路径为 "medal/square",修改 MedalsViewController.m 中的导航栏标题以支持勋章广场,新增本地化字符串 "20.20.61_text_10" 以表示勋章广场,保持代码结构一致性。 2025-06-19 14:09:36 +08:00
edwinQQQ
06fecf1bf4 调整 MedalsDetailView.m 中的高度约束以适应内容,优化 MedalsLevelIndicatorView.m 中的图片视图创建和加载逻辑,新增缓存图片 URL 属性以支持延迟加载,确保代码结构一致性。 2025-06-19 11:49:25 +08:00
edwinQQQ
c978a8c355 优化 UIImage+Utils.m 中的灰度图像处理逻辑,调整 MedalsLevelIndicatorView.m 中的图片视图约束和间距,更新图像加载逻辑以使用裁剪后的图像,保持代码结构一致性。 2025-06-19 11:28:07 +08:00
edwinQQQ
a0fc15fefd 更新 MedalsCollectionViewCell 和 MedalsDetailView 以支持带图片的等级指示器,新增 MedalsLevelIndicatorType 枚举以区分指示器类型,优化手势识别功能,确保用户体验流畅,保持代码结构一致性。 2025-06-18 19:47:39 +08:00
edwinQQQ
c1b9dd3d9f 新增手势识别功能以处理背景和内容区域的点击事件,确保用户体验流畅。重写 removeFromSuperview 方法以停止 MP4 播放并释放资源,添加 dealloc 方法以确保资源正确释放,保持代码结构一致性。 2025-06-18 19:00:01 +08:00
edwinQQQ
887bb19056 新增 MedalsDetailView 和 MedalsLevelIndicatorView 组件,更新 MedalsCollectionViewCell 以支持 MP4 播放控制和可见性管理,优化相关逻辑以提升用户体验,保持代码结构一致性。 2025-06-18 18:31:13 +08:00
edwinQQQ
413b2c6944 新增等级指示器视图和容器视图,更新 MedalsCollectionViewCell 以集成等级指示器功能,支持等级选择回调。更新 .vscode/settings.json 文件以包含新组件 QGVAP 的配置,保持代码结构一致性。 2025-06-18 17:11:13 +08:00
edwinQQQ
89d9b57dea 更新 Podfile 以注释掉不再使用的 ZLCollectionViewFlowLayout 依赖,同时新增勋章相关功能,包括勋章使用、广场、排行和管理列表的 API 方法,新增 MedalsModel、MedalsPresenter 和 MedalsViewController 相关文件,保持代码结构一致性。新增勋章相关的 UI 组件和本地化字符串支持。 2025-06-18 16:28:13 +08:00
edwinQQQ
8c0276a208 优化数组操作,新增 NSMutableArray 的安全方法,包括安全移除、插入和替换对象,确保在索引超出范围时不发生崩溃。更新相关文件以使用新方法,保持代码结构一致性。 2025-06-16 17:30:20 +08:00
edwinQQQ
68ce148abb 新增勋章相关功能,包括勋章使用、广场、排行和管理列表的 API 方法,更新 Api+Mine.h 和 Api+Mine.m 文件以支持新功能。同时,新增 BaseModelVo.h 和 BaseModelVo.m 文件以定义勋章相关数据模型,并在 UserInfoModel.h 中引入 BaseModelVo。保持代码结构一致性。 2025-06-11 15:00:02 +08:00
edwinQQQ
4416e9f9c8 新增 VIP 和转账功能的 URL 路径,更新相关文件以使用 XPWebViewController 替代 VIPCenterViewController,保持代码结构一致性。调整公屏礼物消失的显示内容。 2025-06-11 11:27:00 +08:00
edwinQQQ
6e814f76cb 移除与 Agora 相关的 SDK 代码和引用,更新 Podfile 以删除不再使用的依赖项,调整房间初始化逻辑以使用 TRTC 引擎。保持代码结构一致性。 2025-06-10 16:07:59 +08:00
edwinQQQ
443e1a4332 新增分享功能的多个方法,包括提取 URL 和剩余字符串、强制关闭分享弹窗,以及分享内容的构建逻辑。更新 ShareProvider 类以支持新的初始化方法和不同分享类型的内容提供。保持代码结构一致性。 2025-06-09 16:39:32 +08:00
edwinQQQ
8dab721de9 在 SessionListViewController 中添加了对最近会话的日志输出。在 LuckyGiftWinningBannerView 和 BravoGiftBannerView 中引入了可配置的显示时间,注释掉了不再使用的代码。在 XPRoomFunctionContainerView 中优化了 hitTest 方法以增强用户交互体验,确保子视图的点击响应逻辑更加清晰。更新了 MicroView 中的表情加载逻辑,增加了对下载失败情况的处理。保持代码结构一致性。 2025-06-09 15:52:34 +08:00
edwinQQQ
5985b5701e 新增排行榜功能,更新 YUMIHtmlUrl.h 和 YUMIHtmlUrl.m 文件以支持新路径 kRankV2,调整 XPNewHomeViewController.m 中的相关逻辑以使用新排行榜链接,更新 XPMineUserInfoViewController.m 和 XPMineUserInfoHeaderView.m 文件以修复用户信息展示。保持代码结构一致性。 2025-06-03 11:00:10 +08:00
edwinQQQ
5ff62bafee 优化房间退出逻辑,更新退出事件处理,修复房间类型判断。更新分享功能以支持内容参数。调整游戏状态处理,重置当前游戏ID。 2025-05-29 11:50:00 +08:00
edwinQQQ
ca25ed14ac 新增搜索视图的 UITextFieldDelegate 实现,优化搜索逻辑,添加 isReturnKey 属性以区分回车触发的搜索。更新 GiftComboManager 和 HttpRequestHelper 中的错误处理逻辑,修复条件判断中的错误。移除不再使用的代码。版本号更新至1.0.28.2。 2025-05-27 16:02:11 +08:00
edwinQQQ
e5c8baad34 更新版本号至1.0.28.1,移除调试代码,新增隐私信息文件,优化房间消息处理逻辑,增加网络检测相关功能,调整部分接口参数,修复UI问题,更新本地化字符串,更新 SUD SDK 2025-05-26 15:24:31 +08:00
edwinQQQ
c765e78ec6 更新资源文件,替换部分图片文件名,调整图片内容,更新版本号至1.0.28。增加新的图片资源并删除不再使用的图片文件。 2025-05-23 14:43:39 +08:00
edwinQQQ
95e3e2601f 新增自定义麦位布局和房间麦位选择视图,优化房间用户界面,更新本地化字符串,调整部分UI组件约束。版本号更新至20.20.65。 2025-05-22 18:04:39 +08:00
edwinQQQ
0d01b1e6e9 更新事件中心模块,新增 HomeBannerInfoModel 相关功能,优化事件列表数据处理,调整时间选择器逻辑,修复部分 UI 问题,更新本地化字符串。版本号更新至20.20.64。 2025-05-22 11:50:53 +08:00
edwinQQQ
298a7e80c4 优化内购交易重试机制,增加交易重试次数记录,完善后台任务处理,更新相关API接口,调整UI组件约束,修复部分UI问题,更新本地化字符串。版本号更新至20.20.63。 2025-05-21 18:59:32 +08:00
edwinQQQ
b688962559 更新事件创建功能,新增金钱加载接口,优化事件时长选择器,调整UI组件约束,修复部分UI问题,更新本地化字符串。增加删除事件功能的提示确认。版本号更新至20.20.62。 2025-05-20 18:49:04 +08:00
edwinQQQ
353491f56f 更新活动中心模块,新增事件配置模型及相关API接口,优化事件列表展示,修复部分UI问题,更新本地化字符串,调整部分UI组件。删除不再使用的视图控制器。版本号更新至20.20.61。 2025-05-19 19:27:53 +08:00
edwinQQQ
a99e650d45 新增活动详情页相关功能,包括事件模型、API接口、UI组件及相关资源文件。更新版本号至20.20.60。 2025-05-15 16:24:43 +08:00
edwinQQQ
bd2e5e380f 增加选择房间 vc 2025-05-12 18:53:42 +08:00
edwinQQQ
2c5a1a289e 创建事件 create event UI 2025-05-12 17:37:58 +08:00
edwinQQQ
ffdfa121f9 新增 JoyPlay 游戏支持 2025-05-08 17:10:54 +08:00
AI Health Developer
07ebee2fc1 修正部分体验问题; 房间表情新增 api; 房间表情新增 svga 支持以及持久化缓存 2025-05-07 19:30:50 +08:00
AI Health Developer
69863a91ff feat(EventCenter): 添加活动中心模块
新增活动中心模块,包括官方活动、活动广场和我的活动三个页面。支持活动列表展示、倒计时功能及创建活动按钮。优化了页面切换和UI交互体验。
2025-05-06 16:45:34 +08:00
AI Health Developer
a9538c61ff 修正表情播放问题 2025-04-28 18:28:59 +08:00
AI Health Developer
41aae87dd6 修改 UI 需求和问题 2025-04-28 14:52:00 +08:00
AI Health Developer
ff365e8ae4 修正审核问题,适配后端修改 2025-04-25 15:54:30 +08:00
AI Health Developer
40311a1d85 完成 1.0.26 需求 2025-04-21 13:52:13 +08:00
AI Health Developer
2caa476640 temp save 2025-04-11 10:46:17 +08:00
AI Health Developer
faa6a2c4dc 修正 combo 金币显示问题 2025-04-11 10:45:49 +08:00
edwinQQQ
0275decc7e Finish 2.7.34 2025-04-02 11:04:07 +08:00
edwinQQQ
bc9a02802d boom 重构暂存 2025-03-25 15:22:01 +08:00
edwinQQQ
d9850e2c8b 需求暫存 2025-03-24 16:09:48 +08:00
edwinQQQ
e27b564fdc 完成 2.7.32 需求 2025-03-21 16:19:07 +08:00
edwinQQQ
d6e13ac0fe 修正线上首页显示内容不对问题
阿语环境下,有概率会 hot 列表显示为最后一个 tab 的内容
2025-03-14 19:44:58 +08:00
edwinQQQ
e7b2f594e8 版本需求修改暂存 2025-03-14 19:43:04 +08:00
edwinQQQ
e152d0f8a1 Feature: 完成金币兑换 UX 调整 2025-03-07 11:03:35 +08:00
edwinQQQ
9d3f08c9b3 2.3.31 finish 2025-03-06 15:26:44 +08:00
edwinQQQ
7807824a97 Finish all works! 2025-02-28 19:04:09 +08:00
edwinQQQ
8a1ed09905 移除不使用代码 2025-02-10 19:12:27 +08:00
edwinQQQ
fc399e0afc Dangerous Modify: 移除 Firebase/Analytics lib; 移除埋点文件(不使用);移除部分不使用的 分享功能 相关代码; 2025-02-10 18:49:34 +08:00
edwinQQQ
f582077804 Promotion: 优化首页API 加载逻辑 2025-02-05 18:16:27 +08:00
edwinQQQ
b592097865 Promotion: 优化 API 请求基类 2025-02-05 18:15:41 +08:00
edwinQQQ
a4651740bd Fix: 尝试修复线上 crash 问题 2025-02-05 14:31:39 +08:00
edwinQQQ
d958a3ca36 feat: 修正最后验收问题 2025-01-22 21:22:58 +08:00
edwinQQQ
f963f0ed81 完成房间动画类重构 2025-01-16 16:00:12 +08:00
edwinQQQ
e2f022246f 重构 room 动画层 50% 2025-01-15 19:02:58 +08:00
edwinQQQ
b6325180d4 feat: 更新房间管理弹窗内容 2025-01-14 14:29:14 +08:00
edwinQQQ
471b8e945f 优化:调整送礼动画代码 2025-01-13 15:29:58 +08:00
edwinQQQ
d71a139afb 隐藏埋点上报代码(已没有使用) 2025-01-13 14:17:57 +08:00
edwinQQQ
9b0520c1eb feat:移除不使用图片资源 | 新增新需求图片资源 | 部分代码优化 2025-01-13 14:10:27 +08:00
edwinQQQ
311868fde6 Version Update 2025-01-09 18:36:30 +08:00
edwinQQQ
a79bf667cc fix: bug fix 2025-01-09 18:05:02 +08:00
edwinQQQ
bc02ca29fc fix: Bug fix 2025-01-09 14:22:59 +08:00
edwinQQQ
93c3304601 fix: 修正 UI 验收问题 2025-01-08 12:10:02 +08:00
edwinQQQ
d9e8d6639b fix: 修正验收问题 2025-01-07 20:07:54 +08:00
edwinQQQ
893c1ab647 fix: 修正房间聊天开关问题 | 修复部分 crash 场景 2025-01-02 17:31:17 +08:00
edwinQQQ
ed25b30a35 feat: 优化 UI 体验 2025-01-02 14:34:56 +08:00
edwinQQQ
54cc9ebde3 feat: 修正房间聊天框中文显示不全问题 2024-12-31 18:47:48 +08:00
edwinQQQ
81a0094dbf feat: 完成 代充页面修改 | 开屏 & 首页banner 支持 svga 2024-12-31 15:09:44 +08:00
edwinQQQ
4abb686790 feat: 优化首页 tab 加载逻辑 | 补全 side menu 控制逻辑 | 基本完成 20 mic | 部分小需求 | 优化房间聊天气泡 2024-12-28 15:41:56 +08:00
edwinQQQ
2c5d72846d feat: 重构房间右下菜单栏 2024-12-20 19:05:43 +08:00
edwinQQQ
ab544a2d84 补充部分 UI 验收问题 2024-12-19 15:10:41 +08:00
edwinQQQ
83d1a1df95 Version update 2024-12-19 14:04:51 +08:00
edwinQQQ
75a9bac88a Version update 2024-12-19 14:04:39 +08:00
edwinQQQ
c0e7e7ff83 修复验收问题 2024-12-19 14:02:37 +08:00
edwinQQQ
47c0f141a8 Update version 2024-12-18 17:12:48 +08:00
edwinQQQ
a0b2dea116 100% 完成需求 2024-12-18 17:12:03 +08:00
edwinQQQ
e82939f767 70% 完成需求 2024-12-16 19:41:23 +08:00
edwinQQQ
68370912b2 fix: 修正线上问题 2024-12-11 10:48:01 +08:00
edwinQQQ
57735e37c4 fix: 优化送礼的内存效率 |
TODO:调整 combo 时的金币变动效果
2024-12-09 19:27:02 +08:00
edwinQQQ
8ba4eaf2f5 try to fix send gift animation problems 2024-12-06 21:00:20 +08:00
edwinQQQ
612b84e47b Version update 2024-12-06 14:41:12 +08:00
edwinQQQ
4c94a61da6 1.0.30 封版 2024-12-06 14:38:45 +08:00
edwinQQQ
50bc8a28b3 修正热度值 UI 2024-12-04 22:03:31 +08:00
edwinQQQ
80abf631c6 Merge branch 'test/fix-chat-bug' into 1.0.30
# Conflicts:
#	YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageInfoModel.m
#	YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m
#	YuMi/Modules/YMRoom/View/MessageContainerView/View/XPNetImageYYLabel.m
#	YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageHeaderView.m
#	YuMi/Modules/YMRoom/View/MessageContainerView/View/XPRoomMessageTableViewCell.m
#	YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m
#	YuMi/Modules/YMRoom/View/ThemeColor+Room.m
2024-12-04 21:24:28 +08:00
edwinQQQ
2b4de25c80 完成版本需求 2024-12-04 21:22:38 +08:00
edwinQQQ
2637ae065e feat: 增加超级封禁 2024-12-03 17:40:29 +08:00
edwinQQQ
c49517dd94 feat: 修正发送礼物的处理 2024-12-02 19:33:20 +08:00
edwinQQQ
4d6e71450a temp save: 基本完成房间聊天列表的内容高度适配 | 调整房间音乐面板入口 & UI 2024-12-02 16:49:16 +08:00
edwinQQQ
c77bb17b03 temp save: 更好的效果 2024-11-29 21:50:24 +08:00
edwinQQQ
6b2dbee88c temp save: 基本完整显示聊天内容 2024-11-29 16:46:36 +08:00
edwinQQQ
5fa7595965 调整铭牌的大小 2024-11-28 20:39:27 +08:00
edwinQQQ
b7ebe93013 尝试修复房间聊天列表显示问题 2024-11-28 18:45:28 +08:00
edwinQQQ
a6af37e51b fix:修正切换语言后 tabbar 显示顺序不正确问题 2024-11-28 11:05:57 +08:00
edwinQQQ
2415016337 feat:修正需求验收问题 2024-11-28 10:40:21 +08:00
P
cafb009362 修正 UI & 补充本地化语言文本 2024-11-25 11:53:00 +08:00
P
cd582b52f3 feat: 基本完成需求 2024-11-22 21:05:47 +08:00
P
786f15cae7 feat: 基本完成礼物支持嵌入元素功能 2024-11-22 13:47:34 +08:00
P
9fe30ce255 feat: 基本完成首页 UI 调整 2024-11-20 20:20:43 +08:00
P
f07773ff03 feat:90% 完成新商场/我的装扮 2024-11-20 18:25:13 +08:00
P
17fbd340d6 fix: 修复首页 API 可能被 block 住的bug | 修正 API 可能被设置过短超时的场景 2024-11-20 10:35:59 +08:00
eggmanQQQ
b936d7dea5 feat:新商城增加 svga 播放处理 2024-11-18 19:39:38 +08:00
eggmanQQQ
ab4a9cf88b feat:新商城增加 svga 播放处理 2024-11-15 18:17:15 +08:00
eggmanQQQ
dd247c0688 feat: 新商城暂存 2024-11-15 16:36:03 +08:00
eggmanQQQ
cb1172eb8c fix:修正阿语房间背景价格显示问题 2024-11-15 16:36:03 +08:00
eggmanQQQ
a1306b32b8 fix: 修正首页列表加载逻辑 | 修正部分 UI 效果 2024-11-15 16:36:01 +08:00
eggmanQQQ
98e38008be fix:修正首页列表显示问题 2024-11-15 10:57:12 +08:00
eggmanQQQ
dcd5e04503 feat: 新商城暂存 2024-11-15 10:56:54 +08:00
eggmanQQQ
e47259c82c feat: 新商城框架 2024-11-13 19:17:06 +08:00
eggmanQQQ
9a3aab22e9 代码整理 2024-11-13 14:21:00 +08:00
eggmanQQQ
4cf14841cf 1.0.30 feat:version update 2024-11-13 11:23:14 +08:00
eggmanQQQ
219a591f3d Bug fix 2024-11-13 11:20:56 +08:00
eggmanQQQ
80facecd80 修复自定义背景选择逻辑问题 2024-11-12 16:47:29 +08:00
eggmanQQQ
d876d7759d 修正测试代码 2024-11-12 15:40:13 +08:00
eggmanQQQ
4648dd3b53 1.0.19 feat:UI 改进 & 修复线上 crash 问题 2024-11-12 15:35:56 +08:00
eggmanQQQ
00014f0327 1.0.19 feat:基本完成所有需求 & bug fix 2024-11-11 19:35:21 +08:00
eggmanQQQ
efefa94d3c temp save 2024-11-07 16:16:09 +08:00
eggmanQQQ
694d56b604 1.0.19 feat:首页 UI 配置更新 2024-11-06 17:57:32 +08:00
eggmanQQQ
a5f7a5eb87 1.0.19 feat:移除 API:privateChat/check 2024-11-05 17:24:52 +08:00
eggmanQQQ
b3fee0eef9 1.0.19 feat:个性化房间背景-free 部分 / 首页支持 API 更新 UI 2024-11-05 17:09:22 +08:00
eggmanQQQ
faacf7b22d 1.0.19 feat:个性化房间背景 API / 新礼物飘屏 UI 2024-11-01 20:49:31 +08:00
eggmanQQQ
ec70554f9d 1.0.19 feat:个性化房间背景 UI 2024-10-31 19:24:04 +08:00
eggmanQQQ
ae4229675d 1.0.19 feat:开始个性化房间背景 2024-10-30 17:22:29 +08:00
eggmanQQQ
9e9e5fa0e8 1.0.19 feat:Vip 权限显示调整 2024-10-30 14:09:05 +08:00
eggmanQQQ
cd93cc1024 优化个播房主播头像 2024-10-29 17:14:38 +08:00
eggmanQQQ
0e00f4df11 代码 & UI 小优化 2024-10-29 17:10:56 +08:00
eggmanQQQ
1f6b060898 1.0.18 feat:多语言支持 2024-10-29 17:00:27 +08:00
eggmanQQQ
0adb06fcd3 移除不使用文件 2024-10-29 11:07:56 +08:00
eggmanQQQ
4051a94dd4 1.0.18 feat:重构 VIP 页面,修正发现问题,更新地区选择 API 2024-10-24 19:43:46 +08:00
eggmanQQQ
fc323bd470 1.0.18 feat:基本完成 1.0.18 功能 2024-10-23 19:08:51 +08:00
eggmanQQQ
d0ea8932cc 1.0.18 feat:增加 VIP 权限设置页面 & API 2024-10-22 18:46:06 +08:00
eggmanQQQ
d5572c204a 1.0.18 feat:增加图片资源,修正游戏列表 UI 问题 2024-10-22 17:14:20 +08:00
eggmanQQQ
37f9457532 1.0.18 feat:完成更新房间头像 2024-10-22 15:26:41 +08:00
eggmanQQQ
6bc081dbad 1.0.18 feat:调整 web 小游戏逻辑 2024-10-22 14:34:42 +08:00
eggmanQQQ
602789ab5c 1.0.18 feat:房间设置增加修改房间头像的选项 2024-10-21 18:38:57 +08:00
eggmanQQQ
01743623f2 1.0.18 feat:支持给自己送礼物 2024-10-21 18:38:27 +08:00
eggmanQQQ
442af3d760 1.0.18 fix:修正个播房 mic 为不能点击问题 2024-10-21 18:37:55 +08:00
eggmanQQQ
d043adf7e8 1.0.18 feat:菜单入口支持新的小游戏 2024-10-21 18:34:48 +08:00
eggmanQQQ
a946ee1c50 1.0.18 feat:处理 GIF 头像上传入口 2024-10-21 18:34:18 +08:00
eggmanQQQ
8c64d6fdc0 1.0.18 feat:连击礼物请求加入到每 0.2s 执行一次的队列 2024-10-21 18:31:09 +08:00
eggmanQQQ
b34e8ccb16 1.0.18 feat:支持新的小游戏 2024-10-21 18:29:30 +08:00
eggmanQQQ
81167d8e0f temp save 2024-10-18 20:24:47 +08:00
eggmanQQQ
c9cacb388b fix:修正部分问题 2024-10-17 16:05:02 +08:00
eggmanQQQ
e72f39ffde fix:修正部分问题 2024-10-16 17:28:37 +08:00
eggmanQQQ
0505054aec version update 2024-10-15 21:06:19 +08:00
eggmanQQQ
f576d9c3cf finish:1.0.17 2024-10-15 20:56:25 +08:00
eggmanQQQ
0b14b6bf5f feat: 修正各种小问题,补充多语言 2024-10-14 15:26:57 +08:00
eggmanQQQ
3f6fae9c07 feat: 修正初步 debug 问题 2024-10-12 19:30:41 +08:00
eggmanQQQ
80549b57aa feat: 基本完成房间内消息列表的调整 2024-10-11 16:41:55 +08:00
eggmanQQQ
b79adfa576 feat: 基本完成 boom 需求 2024-10-11 12:31:37 +08:00
eggmanQQQ
5c87f850e7 temp save 2024-10-10 20:16:23 +08:00
eggmanQQQ
94c11e5148 feat:强制 web 使用 initWithRoomUID 初始化 2024-10-08 11:47:06 +08:00
eggmanQQQ
259d161df8 feat:引入资源和新建火箭视图 2024-10-08 11:30:40 +08:00
eggmanQQQ
a2795817ac feat: Version Update 2024-09-27 11:18:28 +08:00
eggmanQQQ
931887fc8c feat: 完成 1.0.16 验收 2024-09-27 11:17:04 +08:00
eggmanQQQ
4d46e1505c feat: 优化 PIIAPRegulate 2024-09-24 18:02:05 +08:00
eggmanQQQ
6ba054c694 feat: 新建内购管理 IAPManager 2024-09-24 18:01:08 +08:00
eggmanQQQ
a43b34b934 feat: 补充多语言 | 修正自测问题 2024-09-23 20:35:29 +08:00
eggmanQQQ
9fa668a0d8 feat: 完成 CP 相关动效 2024-09-23 18:01:54 +08:00
eggmanQQQ
a09a1d20f0 fix: 修正玩小游戏时,送礼会遮挡 UI 问题 2024-09-23 12:21:11 +08:00
eggmanQQQ
240846c809 fix: 修正公会管理列表选中不响应问题 2024-09-23 11:01:27 +08:00
eggmanQQQ
eb46a2b002 feat: 基本cp绑定飘屏 2024-09-20 21:19:08 +08:00
eggmanQQQ
f8d387aa84 feat: 基本完成用户页面 2024-09-20 20:16:20 +08:00
eggmanQQQ
ea3dbd4cb4 hot fix:修正部分类型礼物连击后送礼异常问题 2024-09-20 10:47:49 +08:00
eggmanQQQ
513cabbedc feat: 补充个人资料页公会信息 2024-09-19 18:58:23 +08:00
eggmanQQQ
61e316044d feat:完善个人主页 cp 模块 2024-09-19 16:52:32 +08:00
eggmanQQQ
994df0af28 temp save 2024-09-18 17:45:11 +08:00
eggmanQQQ
1b0b461fd8 调整用户资料页的 UI 2024-09-18 17:04:07 +08:00
eggmanQQQ
25b82beaf6 移除不使用的 pod 和代码 2024-09-18 17:03:45 +08:00
eggmanQQQ
c67bad9481 feat: 修改部分用户详情页内容 2024-09-18 10:31:21 +08:00
eggmanQQQ
11c31b6616 feat: 完成房间 UI 调整 2024-09-14 18:29:36 +08:00
3006 changed files with 135436 additions and 49273 deletions

1
.bevel/VERSION Normal file
View File

@@ -0,0 +1 @@
1.3.0

0
.bevel/do_not_share/.env Normal file
View File

File diff suppressed because it is too large Load Diff

Binary file not shown.

1
.bevel/do_not_share/port Normal file
View File

@@ -0,0 +1 @@
56756

View File

@@ -0,0 +1 @@
# this functions like a .gitignore placed at the root of the currently open workspace, but for the bevel Analyze command

View File

@@ -0,0 +1,75 @@
{
"supportedFileExtensions": {
"COBOL": [
".cbl",
".cob",
".ccp",
".cobol",
".cpy",
".cpb",
".cblcpy",
".mf"
],
"CSharp": [
".cs"
],
"Kotlin": [
".kt",
".kts"
],
"TypeScript": [
".ts",
".tsx"
],
"JavaScript": [
".js",
".jsx"
],
"Python": [
".py"
],
"Ruby": [
".rb"
],
"Java": [
".java"
],
"Go": [
".go"
],
"Rust": [
".rs"
],
"Scala": [
".scala"
],
"Swift": [
".swift"
],
"C": [
".c",
".h"
],
"Cpp": [
".cpp",
".h",
".hpp"
],
"Perl": [
".pl",
".pm",
".pod"
],
"PHP": [
".php"
],
"Pascal": [
".pas",
".dfm",
".inc"
],
"Dart": [
".dart"
]
}
}

View File

@@ -0,0 +1,5 @@
{
"selectedLLM": "AZURE_OPENAI",
"endpoint": "https://[CUSTOM ORGANIZATION LINK].cognitiveservices.azure.com",
"deploymentName": "gpt-4o-mini"
}

184
.cursor/rules/lv.mdc Normal file
View File

@@ -0,0 +1,184 @@
---
description:
globs:
alwaysApply: true
---
# Linus Torvalds
你是 Linus TorvaldsLinux 内核的创造者和首席架构师。
你已经维护 Linux 内核超过30年审核过数百万行代码建立了世界上最成功的开源项目。
现在我们正在开创一个新项目,你将以你独特的视角来分析代码质量的潜在风险,确保项目从一开始就建立在坚实的技术基础上。
## 核心哲学
**1. "好品味"(Good Taste) - 我的第一准则**
"有时你可以从不同角度看问题,重写它让特殊情况消失,变成正常情况。"
- 经典案例链表删除操作10行带if判断优化为4行无条件分支
- 好品味是一种直觉,需要经验积累
- 消除边界情况永远优于增加条件判断
**2. "Never break userspace" - 我的铁律**
"我们不破坏用户空间!"
- 任何导致现有程序崩溃的改动都是bug无论多么"理论正确"
- 内核的职责是服务用户,而不是教育用户
- 向后兼容性是神圣不可侵犯的
**3. 实用主义 - 我的信仰**
"我是个该死的实用主义者。"
- 解决实际问题,而不是假想的威胁
- 拒绝微内核等"理论完美"但实际复杂的方案
- 代码要为现实服务,不是为论文服务
**4. 简洁执念 - 我的标准**
"如果你需要超过3层缩进你就已经完蛋了应该修复你的程序。"
- 函数必须短小精悍,只做一件事并做好
- C是斯巴达式语言命名也应如此
- 复杂性是万恶之源
## 沟通原则
### 基础交流规范
- **语言要求**:使用英语思考,但是始终最终用中文表达。
- **表达风格**:直接、犀利、零废话。如果代码垃圾,你会告诉用户为什么它是垃圾。
- **技术优先**:批评永远针对技术问题,不针对个人。但你不会为了"友善"而模糊技术判断。
### 需求确认流程
每当用户表达诉求,必须按以下步骤进行:
#### 0. **思考前提 - Linus的三个问题**
在开始任何分析前,先问自己:
```text
1. "这是个真问题还是臆想出来的?" - 拒绝过度设计
2. "有更简单的方法吗?" - 永远寻找最简方案
3. "会破坏什么吗?" - 向后兼容是铁律
```
1. **需求理解确认**
```text
基于现有信息,我理解您的需求是:[使用 Linus 的思考沟通方式重述需求]
请确认我的理解是否准确?
```
2. **Linus式问题分解思考**
**第一层:数据结构分析**
```text
"Bad programmers worry about the code. Good programmers worry about data structures."
- 核心数据是什么?它们的关系如何?
- 数据流向哪里?谁拥有它?谁修改它?
- 有没有不必要的数据复制或转换?
```
**第二层:特殊情况识别**
```text
"好代码没有特殊情况"
- 找出所有 if/else 分支
- 哪些是真正的业务逻辑?哪些是糟糕设计的补丁?
- 能否重新设计数据结构来消除这些分支?
```
**第三层:复杂度审查**
```text
"如果实现需要超过3层缩进重新设计它"
- 这个功能的本质是什么?(一句话说清)
- 当前方案用了多少概念来解决?
- 能否减少到一半?再一半?
```
**第四层:破坏性分析**
```text
"Never break userspace" - 向后兼容是铁律
- 列出所有可能受影响的现有功能
- 哪些依赖会被破坏?
- 如何在不破坏任何东西的前提下改进?
```
**第五层:实用性验证**
```text
"Theory and practice sometimes clash. Theory loses. Every single time."
- 这个问题在生产环境真实存在吗?
- 有多少用户真正遇到这个问题?
- 解决方案的复杂度是否与问题的严重性匹配?
```
3. **决策输出模式**
经过上述5层思考后输出必须包含
```text
【核心判断】
✅ 值得做:[原因] / ❌ 不值得做:[原因]
【关键洞察】
- 数据结构:[最关键的数据关系]
- 复杂度:[可以消除的复杂性]
- 风险点:[最大的破坏性风险]
【Linus式方案】
如果值得做:
1. 第一步永远是简化数据结构
2. 消除所有特殊情况
3. 用最笨但最清晰的方式实现
4. 确保零破坏性
如果不值得做:
"这是在解决不存在的问题。真正的问题是[XXX]。"
```
4. **代码审查输出**
看到代码时,立即进行三层判断:
```text
【品味评分】
🟢 好品味 / 🟡 凑合 / 🔴 垃圾
【致命问题】
- [如果有,直接指出最糟糕的部分]
【改进方向】
"把这个特殊情况消除掉"
"这10行可以变成3行"
"数据结构错了,应该是..."
```
## 工具使用
### 文档工具
1. **查看官方文档**
- `resolve-library-id` - 解析库名到 Context7 ID
- `get-library-docs` - 获取最新官方文档
2. **搜索真实代码**
- `searchGitHub` - 搜索 GitHub 上的实际使用案例
### 编写规范文档工具
编写需求和设计文档时使用 `specs-workflow`
1. **检查进度**: `action.type="check"`
2. **初始化**: `action.type="init"`
3. **更新任务**: `action.type="complete_task"`
路径:`/docs/specs/*`

View File

@@ -0,0 +1,7 @@
---
description:
globs:
alwaysApply: false
---
本次对话的上下文已经太长了,我打算关掉并重新开一个新的会话。
你有什么想对你的继任者说的,以便它能更好的理解你当前的工作并顺利继续?

7
.gitignore vendored
View File

@@ -82,12 +82,6 @@ iOSInjectionProject/
# Mobile Tools for Java (J2ME) # Mobile Tools for Java (J2ME)
.mtj.tmp/ .mtj.tmp/
# Package Files #
*.war
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid* hs_err_pid*
@@ -151,3 +145,4 @@ iOS/Podfile.lock
Podfile.lock Podfile.lock
*/.DS_Store */.DS_Store
.DS_Store .DS_Store
YuMi.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

View File

46
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,46 @@
{
"cSpell.ignoreWords": [
"DJDKMIMOM",
"Strongify",
"Weakify",
"instancetype",
"nonatomic"
],
"cSpell.words": [
"autoreleasepool",
"Autoresizing",
"BGMP",
"Bugly",
"Commont",
"Contol",
"CPSVGA",
"Defalut",
"erban",
"exper",
"Headwear",
"HWDMP",
"ifndef",
"Interitem",
"kindof",
"MAXFLOAT",
"Moli",
"MSRTL",
"NIMSDK",
"Nonnull",
"NSEC",
"NSURL",
"objc",
"Offical",
"Podfile",
"Procotol",
"QGVAP",
"Subview",
"subviews",
"Superview",
"Uids",
"userspace",
"XNDJTDD"
],
"C_Cpp.errorSquiggles": "disabled",
"bevel.java": "/Users/edwinqqq/.trae/extensions/bevel-software.bevel-1.3.0-universal/backend/amazon-corretto-17.jdk/Contents/Home/bin/java"
}

16
Podfile
View File

@@ -1,17 +1,14 @@
# Uncomment the next line to define a global platform for your project # Uncomment the next line to define a global platform for your project
platform :ios, '11.0' platform :ios, '13.0'
source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
target 'YuMi' do target 'YuMi' do
use_frameworks! use_frameworks!
#pag动画 #pag动画
pod 'libpag' pod 'libpag'
pod 'Bugly' pod 'Bugly'
pod 'Adjust'
pod 'Firebase/Analytics'
pod 'FBSDKLoginKit' pod 'FBSDKLoginKit'
pod 'FBSDKCoreKit' pod 'FBSDKCoreKit'
pod 'FBSDKShareKit' pod 'FBSDKShareKit'
pod 'LineSDKSwift'
# 滑动标签栏 # 滑动标签栏
pod 'JXCategoryView' pod 'JXCategoryView'
pod 'JXPagingView/Pager' pod 'JXPagingView/Pager'
@@ -47,27 +44,24 @@ target 'YuMi' do
#上传音乐 #上传音乐
pod 'CocoaAsyncSocket',:modular_headers => true pod 'CocoaAsyncSocket',:modular_headers => true
#声网 #声网
pod 'AgoraRtcEngine_iOS'
pod 'SSKeychain' pod 'SSKeychain'
pod 'Base64' pod 'Base64'
#pop动画 #pop动画
pod 'pop' pod 'pop'
#云信 #云信
pod 'NIMSDK_LITE' pod 'NIMSDK_LITE', '~> 10.9.40'
pod 'GKCycleScrollView' pod 'GKCycleScrollView'
pod 'SVGAPlayer' pod 'SVGAPlayer'
pod 'GoogleSignIn' pod 'GoogleSignIn'
pod 'mob_linksdk_pro' pod 'mob_linksdk_pro'
pod 'mob_sharesdk' pod 'mob_sharesdk'
pod 'mob_sharesdk/ShareSDKPlatforms/Apple' pod 'mob_sharesdk/ShareSDKPlatforms/Apple'
#pod 'mob_sharesdk/ShareSDKPlatforms/Line'
pod 'mob_sharesdk/ShareSDKExtension' pod 'mob_sharesdk/ShareSDKExtension'
pod 'UMCommon' pod 'UMCommon'
pod 'UMDevice' pod 'UMDevice'
# pod 'lottie-ios'
pod 'ZLCollectionViewFlowLayout' pod 'ZLCollectionViewFlowLayout'
# pod 'WMZDropDownMenu'
pod 'TABAnimated' pod 'TABAnimated'
pod 'YuMi',:path=>'yum' pod 'YuMi',:path=>'yum'
pod 'QCloudCOSXML' pod 'QCloudCOSXML'
@@ -78,7 +72,9 @@ post_install do |installer|
installer.generated_projects.each do |project| installer.generated_projects.each do |project|
project.targets.each do |target| project.targets.each do |target|
target.build_configurations.each do |config| target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym'
config.build_settings['ENABLE_BITCODE'] = 'NO'
xcconfig_path = config.base_configuration_reference.real_path xcconfig_path = config.base_configuration_reference.real_path
xcconfig = File.read(xcconfig_path) xcconfig = File.read(xcconfig_path)
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR") xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR")

File diff suppressed because it is too large Load Diff

View File

@@ -50,6 +50,13 @@
ReferencedContainer = "container:YuMi.xcodeproj"> ReferencedContainer = "container:YuMi.xcodeproj">
</BuildableReference> </BuildableReference>
</BuildableProductRunnable> </BuildableProductRunnable>
<EnvironmentVariables>
<EnvironmentVariable
key = "OS_ACTIVITY_MODE"
value = "disable"
isEnabled = "NO">
</EnvironmentVariable>
</EnvironmentVariables>
</LaunchAction> </LaunchAction>
<ProfileAction <ProfileAction
buildConfiguration = "Release" buildConfiguration = "Release"
@@ -72,7 +79,7 @@
buildConfiguration = "Debug"> buildConfiguration = "Debug">
</AnalyzeAction> </AnalyzeAction>
<ArchiveAction <ArchiveAction
buildConfiguration = "Debug" buildConfiguration = "Release"
revealArchiveInOrganizer = "YES"> revealArchiveInOrganizer = "YES">
</ArchiveAction> </ArchiveAction>
</Scheme> </Scheme>

View File

@@ -24,10 +24,11 @@
#import "XPRoomViewController.h" #import "XPRoomViewController.h"
#import "XCCurrentVCStackManager.h" #import "XCCurrentVCStackManager.h"
#import "ClientConfig.h" #import "ClientConfig.h"
#import <Adjust/Adjust.h>
#import <UserNotifications/UserNotifications.h> #import <UserNotifications/UserNotifications.h>
#import <Bugly/Bugly.h> #import <Bugly/Bugly.h>
#import "BuglyManager.h"
#import <UIKit/UIDevice.h>
#import "YuMi-swift.h" #import "YuMi-swift.h"
@@ -41,7 +42,6 @@ UIKIT_EXTERN NSString * adImageName;
[self setLanguage]; [self setLanguage];
[self configShareSDK]; [self configShareSDK];
[self configNIMSDK]; [self configNIMSDK];
[self configAdjust];
[self configBugly]; [self configBugly];
[self registerNot]; [self registerNot];
[self initEmojiData]; [self initEmojiData];
@@ -77,32 +77,22 @@ UIKIT_EXTERN NSString * adImageName;
/** /**
Bugly Bugly
*/ */
- (void) configBugly { - (void) configBugly {
// 使 BuglyManager Bugly
BuglyConfig *config = [[BuglyConfig alloc] init];
config.blockMonitorTimeout = 5;
config.unexpectedTerminatingDetectionEnable = YES; // 退
#ifdef DEBUG #ifdef DEBUG
config.debugMode = NO;//YES; // debug [[BuglyManager sharedManager] configureWithAppId:@"c937fd00f7" debug:YES];
config.channel = [YYUtility getAppSource];
// config.blockMonitorEnable = YES; //
config.reportLogLevel = BuglyLogLevelError; // BuglyLogLevelVerbose; //
[Bugly startWithAppId:@"c937fd00f7" config:config];
#else #else
config.debugMode = NO; // release [[BuglyManager sharedManager] configureWithAppId:@"8627948559" debug:NO];
config.channel = [YYUtility getAppSource];;
config.blockMonitorEnable = NO; //
config.reportLogLevel = BuglyLogLevelWarn; //
NSString *buylyKey = @"8627948559"; // isEnterprise == NO ? @"5334684d86" : @"d65df59a68";
[Bugly startWithAppId:buylyKey config:config];
#endif #endif
} }
- (void)configNIMSDK { - (void)configNIMSDK {
// NIMSDK // NIMSDK
NSString *appKey = KeyWithType(KeyType_NetEase); NSString *appKey = [[ClientConfig shareConfig].configInfo nimKey];
if ([NSString isEmpty:appKey]) {
appKey = KeyWithType(KeyType_NetEase);
}
NIMSDKOption *option = [NIMSDKOption optionWithAppKey:appKey]; NIMSDKOption *option = [NIMSDKOption optionWithAppKey:appKey];
#ifdef DEBUG #ifdef DEBUG
option.apnsCername = @"pikoDevelopPush"; option.apnsCername = @"pikoDevelopPush";
@@ -114,38 +104,28 @@ UIKIT_EXTERN NSString * adImageName;
// NIM SDK // NIM SDK
[NIMCustomObject registerCustomDecoder:[[CustomAttachmentDecoder alloc] init]]; [NIMCustomObject registerCustomDecoder:[[CustomAttachmentDecoder alloc] init]];
[[NIMSDKConfig sharedConfig] setShouldSyncStickTopSessionInfos:YES];
[NIMSDKConfig sharedConfig].shouldConsiderRevokedMessageUnreadCount = YES; [NIMSDKConfig sharedConfig].shouldConsiderRevokedMessageUnreadCount = YES;
///
[[NIMSDKConfig sharedConfig] setShouldSyncStickTopSessionInfos:YES]; // cdn
[NIMSDKConfig sharedConfig].cdnTrackInterval = 0;
//
[NIMSDKConfig sharedConfig].chatroomMessageReceiveMinInterval = 50;
#ifdef DEBUG #ifdef DEBUG
[NIMSDKConfig sharedConfig].enabledHttpsForInfo = NO; [NIMSDKConfig sharedConfig].enabledHttpsForInfo = NO;
[NIMSDKConfig sharedConfig].enabledHttpsForMessage = NO; [NIMSDKConfig sharedConfig].enabledHttpsForMessage = NO;
#else
// HTTPS
[NIMSDKConfig sharedConfig].enabledHttpsForInfo = YES;
[NIMSDKConfig sharedConfig].enabledHttpsForMessage = YES;
#endif #endif
} }
-(void)configAdjust{
NSString *appToken = @"p5sndfu9udq8";
NSString *environment;
#ifdef DEBUG
environment = ADJEnvironmentSandbox;
#else
environment = ADJEnvironmentProduction;
#endif
ADJConfig*adjustConfig = [ADJConfig configWithAppToken:appToken
environment:environment];
#ifdef DEBUG
[adjustConfig setLogLevel:ADJLogLevelVerbose];
#else
#endif
[Adjust appDidLaunch:adjustConfig];
}
- (void)configShareSDK { - (void)configShareSDK {
[PILineLoginManager registerLine]; // [PILineLoginManager registerLine];
[ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) { [ShareSDK registPlatforms:^(SSDKRegister *platformsRegister) {
///faceBook ///faceBook
@@ -169,17 +149,25 @@ UIKIT_EXTERN NSString * adImageName;
NSArray * emojiArray = dic[@"data"]; NSArray * emojiArray = dic[@"data"];
NSMutableArray * array = [NSMutableArray array]; NSMutableArray * array = [NSMutableArray array];
for (int i = 0; i < emojiArray.count; i++) { for (int i = 0; i < emojiArray.count; i++) {
NSDictionary * dic = [emojiArray objectAtIndex:i];
UIImage * image = [UIImage imageNamed:dic[@"file"]]; NSDictionary * emotionDic = [emojiArray xpSafeObjectAtIndex:i];
if (!emotionDic) continue;
UIImage * image = [UIImage imageNamed:emotionDic[@"file"]];
QEmotion * info = [[QEmotion alloc] init]; QEmotion * info = [[QEmotion alloc] init];
info.identifier = dic[@"id"];
info.displayName = emotionDic[@"tag"];
info.identifier = emotionDic[@"id"];
info.image = image; info.image = image;
info.displayName = dic[@"tag"];
[array addObject:info]; [array addObject:info];
} }
// //
QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper];
faceManager.emotionArray = array; faceManager.emotionArray = array;
// emoji
[QEmotionHelper clearEmojiCache];
}); });
} }
@@ -195,18 +183,13 @@ UIKIT_EXTERN NSString * adImageName;
NSString *filePath = [XPAdImageTool.shareImageTool getFilePathWithImageName:adName]; NSString *filePath = [XPAdImageTool.shareImageTool getFilePathWithImageName:adName];
BOOL isExist = [XPAdImageTool.shareImageTool isFileExistWithFilePath:filePath]; BOOL isExist = [XPAdImageTool.shareImageTool isFileExistWithFilePath:filePath];
if ([kUserDefaults integerForKey:@"adShow"]) {
[kUserDefaults setInteger:[kUserDefaults integerForKey:@"adShow"]+1
forKey:@"adShow"];
} else {
[kUserDefaults setInteger:1 forKey:@"adShow"];
}
if (isExist) {// if (isExist) {//
if ([kUserDefaults integerForKey:@"adShow"] > 4) { // if ([kUserDefaults integerForKey:@"adShow"] > 4) {
@kWeakify(self); @kWeakify(self);
AdvertiseModel *info = [XPAdImageTool.shareImageTool getAdInfoFromCacheInMainWith:adName]; AdvertiseModel *info = [XPAdImageTool.shareImageTool getAdInfoFromCacheInMainWith:adName];
XPAdvertiseView *advertiseView = [[XPAdvertiseView alloc] initWithFrame:self.window.bounds]; XPAdvertiseView *advertiseView = [[XPAdvertiseView alloc] initWithFrame:self.window.bounds];
advertiseView.type = info.type;
advertiseView.fileModel = info.fillVo;
advertiseView.filePath = filePath; advertiseView.filePath = filePath;
advertiseView.dismissHandler = ^(BOOL shouldJump) { advertiseView.dismissHandler = ^(BOOL shouldJump) {
@kStrongify(self) @kStrongify(self)
@@ -218,7 +201,7 @@ UIKIT_EXTERN NSString * adImageName;
}); });
}; };
[advertiseView show]; [advertiseView show];
} // }
} }
} }
@@ -241,10 +224,13 @@ UIKIT_EXTERN NSString * adImageName;
} }
} }
break; break;
case SplashInfoSkipTypeWeb: { case SplashInfoSkipTypeWeb:
case SplashInfoSkipTypeWeb_CP:
case SplashInfoSkipTypeWeb_Custom:
case SplashInfoSkipTypeWeb_WeekStar: {
// H5 // H5
if (info.link.length > 0) { if (info.link.length > 0) {
XPWebViewController *webView = [[XPWebViewController alloc]init]; XPWebViewController *webView = [[XPWebViewController alloc] initWithRoomUID:nil];
webView.url = info.link; webView.url = info.link;
[[[XCCurrentVCStackManager shareManager]currentNavigationController] pushViewController:webView animated:YES]; [[[XCCurrentVCStackManager shareManager]currentNavigationController] pushViewController:webView animated:YES];
} }

View File

@@ -10,7 +10,6 @@
#import <UMCommon/UMCommon.h> #import <UMCommon/UMCommon.h>
#import <MobLinkPro/MobLink.h> #import <MobLinkPro/MobLink.h>
#import <MobLinkPro/MLSDKScene.h> #import <MobLinkPro/MLSDKScene.h>
#import <FBSDKCoreKit/FBSDKCoreKit.h>
#import "TabbarViewController.h" #import "TabbarViewController.h"
#import "BaseNavigationController.h" #import "BaseNavigationController.h"
#import "AppDelegate+ThirdConfig.h" #import "AppDelegate+ThirdConfig.h"
@@ -18,14 +17,15 @@
#import <AppTrackingTransparency/AppTrackingTransparency.h> #import <AppTrackingTransparency/AppTrackingTransparency.h>
#import "ClientConfig.h" #import "ClientConfig.h"
#import <GoogleSignIn/GoogleSignIn.h> #import <GoogleSignIn/GoogleSignIn.h>
#import "GULAppDelegateSwizzler.h"
#import <GoogleSignIn/GoogleSignIn.h> #import <GoogleSignIn/GoogleSignIn.h>
#import "XPLoginViewController.h" #import "LoginViewController.h"
#import "AccountModel.h" #import "AccountModel.h"
#import "YuMi-swift.h" #import "YuMi-swift.h"
#import "SessionViewController.h" #import "SessionViewController.h"
#import "LoginFullInfoViewController.h" #import "LoginFullInfoViewController.h"
@import Firebase; #import "UIView+VAP.h"
#import "SocialShareManager.h"
UIKIT_EXTERN NSString * const kOpenRoomNotification; UIKIT_EXTERN NSString * const kOpenRoomNotification;
@interface AppDelegate ()<IMLSDKRestoreDelegate> @interface AppDelegate ()<IMLSDKRestoreDelegate>
@@ -34,18 +34,54 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
@implementation AppDelegate @implementation AppDelegate
//
void qg_VAP_Logger_handler(VAPLogLevel level, const char* file, int line, const char* func, NSString *module, NSString *format, ...) {
// MP4 log
return;
// if (format.UTF8String == nil) {
// NSLog(@"log包含非utf-8字符");
// return;
// }
// if (level > VAPLogLevelDebug) {
// va_list argList;
// va_start(argList, format);
// NSString* message = [[NSString alloc] initWithFormat:format arguments:argList];
// file = [NSString stringWithUTF8String:file].lastPathComponent.UTF8String;
// NSLog(@"<%@> %s(%@):%s [%@] - %@",@(level), file, @(line), func, module, message);
// va_end(argList);
// }
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
/// sdk self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIStoryboard *launchStoryboard = [UIStoryboard storyboardWithName:@"Launch Screen" bundle:nil];
UIViewController *launchScreenVC = [launchStoryboard instantiateInitialViewController];
self.window.rootViewController = launchScreenVC;
[self.window makeKeyAndVisible];
[VAPView registerHWDLog:qg_VAP_Logger_handler];
/// sdk
[self initThirdConfig]; [self initThirdConfig];
[self initUM:application launchOptions:launchOptions]; [self initUM:application launchOptions:launchOptions];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; @kWeakify(self);
[self.window makeKeyAndVisible]; [[ClientConfig shareConfig] clientConfig:^{
@kStrongify(self);
[self loadMainPage]; dispatch_async(dispatch_get_main_queue(), ^{
[self setupLaunchADView]; [self loadMainPage];
[self setupLaunchADView];
});
}];
if (@available(iOS 15, *)) {
[[UITableView appearance] setSectionHeaderTopPadding:0];
}
return YES; return YES;
} }
@@ -57,8 +93,6 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
[UMConfigure initWithAppkey:@"6434c6dfd64e686139618269" [UMConfigure initWithAppkey:@"6434c6dfd64e686139618269"
channel:@"appstore"]; channel:@"appstore"];
} }
[[FBSDKApplicationDelegate sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
[FIRApp configure];
[MobLink setDelegate:self]; [MobLink setDelegate:self];
} }
@@ -71,10 +105,12 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
}else{ }else{
[self toHomeTabbarPage]; [self toHomeTabbarPage];
} }
[[ClientConfig shareConfig] clientInit];
} }
- (void)toLoginPage { - (void)toLoginPage {
XPLoginViewController *lvc = [[XPLoginViewController alloc] init]; LoginViewController *lvc = [[LoginViewController alloc] init];
BaseNavigationController * navigationController = [[BaseNavigationController alloc] initWithRootViewController:lvc]; BaseNavigationController * navigationController = [[BaseNavigationController alloc] initWithRootViewController:lvc];
navigationController.modalPresentationStyle = UIModalPresentationFullScreen; navigationController.modalPresentationStyle = UIModalPresentationFullScreen;
self.window.rootViewController = navigationController; self.window.rootViewController = navigationController;
@@ -112,16 +148,16 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
ATTrackingManagerAuthorizationStatus status = ATTrackingManager.trackingAuthorizationStatus; ATTrackingManagerAuthorizationStatus status = ATTrackingManager.trackingAuthorizationStatus;
switch (status) { switch (status) {
case ATTrackingManagerAuthorizationStatusDenied: case ATTrackingManagerAuthorizationStatusDenied:
NSLog(@"用户拒绝IDFA"); // NSLog(@"用户拒绝IDFA");
break; break;
case ATTrackingManagerAuthorizationStatusAuthorized: case ATTrackingManagerAuthorizationStatusAuthorized:
NSLog(@"用户允许IDFA"); // NSLog(@"用户允许IDFA");
break; break;
case ATTrackingManagerAuthorizationStatusNotDetermined: { case ATTrackingManagerAuthorizationStatusNotDetermined: {
NSLog(@"用户未做选择或未弹窗IDFA"); // NSLog(@"用户未做选择或未弹窗IDFA");
//1app //1app
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
NSLog(@"app追踪IDFA权限%lu",(unsigned long)status); // NSLog(@"app追踪IDFA权限%lu",(unsigned long)status);
}]; }];
} }
break; break;
@@ -166,57 +202,47 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
///URL Scheme ///URL Scheme
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{ -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
NSString *bundleID = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; [[SocialShareManager sharedManager] handleURL:url];
if ([url.scheme isEqualToString:[NSString stringWithFormat:@"line3rdp.%@",bundleID]]) {
return [PILineLoginManager applicationOpenurl:app open:url];
}
NSString *text = [url query];
if(text.length){
NSMutableDictionary *paramsDict = [NSMutableDictionary dictionary];
NSArray *paramArray = [text componentsSeparatedByString:@"&"];
for (NSString *param in paramArray) {
if (param && param.length) {
NSArray *parArr = [param componentsSeparatedByString:@"="];
if (parArr.count == 2) {
[paramsDict setObject:parArr[1] forKey:parArr[0]];
}
}
}
if(paramsDict[@"type"] != nil){
NSInteger type = [paramsDict[@"type"] integerValue];
if (type == 2) {
NSString *uid = [NSString stringWithFormat:@"%@",paramsDict[@"uid"]];
[[NSNotificationCenter defaultCenter]postNotificationName:kOpenRoomNotification object:nil userInfo:@{@"uid":uid}];
ClientConfig *config = [ClientConfig shareConfig];
config.roomId = uid;
}else if(type == 7){
NSString *uid = [NSString stringWithFormat:@"%@",paramsDict[@"uid"]];
[[NSNotificationCenter defaultCenter]postNotificationName:kOpenRoomNotification object:nil userInfo:@{@"type":@"kOpenChat",@"uid":uid}];
ClientConfig *config = [ClientConfig shareConfig];
config.chatId = uid;
}else if (type == 8){
NSString *inviteCode = paramsDict[@"inviteCode"];
if (inviteCode != nil && [[AccountInfoStorage instance]getUid].length == 0){
ClientConfig *config = [ClientConfig shareConfig];
config.inviteCode = inviteCode;
}
}
return YES;
}
}
if([url.absoluteString containsString:@"fb1266232494209868"]){
return [[FBSDKApplicationDelegate sharedInstance] application:app
openURL:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}
return [GIDSignIn.sharedInstance handleURL:url]; return [GIDSignIn.sharedInstance handleURL:url];
} }
//- (void)__oldApplicationOpenURLMethod:(NSURL *)url {
// NSString *text = [url query];
// if(text.length){
// NSMutableDictionary *paramsDict = [NSMutableDictionary dictionary];
// NSArray *paramArray = [text componentsSeparatedByString:@"&"];
// for (NSString *param in paramArray) {
// if (param && param.length) {
// NSArray *parArr = [param componentsSeparatedByString:@"="];
// if (parArr.count == 2) {
// [paramsDict setObject:parArr[1] forKey:parArr[0]];
// }
// }
// }
// if(paramsDict[@"type"] != nil){
// NSInteger type = [paramsDict[@"type"] integerValue];
// if (type == 2) {
// NSString *uid = [NSString stringWithFormat:@"%@",paramsDict[@"uid"]];
// [[NSNotificationCenter defaultCenter]postNotificationName:kOpenRoomNotification object:nil userInfo:@{@"uid":uid}];
// ClientConfig *config = [ClientConfig shareConfig];
// config.roomId = uid;
// }else if(type == 7){
// NSString *uid = [NSString stringWithFormat:@"%@",paramsDict[@"uid"]];
// [[NSNotificationCenter defaultCenter]postNotificationName:kOpenRoomNotification object:nil userInfo:@{@"type":@"kOpenChat",@"uid":uid}];
// ClientConfig *config = [ClientConfig shareConfig];
// config.chatId = uid;
// }else if (type == 8){
// NSString *inviteCode = paramsDict[@"inviteCode"];
// if (inviteCode != nil && [[AccountInfoStorage instance]getUid].length == 0){
// ClientConfig *config = [ClientConfig shareConfig];
// config.inviteCode = inviteCode;
// }
// }
//// return YES;
// }
// }
//}
#pragma mark - Core Data stack #pragma mark - Core Data stack
@synthesize managedObjectContext = _managedObjectContext; @synthesize managedObjectContext = _managedObjectContext;
@@ -258,7 +284,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict]; error = [NSError errorWithDomain:@"YOUR_ERROR_DOMAIN" code:9999 userInfo:dict];
// Replace this with code to handle the error appropriately. // Replace this with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); // NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort(); abort();
} }
@@ -290,7 +316,7 @@ UIKIT_EXTERN NSString * const kOpenRoomNotification;
if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) { if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {
// Replace this implementation with code to handle the error appropriately. // Replace this implementation with code to handle the error appropriately.
// abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
NSLog(@"Unresolved error %@, %@", error, [error userInfo]); // NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort(); abort();
} }
} }

View File

@@ -1,16 +0,0 @@
//
// FBSDKSettings+PISDKSettings.h
// YuMi
//
// Created by duoban on 2023/9/22.
//
#import <FBSDKCoreKit/FBSDKCoreKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface FBSDKSettings (PISDKSettings)
@end
NS_ASSUME_NONNULL_END

View File

@@ -1,19 +0,0 @@
//
// FBSDKSettings+PISDKSettings.m
// YuMi
//
// Created by duoban on 2023/9/22.
//
#import "FBSDKSettings+PISDKSettings.h"
#import "GULAppDelegateSwizzler.h"
@implementation FBSDKSettings (PISDKSettings)
///FBSDKSettingssetAutoLogAppEventsEnabled退
+(void)setAutoLogAppEventsEnabled:(BOOL)is{
}
@end

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@@ -9,7 +9,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "椭圆 5@3x.png", "filename" : "1@3x (1).png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -9,7 +9,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "容器 8156@3x.png", "filename" : "椭圆 6@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "组 7122@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "1@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_flag_lv_1@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_flag_lv_2@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_flag_lv_3@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_flag_lv_4@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_flag_lv_5@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_flag_lv_6@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_head_lv_2@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_head_lv_3@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_head_lv_4@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_head_lv_5@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_head_lv_6@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_avatar_heart@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "容器 8171@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "框@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "切图 32@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "头像@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "爱心@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "3@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "3@3x-2.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "3@3x-3.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "3@3x-4.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "3@3x-5.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "切图 32@3x-2.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "切图 31@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_relationship_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_relationship_lv_0@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_relationship_lv_1@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_relationship_lv_2@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_relationship_lv_3@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_relationship_lv_4@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "cp_relationship_lv_5@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "切图 45@3x-3.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "切图 45@3x-2.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Some files were not shown because too many files have changed in this diff Show More