# 自营SDK游戏接入文档



## 版本记录

| 版本  |    时间    | 更新内容 | 编写人 |
| :---: | :--------: | -------- | ------ |
| 1.0.1 | 2018-09-20 | 编写     | 郭琳琳 |
| 1.1.0 | 2018-11-01 | 编写     | 郭琳琳 |



## 接入准备

#### 1. 开发包内容

​	1. LemonSDK

​	2. 头文件

​	3. Frameworks

\#1、\#2、\#3都需要添加到工程中去

​	4. Lemon iOS SDK Demo(Xcode 项目)

​	5. 开发者文档说明

​	包括登陆（facebook、Google、游客）、充值(IAP内购)、广告跟踪 等功能。

####2. 如何开始

 	1. 将LemonSDK加入在项目中
 	2. 修改Build Settings，添加LemonSDK头文件路径
 	3. 需要添加的系统库，具体请参照SDK Demo的库文件（<font color="red">注意Social.framework和AdSupport.framework必须设置为Optional</font>）



## 接口介绍

#### 1. 设置代理

```objective-c
[LMPlatform sharedInstance].lmdelegate = self;
```



#### 2. 初始化接口

```objective-c
- (void)init:(NSString*)location productID:(NSString*)productID gameCode:(NSString*)gameCode debug:(BOOL)debugState;
```

​	参数：

| 参数      | 说明                                                      |
| --------- | --------------------------------------------------------- |
| Location  | 区域 、sdk接入时提供                                      |
| productId | 游戏产品ID 、sdk接入时提供                                |
| gameCode  | 游戏代码,一般按照游戏_地区_支付渠道划分 例：rxjh_kokr_ios |
| Debug     | 是否开启debug模式，请设置为NO.                            |



#### 3. 登录接口

```objective-c
-(void)lemonLoginSystem;
```



#### 4. 用户中心展示

```objective-c
-(void)showUserCenter:(NSString *)version;
```

参数：

| 参数    | 说明       |
| ------- | ---------- |
| version | 游戏版本号 |



#### 5. 用户中心移除接口

```objective-c
-(void)removeUserCenter;
```



#### 6. 游戏登录前，展示logo动画接口

```objective-c
- (void)showLogoVideoWithPath:(NSString *)videoPath andDelegate:(id<LMDelegate>)lmdelegate;
```

参数：

| 参数       | 说明     |
| ---------- | -------- |
| videoPath  | 视频路径 |
| lmdelegate | 设置代理 |



#### 7. 用户协议接口

```objective-c
- (void)showLemonProtocolView:(BOOL)isHorizontal;
```

​	参数：

| 参数         | 说明   |
| ------------ | ------ |
| isHorizontal | 横竖屏 |

#### 

#### 8. 获取用户协议第四个按钮状态

```objective-c
-(BOOL)lemonSDKfourBtnStatus;
```



#### 9. 注销接口

```objective-c
- (void)cancellationOfTheCurrentAccount;
```



#### 10. 5rocks接口

```objective-c
-(void)LMFiveRocksEventCategory:(NSString *)eventCategory andEvent-Name:(NSString *)eventName andEventParameter1:(NSString *)eventParameter1 andEventParameter2:(NSString *)eventParameter2;
```

参数：

| 参数            | 说明                  |
| --------------- | --------------------- |
| eventCategory   | 分类名字、运营提供    |
| eventName       | 事件名字、运营提供    |
| eventParameter1 | 自定义参数、运营提供  |
| eventParameter2 | 自定义参数2、运营提供 |



#### 11. 充值接口

```objective-c
-(void)purchase:(int)serverId productId:(NSString *)productId payExt:(NSString *)payext withMask:(BOOL)withMask
```

参数：

| 参数      | 说明                                           |
| --------- | ---------------------------------------------- |
| serverId  | 服务器ID                                       |
| productId | 商品ID                                         |
| payext    | 透传参数，充值完成后会通过平台返回给游戏服务器 |
| withMask  | 是否开启遮罩                                   |



#### 11. 生命周期接口（<font color="red">必须调用</font>）

说明：SDK需要获取应用程序运行状态，以上接口需要在对应应用程序生命周期方法中进行调用<<font color="red">参考demo</font>>

```objective-c
/*!
 @abstract SDK获取游戏运行开始接口
 */
- (void)lemonSDKCatchApplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

/*!
 @abstract SDK获取游戏从后台进入前台接口
 */
- (void)lemonSDKCatchapplicationDidBecomeActive;

/*!
 @abstract SDK获取游戏进入后台接口
 */
- (void)lemonSDKCatchApplicationDidEnterBackground;

/*!
 @abstract SDK获取游戏被重新激活接口
 */
- (void)lemonSDKCatchApplicationWillEnterForeground;

/*!
 @abstract SDK获取游戏完全退出接口
 */
- (void)lemonSDKCatchApplicationWillTerminate;

/*!
 @abstract SDK获取游戏从其他应用程序打开接口 iOS 8.0
 */
- (BOOL)lemonSDKCatchHandleOpenUrl:(NSURL *)url application:(UIApplication *)application sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;

/*!
 @abstract SDK获取游戏从其他应用程序打开接口(ios 9.0以后)
 */
- (BOOL)lemonSDKCatchApplication:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options;

/*!
 @abstract Tapjoy推送
 
 @return 返回值为空
 */
- (void)lemonSDKCatchApplicationDidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;

/*!
 @abstract Tapjoy推送
 
 @return 返回值为空
 */
- (void)lemonSDKCatchApplicationDidReceiveRemoteNotification:(NSDictionary *)userInfo;
```



#### 13. 回调（LMDelegate协议）

​	13.1. 初始化回调

```objective-c
- (void)lemonSDKInitCallBack:(int)code msg:(NSString *)msg;
```

​	参数：

​		code：0表示初始化成功，其他为失败

​		msg：具体信息

​	13.2. 登录回调

```objective-c
- (void)loginPopupCallBack:(NSString *)loginSystemOperation Code:(int)code msg:(NSString *)msg entity:(LMEntity *)entity；
```

​	参数：

​		code：0表示登录成功，其他为失败

​		msg：平台返回具体消息

​		entity：

​			entity.userName：用户名

​			entity.userId：用户id

​			entity.userSign：用户token

​			entity.userType：用户登录平台

​	13.3. 用户同意协议回调

```objective-c
- (void)agreeProtocolCallBack;
```

​	13.4. 视频播放完成回调

```objective-c
- (void)videoFinishCallBack;
```

​        13.5.切换角色按钮回调

```objective-c
- (void)switchRolesCallBack;
```

​	13.6. 支付回调

```objective-c
- (void) purchaseCallBack:(int)code msg:(NSString*)msg
```

​	参数：

​		code：0表示支付成功，其他为平台失败

​		msg：平台返回具体消息

​	13.7. 支付失败回调

```objective-c
- (void)failedPurchaseCallBack:(int)code msg:(NSString*)msg;
```

​	参数：

​		code：苹果支付失败的code

​		msg：信息

​	13.8. 注销回调

```objective-c
- (void)cancellationOfTheCurrentAccountCallBack:(NSString *)msg;
```

​	13.9. 删除用户回调

```objective-c
-(void)deletePlatformCallBack:(int)code msg:(NSString *)msg;
```

​	13.10. 网络异常回调

```objective-c
- (void)networkRequestFailedCallBack;
```

 