> 注:本文为iOS终端EUSDK的新手使用教程,只涉及教授SDK的使用方法,默认读者已经熟悉XCode开发工具的基本使用方法,以及具有一定的编程知识基础等。
## <br/>**1. 关于iOS版接入**
由于CP方的游戏资源不能对外公开,iOS版的游戏接入,一般由EUSDK提供已对接好的指定渠道SDK资源包,由CP方接入后,直接打渠道包。
在CP方与EUSDK技术对接之前,请先联系商务,洽谈合作事宜。
## <br/>**2. 使用步骤**
##### **2.1 环境**
SDK支持iOS 9.0及以上操作系统,支持armv7、arm64处理器。
##### **2.2 集成**
添加SDK依赖库
* 将 Demo 中 SDK 文件夹中的库全部导入工程
添加系统依赖包
```ObjectiveC
CoreTelephony.framework
CoreGraphics.framework
SystemConfiguration.framework
CFNetwork.framework
JavaScriptCore.framework
CoreMotion.framework
UMPush.framework
UMCommon.framework
UserNotifications.framework
libc++.1.tbd
libz.1.2.5.tbd
libsqlite3.0.tbd
```
在要使用到融合SDK API的地方导入头文件
```ObjectiveC
#import <EUSDKCore/EUSDKCore.h>
```
##### **2.3 Info.plist配置**
```ObjectiveC
<key>EUSDK</key>
<dict>
<key>Channel</key>
<string>9016</string>
<key>ChannelName</key>
<string>yangcong</string>
<key>EUAppId</key>
<string>112</string>
<key>EUAppKey</key>
<string>a6ef176b367945b581c00f2808020e1f</string>
<key>EUServerUrl</key>
<string>https://api.eusdk.com</string>
<key>EUTimer</key>
<true/>
<key>EUPush</key>
<false/>
<key>EUPushKey</key>
<string>5c887e403fc1956a1a000ca6</string>
<key>Plugins</key>
<array>
<dict>
<key>CAppKey</key><string>7Qh3bl3WfeTjM5qt2uYTl8Dps2meNFqdtWV6UHE71HoM4qNWOwLlNOmYcRA8YN8y</string>
<key>CCPId</key>
<string>0b90a592-2cf7-4f39-97df-e017493e369d</string>
<key>CGameId</key>
<string>3814a711-3ac8-4d7c-a9e3-66251aad1d59</string>
<key>CYangCongId</key>
<string>88888888-0000-0000-0001-000000000002</string>
<key>CName</key>
<string>yangcong</string>
<key>CVersion</key>
<string>4.4.1</string>
</dict>
</array>
以上参数以我司提供的参数文档为准,没有提供的参数保持不变
EUTimer参数是上报用户在线情况的开关,默认开启,配置为YES,如需关闭,请配置成NO。
EUPush是友盟推送功能开关,支持通知栏消息与应用内消息
如果需要开启,将EUPush值配置为YES,配置EUPushKey;
EUPush为NO,则无须EUPushKey配置。
以上参数格式可以参考demo
```
##### **2.4 添加URL Types**
```ObjectiveC
CFBundleURLSchemes值与bundleId一致
```
##### **2.5 http设置**
```ObjectiveC
NSAppTransportSecurity中NSAllowsArbitraryLoads设置成YES
```
##### **2.6 build setting设置**
```ObjectiveC
other Linker Flags添加-ObjC
Enable Bitcode设置NO
```
##### **2.7 添加白名单**
```ObjectiveC
uppayx1, uppayx2, uppayx3, alipay, uppaysdk, uppaywallet, safepay, cydia, alipayauth, weixin, wechat
```
##### **2.8 打开相册和相机权限**
```ObjectiveC
Privacy - Photo Library Usage Description
App需要您的同意访问相册
Privacy - Camera Usage Description
App需要您的同意才能使用照相机
```
##### **2.9 打开后台通知和推送通知**
```ObjectiveC
如果需要打开推送功能,配置Xcode
选择target->Capabilities
1,打开Background Modes,勾选Remote notifications
2,打开Push Notifications
```
##### **2.9.1 build版本设置**
```ObjectiveC
target -> General -> Identity中设置build版本,必须是递增纯数字
```
## <br/>**3.接口API说明**
> API中用到的全局定义
>
```ObjectiveC
//Session失效通知
kEUSessionExpiredNotificationName;
//各种操作回调
EUCallback --> void(^)(NSDictionary *userInfo,NSError *error);
//获取EUSDK实例
[EUSDK sharedInstance]
```
##### **3.1 (必接)应用生命周期**
EUSDK 默认实现了UIApplicationDelegate的所有方法,请在您的应用内AppDelegate各个UIApplicationDelegate方法里调用EUSDK的UIApplicationDelegate方法,具体可以参考demo
```ObjectiveC
//AppDelegate.h
//eg:
- (BOOL)application:(UIApplication *)application
handleOpenURL:(NSURL *)url{
return [[EUSDK sharedInstance] application:application
handleOpenURL:url];
}
```
备注:如果需要打开推送功能,请在您的应用内AppDelegate各个UNUserNotificationCenterDelegate方法里调用EUSDK的UNUserNotificationCenterDelegate方法,具体可以参考demo
##### <br>**3.2 (必接)登录/登出**
```ObjectiveC
//EUSDK.h
//(必接*)Session失效通知, 收到通知时退出游戏
FOUNDATION_EXPORT NSString *const kEUSessionExpiredNotificationName;
//(*必接)登录
- (void)login:(EUCallback)completion;
//(*必接)退出
- (void)logout:(EUCallback)completion;
//切换账号,返回NO表示渠道不支持
- (BOOL)switchAccount;
```
##### **3.3 闪屏**
EUSDK会根据您要对接的渠道,提供能否显示闪屏功能,请根据API返回值自行判断处理渠道是否支持闪屏
```ObjectiveC
//EUSDK.h
//展示闪屏,返回NO表示渠道不支持
- (BOOL)showSplash;
//隐藏闪屏,,返回NO表示渠道不支持
- (BOOL)dismissSplash;
```
**备注:App Store版本不需要接入闪屏;越狱版才需要接入**
##### **3.4 (必接)游戏数据同步**
在应用各个时机调用些API,同步上送各种类型数据,数据类型如下:
| EUExtensionDataType | 数据类型 |
| --- | --- |
| EUExtensionDataType_CREATEROLE | 创建角色 |
| EUExtensionDataType_ENTERGAME | 进入游戏 |
| EUExtensionDataType_LEVELUP | 升级 |
| EUExtensionDataType_EXITGAME | 退出游戏 |
```ObjectiveC
//EUSDK.h
- (void)syncData:(EUExtensionData *)data
completion:(void(^)(NSDictionary *userInfo,NSError *error))completion;
```
##### **参数说明**
- **data**
`EUExtensionData` 实例对象, 需要同步的数据,请根据要同步的数据类型,设置`dataType`,具体参数请对照`EUExtensionData.h` ,请提供尽可能多的参数以适配多渠道
- **completion**
操作完成回调,可以在此回调中做一些处理,比如隐藏进度条
##### **3.5 显示个人中心**
当此API返回NO时,表示当前接入的渠道不支持此功能,请自行处理业务逻辑
```ObjectiveC
//EUSDK.h
//显示个人中心,返回NO表示渠道不支持
- (BOOL)showAccountCenter;
```
##### **3.5 (必接)支付**
在调用支付时,请确保完成了3.1的接入。
由于为了规避AppStore的一些审核机制,此API使用了`xxx`这样的命名
```ObjectiveC
//EUSDK.h
//支付,网页支付时,没有回调
- (void)xxx:(EUProductInfo *)productInfo
completion:(EUCallback)completion;
```
##### **参数说明**
- **productInfo**
支付信息`EUProductInfo` 实例对象,具体参数请对照`EUProductInfo.h` ,请提供尽可能多的参数以适配多渠道
**备注:支付金额至少1元**
<br>
- **completion**
支付完成回调,可以在此回调中做一些处理,比如隐藏进度条等; 当客户端没有安装支付宝时,进入H5页面支付时,不会收到此回调; 微信支付也不会收到此回调;请以服务端结果为准。
_ _ _
至此,你已经能使用EUSDK的API内容了。如果想更详细了解每个API的用法,请阅读**SDK Demo**源码。