# 3、IOS-SDK接入文档

# 1. 接⼊准备

接⼊SDK前 请您按照要求在媒体后台获取appKey、secretKey。

# 2.接⼊SDK

# 2.1 将IBXSDK.framework和IBXSDK.bundle拖入工程(SDK不支持模拟器,最低支持9.0以上)
# 注意:准备从1.0.0升级的用户,需要先从工程内删除1.0.1的IBXSDK.framework。再将IBXSDK.framework和IBXSDK.bundle拖入工程

2.1.1 配置Info.plist

添加http网络访问权限:

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

添加相册访问权限(应用赚模式需要从相册中选择图片):

	<key>NSCameraUsageDescription</key>
	<string>相机功能</string>

2.2.2 配置Target:

打开Target > Build Settings 并搜索OTHER_LDFLAGS

在Other Linker Flags选项中添加

$(inherited)
-ObjC
-all_load
# 2.2 SDK配置
#import <IBXSDK/IBXSDK.h>

[IBXSDKConfig setupAppKey:@"xxx" 
 secretKey:@"xxx" targetId:@"13457" notifyUrl:@"http://www.xxxx.com/xxxx/xxxx.php"];

参数说明:appKey、secretKey由爱变现平台申请生成。targetId为用户ID、notifyUrl为奖励发放回调地址(没有可以传nil)。

注意:demo中不默认提供演示的appKey、secretKey。请自行修改。

# 3. 接口使用

# 加载回调如下delegate方法
/**
 加载成功
 */
- (void)ibx_didLoad;

/**
加载失败
*/
- (void)ibx_didLoadFail:(NSError *)error;

/**
关闭
*/
- (void)ibx_didClose;

/**
 事件触发
 */
- (void)ibx_didTriggerEvent:(IBXSDKEvent *)event;

# IBXSDKEvent说明:
# 事件类型:
@property (nonatomic,assign,readonly) IBXSDKEventType eventType; // 事件类型
typedef NS_ENUM(NSUInteger, IBXSDKEventType){
    IBXSDKEventType_OPENURL = 0, // 打开外部链接
    IBXSDKEventType_OPENWXAPPLET,// 打开微信小程序
};
# 事件参数获取:
// IBXSDKEventType_OPENURL 参数获取
@property (nonatomic,copy,readonly) NSString *urlString; // 外链url

// IBXSDKEventType_OPENWXAPPLET 参数获取
@property (nonatomic,copy,readonly) NSString *appletID; // 小程序ID
@property (nonatomic,copy,readonly) NSString *appletPath; // 小程序path
# 小程序特别说明: IBXSDK内部未集成微信SDK,需要自行集成。IBXSDK会在回调方法- (void)ibx_didTriggerEvent:(IBXSDKEvent *)event;中反馈小程序的参数
- (void)ibx_didTriggerEvent:(IBXSDKEvent *)event{
    NSLog(@"%@",NSStringFromSelector(_cmd));

    switch (event.eventType) {
        case IBXSDKEventType_OPENURL:{
            // 打开外链
            break;
        }
            
            
        case IBXSDKEventType_OPENWXAPPLET:{
            // 打开微信小程序(IBXSDK内部不会集成微信SDK,需要自行集成)
            // 小程序参数获取
            NSString *appletID = event.appletID; // 小程序ID
            NSString *appletPath = event.appletPath; // 小程序子路径

            // 以下参考微信SDK方式打开微信小程序
            /*
            if (![WXApi isWXAppInstalled]) { return; }
            // 拉起小程序
            WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
            launchMiniProgramReq.userName = appletID;  //拉起的小程序的username-原始ID
            launchMiniProgramReq.path = appletPath;    //拉起小程序页面的可带参路径,不填默认拉起小程序首页
            launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease; //拉起小程序的类型
            [WXApi sendReq:launchMiniProgramReq];
            */
            break;
        }
    }
    
}

# 4.接入方式

接入方式灵活,一般分为三种:1.SDK接入,2.H5接入,3.主页列表自定义+详情页

功能模式分两种:默认、应用赚

# 1.SDK接入:

说明:通过推出全屏新页面的方式,展示爱变现页面。

功能模式-默认:

[IBXSDK loadWithRootViewController:self delegate:self];

功能模式-应用赚:

[IBXSDK loadWithHighRewardRootViewController:self delegate:self];
# 2.H5接入:

说明:通过在屏幕上自定义一块区域,并在此区域展示爱变现页面。用户可以自定义头部/底部,仅在内容上展示爱变现页面

分三步进行。一、通过SDK请求url地址,二、通过WKWebView加载url地址,三、处理HTML回调

一、通过SDK请求url地址:

​ 功能模式-默认:

        [IBXSDK requestHomeUrl:^(NSString *urlString, NSError *error) {
            if (error != nil){
                [IBXSDKHelper alertError:error fromViewController:weak_self];
                return;
            }
            // 已接收urlString
        }];

​ 功能模式-应用赚:

        [IBXSDK requestHighRewardHomeUrl:^(NSString *urlString, NSError *error) {
            if (error != nil){
                [IBXSDKHelper alertError:error fromViewController:weak_self];
                return;
            }
            
            // 已接收urlString
        }];

二、通过WKWebView加载url地址:

// 导入头文件
#import <IBXSDK/IBXSDK.h>
#import <IBXSDK/IBXSDKWebContentController.h>

// 加载childViewController 并设置代理
- (void)setupUI{
    if (_ibx_contentController){
        return;
    }
WKUserContentController *userContentController = [[WKUserContentController alloc] init];
[userContentController addScriptMessageHandler:self name:@"ibx_close"];
  [userContentController addScriptMessageHandler:self name:@"ibx_openUrl"];

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.userContentController = userContentController;
WKWebView *wkWebView = [[WKWebView alloc] initWithFrame:UIScreen.mainScreen.bounds configuration:configuration];
  // 加载第一步获取的urlString
      NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:self.urlString]];
    [self.wkWebView loadRequest:req];
}

三、处理HTML回调:

// WKScriptMessageHandler
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message{
  if ( [message.name isEqualToString:@"ibx_openUrl"]){ // 打开外部地址
        // 解析出url
        NSDictionary *body = message.body;
        NSString *urlString = (NSString *)body[@"body"];
        
        // 获取到url,并进行完全自定义的处理
        // 例如直接通过Safari打开
        NSURL *theUrl = [NSURL URLWithString:urlString];
        if ([UIApplication.sharedApplication canOpenURL:theUrl]){
            [UIApplication.sharedApplication openURL:theUrl];
        }
        
    }else if ( [message.name isEqualToString:@"ibx_close"]){

 // 在此处关闭
 [self dismissViewControllerAnimated:YES completion:nil];
}

# 3.主页列表自定义+详情页:

说明:自定义主页列表

分两部步进行。1.请求首页数据并自定义UI,2.点击UI时进入游戏详情

​ 1.请求首页数据并自定义UI:

​ 1).请求token

​ 接口:https://api.aibianxian.net/igame/api/v1.2/cplApi/access,

​ 参考demo中的IBXModeCustomTokenUtil.m

​ 2).请求游戏列表

​ 接口:https://api.aibianxian.net/igame/api/v1.0/cplApi/listGameByTargetId

​ 参考demo中的IBXModeCustomViewModel.m

​ 3).自定义UI

http://www.aibianxian.net/igame-guide/api-list.html#ios

​ 注意:完整接口文档地址http://www.aibianxian.net/igame-guide/api-list.html#ios

​ 2.点击UI时进入游戏详情:

​ 一、打开详情页url地址

​ 二、处理HTML回调。

​ 请参考接入方式2中的二、三步