BoneMobile容器SDK为可选模块,提供加载插件的功能。如果您需要开发或者使用插件,则需要在App中集成BoneMobile容器SDK。

依赖 SDK 概述
日志 基础依赖SDK,提供客户端统一日志打印,日志等级控制,分模块日志隔离等能力
API通道 提供IoT业务协议封装的API网关HTTPS请求能力,和集成无线保镖SDK进行请求报文安全加签的能力
MJRefresh github上开源的下拉刷新控件,版本:3.1.15
ZipArchive github上开源的zip解压库,版本:1.4.0
说明 Google Play已于2019年8月1日停掉尚未支持64位体系的App,如果您App要在海外Google Play应用商店上架,且用到了BoneKit SDK,那需要尽快升级,以免无法上架。后续如果推出新插件或老插件升级,仅针对已升级到v0.59 BoneKit SDK的自有App。

初始化

初始化前需确保已集成安全图片,初始化的操作请参见SDK初始化

切换语言(国际化)

为了满足国际化需求,自有App可以支持多种语言。如果您需要切换语言,请参见国际站开发实践专题

使用方式

  • 通过路由打开UIViewController
    #import <IMSRouter/IMSRouter.h>
    
    NSURL *url = [NSURL URLWithString:@"link://router/{routerName}"];
    NSDictionary *para = @{@"key": @"value"};
    [[IMSRouterService sharedService] openURL:url
                                      options:para
                            completionHandler:^(BOOL success) {
                                    if (success) {
                                        NSLog(@"插件打开成功");
                                    } else {
                                        NSLog(@"插件打开失败");
                                    }
                                }];
  • 打开插件面板并接收返回值

    参见调用配网插件,并接受配网结果的示例。

    #import <IMSRouter/IMSRouter.h>
    
    NSURL *url = [NSURL URLWithString:@"link://router/connectConfig"];
    NSDictionary *para = @{AKRouterCompletionHandlerKey: ^(NSError *error, NSDictionary *result) {
                // result handler
            }};
    [[IMSRouterService sharedService] openURL:url
                                      options:para
                            completionHandler:^(BOOL success) {
                                    if (success) {
                                        NSLog(@"插件打开成功");
                                    } else {
                                        NSLog(@"插件打开失败");
                                    }
                                }];
  • 直接打开UIViewController
    #import <IMSBoneKit/BoneRCTViewController.h>
    
    NSURL *url = [NSURL URLWithString:@"{插件URL地址}"];
    NSDictionary *para = @{@"key": @"value"};
    BoneRCTViewController *controller = [BoneRCTViewController new];
    [controller openUrl:newURL props:params];
    [self.navigationController pushViewController:controller animated:YES];
  • 本地Debug方式打开UIViewController

    调试时需使用Debug的ReactNative库,这样才会出现调试菜单,请修改Podfile文件如下。

    #pod 'AKReactNative', '0.41.2'
    pod 'AKReactNative', '0.41.2-debug' #这是Debug版本,请勿使用该版本发上appStore 

    示例代码如下。

    __weak typeof(self) wSelf = self;
    NSURLSession *session = [NSURLSession sharedSession];
    NSString *host = @"/*启用Bone服务的电脑IP*/";
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@:8081/boneDebugUrl?platform=ios&ip=%@", host, host]];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
    {
        dispatch_async(dispatch_get_main_queue(), ^{
            if (!error) {
                NSDictionary *responseJSON = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
                int responseCode = [[responseJSON objectForKey:@"code"] intValue];
                if (responseCode == 200) {
                    NSDictionary *responseData= [responseJSON objectForKey:@"data"];
                    NSString *urlString = responseData[@"url"];
                    BoneRCTViewController *controller = [BoneRCTViewController new];
                    [controller openUrl:[NSURL URLWithString:urlString] props:[responseData mutableCopy]];
                    controller.hidesBottomBarWhenPushed = YES;
                    [self.navigationController pushViewController:controller animated:YES];
                }
            }
        });
    }];
    [task resume];

集成账号能力

BoneKit支持账号插件,可以支持自定义账号接入,可以自行实现IMSAccountProtocol,IMSAccountUIProtocol协议,然后设置IMSAccountService的sessionProvider,accountProvider 来完成。如账号使用OpenAccount对接的话,可以参考账号Demo下IMSOpenAccount的实现。

代码示例如下。

// 引入头文件
#import <IMSAccount/IMSAccountService.h>

IMSOpenAccount *openAccount = [IMSOpenAccount sharedInstance];
[IMSAccountService sharedService].sessionProvider = openAccount;
[IMSAccountService sharedService].accountProvider = openAccount;

Native和JS共享配置

某些业务场景下,Native端和JS端可能需要共享一些配置。为了满足这个需求,我们开辟了一个Native和JS都可以访问的配置区。

  • JS端访问配置区,请参见环境配置信息
  • iOS端访问配置区,参考如下代码。
    // 设置
    [[IMSBoneConfiguration sharedInstance] set:@"region" value:@"china"];
    
    // 获取
    [[IMSBoneConfiguration sharedInstance] get:@"region"];