> 注:本文為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
WebKit.framework
CFNetwork.framework
ImageIO.framework
SystemConfiguration.framework
Security.framework
AVFoundation.framework
CoreMotion.framework
CoreTelephony.framework
libsqlite3.tbd
libz.tbd
libc++.tbd
UMPush.framework
UMCommon.framework
UserNotifications.framework```
在要使用到融合SDK API的地方導入頭文件
```ObjectiveC
#import <EUSDKCore/EUSDKCore.h>
```
##### **2.3 Info.plist配置**
```ObjectiveC
<key>EUSDK</key>
<dict>
<key>Channel</key>
<string>8909</string>
<key>ChannelName</key>
<string>MengChuang</string>
<key>EUAppId</key>
<string>51</string>
<key>EUAppKey</key>
<string>53e7003adbb14457a33c3c5995ebe9df</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>CGameAppId</key>
<string>5C29B2E3D74177F1B</string>
<key>CGameId</key>
<string>92</string>
<key>CGameKey</key>
<string>Ii8gTF9RX1lQKVVUK1FMXFo=</string>
<key>CGameName</key>
<string>雷霆烈焰</string>
<key>CName</key>
<string>MengChuang</string>
<key>CPromoteAccount</key>
<string>自然注冊</string>
<key>CPromoteId</key>
<string>0</string>
<key>CRequestUrl</key>
<string>http://c.wan545.com</string>
<key>CScheme</key>
<string>SDKTest</string>
<key>CVersion</key>
<string>4.0.0</string>
</dict>
</array>
</dict>
以上參數以我司提供的參數文檔為準,沒有提供的參數保持不變
EUTimer參數是上報用戶在線情況的開關,默認開啟,配置為YES,如需關閉,請配置成NO。
EUPush是友盟推送功能開關,支持通知欄消息與應用內消息
如果需要開啟,將EUPush值配置為YES,配置EUPushKey;
EUPush為NO,則無須EUPushKey配置。
以上參數格式可以參考demo
```
##### **2.4 添加URL Types**
```ObjectiveC
weixin:wx91386443e1dfb650
com.weibo:wb2976302597
tencent:tencent1106031916
SDKTest:SDKTest
```
##### **2.5 http設置**
```ObjectiveC
NSAppTransportSecurity中NSAllowsArbitraryLoads設置成YES
```
##### **2.6 build setting設置**
```ObjectiveC
other Linker Flags添加-ObjC
Enable Bitcode設置NO
```
##### **2.7 添加白名單**
```ObjectiveC
wechat, weixin, sinaweibo, weibosdk, sinaweibohd, weibosdk2.5, mqqOpensdkSSoLogin, mqqopensdkapiV2, mqqopensdkapiV3, wtloginmqq2, mqq, mqqapi
```
##### **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**源碼。