//
//  InkePlatform.h
//  InkePlatform
//
//  Created by 北京蜜莱坞网络科技有限公司 on 16/6/12.
//  Copyright © 2016年 北京蜜莱坞网络科技有限公司. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <InkePlatform/InkePlatformConfig.h>
#import <UIKit/UIKit.h>

typedef void (^INKEPLATFORMGETHOTSBLOCK)(NSArray * INKE_NONNULL imageUrls);
typedef void (^INKEPLATFORMRESULTBLOCK)(BOOL success);

@interface InkePlatform : NSObject

#pragma mark - 启动

/**
 * 启动时调用
 *
 *  @param AppID     映客平台注册的AppID
 *  @param secretKey 映客平台注册的secretKey
 */
+ (void)registerApp:(NSString *INKE_NONNULL)appId
          secretKey:(NSString *INKE_NONNULL)secretKey;


#pragma mark - 登陆

/**
 *  用户登陆事件，建议写在目标接入平台的login的地方
 *
 *  @param userInfo 三方平台用户信息
 */
+ (void)login:(InkeUserInfo *INKE_NONNULL)userInfo
     complete:(INKEPLATFORMRESULTBLOCK INKE_NONNULL)complete;

/**
 *  用户退出登陆事件，登出接入平台时清空登陆状态
 */
+ (BOOL)logout;

/**
 *  用户修改信息
 *
 *  @param userInfo 修改的用户信息
 */
+ (void)updateUserInfo:(InkeUserInfo *INKE_NULLABLE)userInfo
              complete:(INKEPLATFORMRESULTBLOCK INKE_NONNULL)complete;

#pragma mark - 大厅

/**
 *  进入大厅
 *
 *  @param viewController 当前ViewController
 *  @param userInfo       三方平台用户信息 可为空，
 */
+ (void)enterHallWithSourceController:(UIViewController *INKE_NONNULL)viewController
                             userInfo:(InkeUserInfo *INKE_NULLABLE)userInfo;

#pragma mark - 直播\录播间

/**
 *  进入直播间
 *
 *  @param liveId           直播间id
 *  @param viewController   当前ViewController
 *  @param userInfo         三方平台用户信息 可为空，
 *  @param isRecord         是否录播
 */
+ (void)enterLiveRoomWithSourceController:(UIViewController *INKE_NONNULL)viewController
                                   liveId:(NSString *INKE_NULLABLE)liveId
                                 userInfo:(InkeUserInfo *INKE_NULLABLE)userInfo
                                 isRecord:(BOOL)isRecord;

/**
 *  开始直播
 *
 *  @param viewController   当前ViewController
 *  @param userInfo         三方平台用户信息 不可为空
 */
+ (void)startLiveWithSourceController:(UIViewController *INKE_NONNULL)viewController
                             userInfo:(InkeUserInfo *INKE_NONNULL)userInfo;


#pragma mark - 绑定手机号
/**
 *  进入绑定手机号页面
 *
 *  @param viewController 当前ViewController
 *
 *  @return YES 已登录 NO 未登录, 需要登录
 */
+ (BOOL)enterBindPhoneVCWithSourceController:(UIViewController *INKE_NONNULL)viewController;

#pragma mark - 聊天页面
/**
 *  进入聊天信息页面
 *
 *  @param viewController 当前ViewController
 *
 *  @return YES 已登录 NO 未登录, 需要登录
 */
+ (BOOL)gotoMessageCenterWithSourceController:(UIViewController *INKE_NONNULL)viewController;

#pragma mark - 个人主页

/**
 *  进入其他人的个人主页
 *
 *  @param viewController 当前ViewController
 *  @param uid            映客Uid
 *
 *  @return 是否成功
 */
+ (void)gotoOtherUserHomeWithSourceController:(UIViewController *INKE_NONNULL)viewController userUid:(NSString *INKE_NONNULL)uid;

#pragma mark - 推送

/**
 *  处理推送信息
 *
 *  @param pushUserInfo didReceiveRemoteNotification的信息原文
 */
+ (void)handlePush:(NSDictionary *INKE_NONNULL)pushInfo;

#pragma mark - 支付

+ (void)handlePayResult:(InkeOrderResult *INKE_NONNULL)orderResult;

#pragma mark - 支付宝实名认证

+ (void)handleAliPayAuth:(NSDictionary *INKE_NONNULL)resultDic;


#pragma mark - 配置
/**
 *  设置sdk内部保存配置信息的目录名，默认为"InkePlatform"，目录在 Library
 *  文件夹下创建
 *
 *  @param dirName 目录名
 */
+ (void)setConfigDirectoryName:(NSString *INKE_NONNULL)dirName;

/**
 *  清理sdk内部的缓存数据
 */
+ (void)clearCache;

/**
 *  提前加载资源
 */
+ (void)preloadInkePlatformResource;

/**
 *  设置代理
 *
 *  @param inkeDelegate
 */
+ (void)setInkeDelegate:(id<InkePlatformDelegate> INKE_NONNULL)inkeDelegate;


#pragma mark - 状态
/**
 *  当前正在直播的主播头像url 数组
 *
 *  @param size     图片size
 *  @param complete 回调 url数组
 */
+ (void)getInkePlatformLivingHosts:(CGSize)size
                          complete:(INKEPLATFORMGETHOTSBLOCK INKE_NONNULL)complete;


/**
 *  当前页面在不在InkePlatform
 */
+ (BOOL)inPlatform;

/**
 *  获取SDK的版本号
 */
+ (NSString *INKE_NONNULL)SDKVersion;

@end
