BuglyDevTeam / BuglyHotfix-iOS

iOS library for Bugly App Hot fix Service
7 stars 0 forks source link

BuglyHotfix iOS SDK 使用指南

[TOC]

BuglyHotfix 基于 JSPatch 封装,完全兼容 JSPatch 编写的脚本文件。

SDK 集成

BuglyHotfix 提供两种集成方式供开发者选择:

BuglyHotfix iOS SDK 最低兼容 iOS 系统版本 iOS 7.0

通过 CocoaPods 集成

在工程的Podfile里面添加以下代码:

pod 'BuglyHotfix'

保存并执行pod install,然后用后缀为.xcworkspace的文件打开工程。

注意:

命令行下执行pod search BuglyHotfix,如无法搜索到或搜索到的BuglyHotfix不是最新的版本,请先执行pod repo update更新本地的 spec-repositories 。

关于CocoaPods的更多信息请查看 CocoaPods官方网站

手动集成

初始化SDK

导入头文件

在工程的AppDelegate.m文件导入头文件

#import <BuglyHotfix/Bugly.h>

如果是Swift工程,请在对应bridging-header.h中导入

初始化 BuglyHotfix

在工程AppDelegate.mapplication:didFinishLaunchingWithOptions:方法中初始化BuglyHotfix,示例代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [Bugly startWithAppId:@"此处替换为你的AppId"
#ifdef DEBUG
        developmentDevice:YES
#endif
                   config:nil];
    return YES;
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
   #if DEBUG
   Bugly.start(withAppId: "900001055",
               developmentDevice: true,
               config: nil)
   #else
   Bugly.start(withAppId: "900001055",
               developmentDevice: false,
               config: nil)
   #endif
   return true
}

发布补丁

一. 本地测试

补丁编写规则参见: JSPatch

    BuglyConfig *config = [[BuglyConfig alloc] init];
    config.hotfixDebugMode = YES;
    [Bugly startWithAppId:appId
#ifdef DEBUG
        developmentDevice:YES
#endif
                   config:config];

二. 开发环境测试

弹出新建补丁窗口

选择目标版本(即应用版本)及开发设备,其它按默认值进行下发。

注意:这里的版本列表只显示集成了 BuglyHotfix SDK 的应用版本

    BuglyConfig *config = [[BuglyConfig alloc] init];
    config.hotfixDebugMode = NO;
    config.debugMode = YES;
    [Bugly startWithAppId:kBuglyAppId
#ifdef DEBUG
        developmentDevice:YES
#endif
                   config:config];
[Bugly][Info] Hotfix: evaluated script [version: 1]

三. 正式发布

点击 Bugly 平台上对应补丁的编辑按钮,按需选择全量设备自定义规则进行正式下发。


如何使用 JSPatch 扩展

把所需的 JSPatch 扩展导入到工程后,修改扩展的.h头文件

#import "JPEngine.h"` 

更改为

#import <BuglyHotfix/JPEngine.h>

JPDispatch.h

#import <Foundation/Foundation.h>
#import "JPEngine.h"

@interface JPDispatch : JPExtension

@end

修改为

#import <Foundation/Foundation.h>
#import <BuglyHotfix/JPEngine.h>

@interface JPDispatch : JPExtension

@end

常见问题

为了能保持原编写的 JSPatch 脚本的兼容性,Bugly 没有改变原有符号,所以遇到冲突情况,请移除项目中已有的 JSPatch 文件。

请把 mian.js 压缩成 zip 再进行上传。

目标版本列表只显示集成了 BuglyHotfix SDK 的应用版本,所以如果没有出现请尝试集成SDK后先运行一下App,然后再刷新页面尝试上传。

可以通过下述 SDK 提供的 API 发起查询补丁更新请求

+ (void)hotfixCheckUpdate;

可以通过下述 SDK 提供的 API 查询当前生效的补丁信息,如打开了测试本地 js,则无相关信息

+ (NSDictionary *)currentHotfixPatchInfo;

返回的结构如下:

 {
 @"patchVersion":"补丁版本号",
 @"patchDesc":"补丁备注信息",
 @"patchUpdateTime":"补丁更新时间"
 }

为了保障补丁下载速度,所有的补丁都是通过 CDN 下发,所以在 iOS 9 以上需要配置允许使用 HTTP 协议通讯,步骤如下:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>