BoneMobile容器SDK为可选模块,提供加载插件的功能。如果您需要开发或者使用插件,则需要在App中集成BoneMobile容器SDK。
依赖 SDK | 概述 |
日志 | 基础依赖SDK,提供客户端统一日志打印,日志等级控制,分模块日志隔离等能力。 |
API通道 | 提供IoT业务协议封装的API网关HTTPS请求能力。 |
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初始化。
使用方式
通过路由打开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"];