MangoFix 热修复引擎

iOS 应用修复
快人一步

PatchHub 基于 MangoFix 引擎,为 iOS 开发者提供一站式热修复解决方案。
无需 App Store 审核,无需用户更新,分钟级修复线上 Bug。

完全免费,零成本接入全部功能

400+ 服务应用
8000+ 已修复问题
99.9% 修复成功率
了解更多

一站式热修复管理

从应用创建到补丁下发,覆盖热修复全生命周期

免费使用,畅享全部功能

仪表盘

可视化数据总览,一站式展示应用、补丁、设备、日活等核心指标,支持趋势图和分布图分析。

  • 趋势图
  • ECharts
  • 数据总览

应用管理

一键创建和管理多个 iOS 应用,支持 Bundle ID 配置、独立 RSA/AES 密钥管理,批量导出应用数据。

  • Bundle ID 配置
  • 独立密钥
  • 批量导出

补丁管理

支持开发/生产双模式发布,AES+RSA 双重加密,一键撤回或重新发布,实时查看补丁激活状态和下发量。

  • AES+RSA
  • 双模式
  • 撤回重发

日活统计

近 7 日滚动窗口实时展示各应用日活用户数,直观掌握应用健康度和用户活跃趋势。

  • 7日窗口
  • 实时统计
  • 趋势追踪

在线日志

全量记录用户操作路径和页面详情,支持 IP 归属地追踪,按时间/应用筛选,精准定位问题场景。

  • 操作追踪
  • IP 归属地
  • 批量管理

帮助文档

从 CocoaPods 接入到补丁开发发布,完整文档 + 常用 OC 代码片段 + 转换工具,开箱即用。

  • 完整文档
  • 代码片段
  • 快速上手

4 步接入,即刻开启热修复

从零到发布补丁,只需几分钟

01

接入准备

在 Podfile 中添加 MangoFixUtil 依赖,运行 pod install 完成 SDK 集成。在 PatchHub 平台创建应用,获取 AppId。

Podfile
target 'YourApp' do
  pod 'MangoFixUtil', '~> 2.1.7'
end
02

SDK 初始化

在 AppDelegate 或合适时机调用初始化方法,传入在平台创建的 AppId 即可完成初始化。

Objective-C
// 获取单例对象
MangoFixUtil *util = [MangoFixUtil sharedUtil];
// 使用 AppId 初始化 SDK
[util startWithAppId:@"您的AppId"];
03

开发补丁

使用 Objective-C 编写修复代码,生成 .mg 格式补丁文件,本地验证通过后上传至平台。

Objective-C
// 示例:修复某页面标题显示错误
@implementation YourViewController (Fix)
- (void)viewDidLoad {
    [self viewDidLoad];
    self.title = @"正确的标题";
}
@end
04

发布补丁

登录 PatchHub 控制台,选择目标应用和版本,上传补丁文件,选择加密方式和发布规则,一键发布即可生效。

加密方式:AES 自动加密,安全无忧
发布规则:支持开发模式验证 + 生产模式全量
版本管理:自动创建/手动添加应用版本

开发者工具箱

热修复开发常用的 OC 代码片段,复制即用

可变数组操作
// 创建可变数组
NSMutableArray *array = [NSMutableArray array];
[array addObject:@"热修复"];

// 不可变数组
NSArray *arr = @[@"正确", @"高效", @"安全"];
NSString *first = arr[0]; // 取第一个元素
字典操作
// 创建字典
NSDictionary *dict = @{
    @"name": @"PatchHub",
    @"version": @"2.1.7"
};

// 取值
NSString *name = dict[@"name"];

// 可变字典
NSMutableDictionary *mDict = [NSMutableDictionary dictionary];
[mDict setObject:@"iOS" forKey:@"platform"];
延迟执行
// 延迟 0.3 秒执行
dispatch_after(
    dispatch_time(DISPATCH_TIME_NOW, 0.3 * NSEC_PER_SEC),
    dispatch_get_main_queue(),
    ^{
        // 在这里执行需要延迟的代码
        [self refreshUI];
    }
);
Masonry 自动布局
// Masonry 约束布局
UIEdgeInsets padding = UIEdgeInsetsMake(10, 10, 10, 10);
[view mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(self.view).with.offset(padding.top);
    make.left.equalTo(self.view).with.offset(padding.left);
    make.right.equalTo(self.view).with.offset(-padding.right);
    make.height.mas_equalTo(44);
}];
字符串格式化
// 数字格式化输出
double price = 99.956;
NSString *priceStr = [NSString stringWithFormat:@"%.02f", price];
// 输出: "99.96"

// 字符串拼接
NSString *fullName = [NSString stringWithFormat:@"%@-%@",
    firstName, lastName];
埋点日志
// 在控制器中埋点记录页面访问
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // 记录当前页面访问日志
    [[MangoFixUtil sharedUtil]
        recordUserLogWithObject:self
        msg:@"用户进入首页"];
}

获取帮助与支持

如有任何问题,欢迎通过以下方式联系我们

GitHub

查看源码、提交 Issue、参与贡献

电子邮箱

技术支持与合作咨询

管理控制台

登录平台管理应用和补丁

已复制到剪贴板 ✓