米洛SDK iOS SDK 对接文档

本文档用于iOS SDK对接米洛SDK平台,包含完整的接口说明、代码示例和注意事项。

2026年5月 | WANCMS开发组

开发包说明

核心库

MYWanSdk.framework - 基础库

接入流程

一般流程

获取配置参数:

  • mlsdk_gameId - 游戏id
  • mlsdk_payKey - 充值回调key
  • mlsdk_appKey - 登录和充值校验key

开发环境配置

1

添加Framework

MYWanSdk.framework添加到工程中,并选择相应的target

2

设置Embed & Sign

设置MYWanSdk.framework的状态为 Embed && Sign

3

配置架构

在Build Settings中将Architectures设置为 armv7+arm64,项目本身需要支持arm64

4

配置屏幕方向

Device Orientation中选中游戏兼容方向,不要同时勾选横竖屏

5

配置HTTP访问

在info.plist中添加允许http访问

6

配置权限

在info.plist中添加允许获取设备码权限

初始化(必接)

获取实例

项目 说明
MYWanSDK
函数 + (MYWanSDK *)defaultInstance
功能 获取MYWanSDK 实例

初始化MYWanSDK

项目 说明
MYWanSDK
函数 - (int)initWithConfig:(MYWanSDKInitConfig *)config application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
功能 使用mlsdk_gameId初始化sdk,参数由MYWan平台分配

参数说明

  • config:封装了 mlsdk_gameId
  • application: 应用的application, 调用函数的参数原封不动的传入即可
  • launchOptions: 应用的launchOptions, 调用函数的参数原封不动的传入即可

重要说明

该接口需要在应用加载完成回调中调用,即(建议在初始化系统window之后再调用SDK初始化)

代码示例

Objective-C
// 获取实例
MYWanSDK *sdk = [MYWanSDK defaultInstance];

// 初始化配置
MYWanSDKInitConfig *config = [[MYWanSDKInitConfig alloc] init];
config.gameid = @"YOUR_GAME_ID";

// 初始化SDK
[sdk initWithConfig:config 
        application:application 
didFinishLaunchingWithOptions:launchOptions];

用户接口

登录接口(必接)

项目 说明
类名 MYWanSDK
函数 - (int)login;
功能 打开登录界面,进入用户登陆流程

收到登录成功通知kMYWanSDKNotiLogin后,取得返回值userInfo,取得用户username、token和logintime,也可直接使用接口获取username、token和logintime,参考demo,随带Demo中有相关实现。username是sdk提供的用户唯一标识。

注销接口

项目 说明
类名 MYWanSDK
函数 - (int)logout;
功能 主动注销当前用户

注意

调用该接口将引起MYWanSDK发出一个注销通知kMYWanSDKNotiLogout,游戏开发者收到注销通知后走下一步流程,比如回到游戏登录界面,再调用登录。

用户唯一标识username

项目 说明
类名 MYWanSDK
函数 - (NSString *)username;
功能 获取最后登录用户username,通常在收到登录通知回调中调用
返回值 最后登录用户的username,可能为空,在没有收到登录通知时可能已经有值,不能作为判断当前是否有用户登录游戏的依据

用户token

项目 说明
类名 MYWanSDK
函数 - (NSString *)token;
功能 获取最后一次登录用户的token,用于到服务器验证用户
返回值 最后一次登录用户的token

用户logintime

项目 说明
类名 MYWanSDK
函数 - (NSString *)logintime;
功能 获取最后一次登录用户的logintime,用于到服务器验证用户
返回值 最后一次登录用户的logintime

上报角色信息(必接)

项目 说明
类名 MYWanSDK
函数 - (void)updateRoleInfoWith:(MYWanSDKGameRoleInfo *)info isCreate:(BOOL)isCreate;
功能 向MYWanSDK提交角色信息

参数说明:

  • info 角色信息对象,参考类MYWanSDKGameRoleInfo
  • isCreate 表示是否为刚刚创建的角色

必填字段:

  • serverId - 服务器id,必填
  • serverName - 服务器名称,必填
  • gameRoleName - 角色名,必填
  • gameRoleID - 角色id,必填
  • gameUserLevel - 玩家等级,必填,没有传0
  • fightPower - 玩家战力,必填,没有传0
  • sign - 加密sign,必传

sign加密规则

对登录返回的用户名、角色id、服务器id、角色等级、战力、对接参数mlsdk_appKey 进行md5加密:

md5($username.'#'.$roleid.'#'.$serverid.'#'.$rolelevel.'#'.$rolepower.'#'.$appkey)

Demo有实例代码,建议在服务端加密

建议

每次登录进入游戏后先调用一次

充值接口

充值(必接)

项目 说明
类名 MYWanSDK
函数 - (int)payOrderInfo:(MYWanSDKPayOrderInfo *)orderInfo roleInfo:(MYWanSDKGameRoleInfo *)roleInfo;
功能 订单支付

参数说明

  • orderInfo 订单信息
  • roleInfo 玩家角色信息

orderInfo字段说明

字段 说明 必填
goodsId 商品ID,IAP时为苹果开发者后台配置的商品id,没有传空字符串 必填
sign 加密sign,sign = md5($username.'#'.$roleid.'#'.$cporderid.'#'.$amount.'#'.$mlsdk_appKey),对登录用户username,角色id,订单号,金额,mlsdk_appKey 进行md5加密,推荐在服务端加密 必填
productName 应该为一个通用名称,不包含商品个数,如"勾玉","元宝" 必填
cpOrderID 游戏订单号 必填
count float 商品数量,如1 必填
amount float 总价(元), 如6 必填
extrasParams 透传字段,服务器回调时原样传递 选填

重要说明

  • 异步通知,用户完成充值操作后会发送充值结果通知:kMYWanSDKNotiRecharge
  • sdk客户端通知的结果仅供参考,很多渠道没有客户端充值结果回调,以服务器端同步为准
  • sign加密推荐在服务端进行

代码示例

Objective-C
// 创建订单信息
MYWanSDKPayOrderInfo *orderInfo = [[MYWanSDKPayOrderInfo alloc] init];
orderInfo.goodsId = @"product_001";
orderInfo.productName = @"元宝";
orderInfo.cpOrderID = @"ORDER_123456";
orderInfo.count = 1.0;
orderInfo.amount = 6.0;
orderInfo.extrasParams = @"";

// 生成sign(建议在服务端生成)
NSString *username = [[MYWanSDK defaultInstance] username];
NSString *roleId = @"role_123";
NSString *cpOrderId = @"ORDER_123456";
NSString *amount = @"6.0";
NSString *key = @"YOUR_APP_KEY";
NSString *signStr = [NSString stringWithFormat:@"%@#%@#%@#%@#%@", username, roleId, cpOrderId, amount, key];
orderInfo.sign = [self md5:signStr];

// 创建角色信息
MYWanSDKGameRoleInfo *roleInfo = [[MYWanSDKGameRoleInfo alloc] init];
roleInfo.roleId = @"role_123";
roleInfo.roleName = @"玩家昵称";
roleInfo.serverId = @"server_01";

// 发起支付
[[MYWanSDK defaultInstance] payOrderInfo:orderInfo roleInfo:roleInfo];

扩展接口

AppDelegate事件调用(必接)

需要在AppDelegate中转发以下事件:

AppDelegate.m
- (void)applicationWillResignActive:(UIApplication *)application {
    [[MYWanSDK defaultInstance] applicationWillResignActive:application];
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [[MYWanSDK defaultInstance] applicationDidEnterBackground:application];
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    [[MYWanSDK defaultInstance] applicationWillEnterForeground:application];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[MYWanSDK defaultInstance] applicationDidBecomeActive:application];
}

- (void)applicationWillTerminate:(UIApplication *)application {
    [[MYWanSDK defaultInstance] applicationWillTerminate:application];
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{
    [[MYWanSDK defaultInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
    [[MYWanSDK defaultInstance] application:application didFailToRegisterForRemoteNotificationsWithError:error];
}

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window{
    return [[MYWanSDK defaultInstance] application:application supportedInterfaceOrientationsForWindow:window];
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    [[MYWanSDK defaultInstance] openURL:url application:application];
    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
    [[MYWanSDK defaultInstance] openURL:url sourceApplication:sourceApplication application:application annotation:annotation];
    return YES;
}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
    [[MYWanSDK defaultInstance] openURL:url application:app options:options];
    return YES;
}

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * restorableObjects))restorationHandler{
    [[MYWanSDK defaultInstance] application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
    return YES;
}

显示浮动条

项目 说明
类名 MYWanSDK
函数 - (int)showToolBar:(MYWan_SDK_TOOLBAR_PLACE)place;
功能 显示浮动工具栏。若渠道无此对应接口,调用无效

案例:当用户登录成功后调用

Objective-C
[[MYWanSDK defaultInstance] showToolBar:MYWan_SDK_TOOLBAR_TOP_LEFT];

隐藏浮动条

项目 说明
类名 MYWanSDK
函数 - (int)hideToolBar;
功能 隐藏浮动菜单。若渠道无此对应接口,调用无效

进入用户中心

项目 说明
类名 MYWanSDK
函数 - (int)enterUserCenter;
功能 进入用户中心。若渠道无此对应接口,调用无效

其他接口

函数 功能
- (NSString *)channelType; 渠道唯一标识
- (NSDictionary *)realNameInfo; 获取实名信息

SDK通知说明

初始化通知

项目 说明
名称 kMYWanSDKNotiInitDidFinished
说明 成功调用初始化接口后,异步。收到该通知后通过错误码判断渠道SDK是否初始化成功

重要

登录接口需要在收到初始化成功回调后再登录,否则登录会失败

登录成功通知

项目 说明
名称 kMYWanSDKNotiLogin
说明 SDK有用户登录成功时发出

注销通知

项目 说明
名称 kMYWanSDKNotiLogout
说明 这有2种情况:
  • 用户从渠道SDK内的用户管理界面注销成功时会发出该通知
  • 游戏调用MYWanSDK的用户注销接口后会收到该通知,根据错误码判断注销成功或失败,一般都认为是注销成功,不用考虑失败

充值结果通知

项目 说明
名称 kMYWanSDKNotiRecharge
说明 成功调用MYWanSDK充值接口后会收到该通知

通知结果的3种情况根据错误码来判断(MYWan_SDK_ERROR_NONEMYWan_SDK_ERROR_RECHARGE_FAILEDMYWan_SDK_ERROR_RECHARGE_CANCELLED)。

注意

因为大部分渠道回调都以服务器为准,该结果仅供客户端参考,实际结果以服务器端同步为准

通知userInfo信息说明

Objective-C
NSDictionary *userInfo = notify.userInfo;
// 错误码
int error = [[userInfo objectForKey:kMYWanSDKKeyError] intValue];
// MYWanSDK订单号
NSString *orderID = userInfo[kMYWanSDKKeyOrderId];
// CP订单号
NSString *cpOrderID = userInfo[kMYWanSDKKeyCpOrderId];

调起渠道实名认证(选接)

项目 说明
类名 MYWanSDK
函数 - (int)realAuth;
功能 调起渠道实名认证界面

若渠道无此对应接口,直接调用会返回接口不支持的错误码。

实名认证结果通知

说明
kMYWanSDKKeyIsRealName 是否实名认证。@"1":已认证;@"0":未认证
kMYWanSDKKeyRealAge 年龄,如果渠道没有返回默认为@"-1"
kMYWanSDKKeyRealResumeGame 渠道实名认证失败之后是否可以继续游戏 @"1":可以;@"0":不可以;渠道没返回默认@"1"
kMYWanSDKKeyRealOther 预留字段,默认为空字符串

其他说明(必读)

接口说明

MYWanSDK初始化接口,用户接口,充值统一都支持。所有提供的接口都可以直接调用,有些可能会因为渠道不支持而调用无效