一、接入说明

1.运行环境要求

2.接入步骤

二、客户端接口文档

1、初始化配置(新,增加游戏协议)(必须接入)

+ (void)preConfig:(m4399OMManagerConfig *)config gameProtocolState:(void (^)(NSInteger code))gameProtocolState lastLoginUser:(void (^)(OMUser *_Nullable user))lastLoginUser switchAccount:(void (^)(void))switchAccount;

请务必在AppDelegate- application: didFinishLaunchingWithOptions:中调用本接口,确保配置信息正确加载。 新旧初始化接口二选一,请勿重复调用

m4399OMManagerConfig参数说明

请使用- (instancetype)initWithGamekey:(NSString *)gamekey- (instancetype)initWithGamekey:(NSString *)gamekey customAnalysisAttributes:(NSDictionary<NSString *, NSString * _Nullable > *)customAnalysisAttributes初始化config,customAnalysisAttributes用于定制的全局分析字段,与预制字段冲突时会使用指定字段。

参数名 类型 默认值 说明
gameKey NSString 4399 OMSDK Key,请向运营人员索取。
printLog Bool false 打印OMSDK日志
debugHeartbeatInterval Double -1 强制心跳间隔,用于开发期间调试使用,切勿在线上环境修改本参数。小于0时失效。

gameProtocolState回调说明

游戏协议回调,code定义:0 用户同意协议;160001 协议无更新通知;

lastLoginUser回调说明

该回调会返回上一次运行时用户使用的身份信息,如果用户未手动注销,并且在本次启动时校验身份后,会调用本回调返回用户信息(可能为空)。仅会在配置接口调用后最多调用一次。

若出现网络异常、防沉迷系统异常等情况,用户信息可能为空,此时可以调用登录接口进行登录。

若网络波动,此回调可能会较慢返回。

switchAccount回调说明

用户因防沉迷踢出或主动注销账号、用户在别处登录/修改密码、切换账号等情况,会调用本回调。游戏方在接收到该回调时,应注销游戏中存储的用户信息,返回登录界面,无需再调用logout接口。此时如需弹出SDK的登录界面,可在本回调中调用login接口。本回调可能在游戏运行期间随时被调用。

2、初始化配置(旧)(必须接入)

+ (void)config:(m4399OMManagerConfig *)config lastLoginUser:(void (^)(OMUser *_Nullable user))lastLoginUser switchAccount:(void (^)(void))switchAccount;

请务必在AppDelegate- application: didFinishLaunchingWithOptions:中调用本接口,确保配置信息正确加载。

m4399OMManagerConfig参数说明

请使用initWithGameKey初始化config

参数名 类型 默认值 说明
gameKey NSString 4399 OMSDK Key,请向运营人员索取。
printLog Bool false 打印OMSDK日志

lastLoginUser回调说明

该回调会返回上一次运行时用户使用的身份信息,如果用户未手动注销,并且在本次启动时校验身份后,会调用本回调返回用户信息(可能为空)。仅会在配置接口调用后最多调用一次。

若出现网络异常、防沉迷系统异常等情况,用户信息可能为空,此时可以调用登录接口进行登录。

若网络波动,此回调可能会较慢返回。

switchAccount回调说明

用户因防沉迷踢出或主动注销账号、用户在别处登录/修改密码、切换账号等情况,会调用本回调。游戏方在接收到该回调时,应注销游戏中存储的用户信息,返回登录界面,无需再调用logout接口。此时如需弹出SDK的登录界面,可在本回调中调用login接口。本回调可能在游戏运行期间随时被调用。

3、URL回执(必须接入)

+ (void)handlerUrl:(NSURL *)url;

AppDelegate-application:openURL:options:方法中调用本方法,传入方法参数openURL。该方法保障QQ登录功能正常运行。

4、登录(必须接入)

+ (void)loginWithSuccess:(void (^)(OMUser *_Nullable user))success fail:(void (^)(int code, NSString *_Nonnull msg))fail;

在用户需要进行登录时调用本接口,会在应用最顶层window中弹出登录界面。

如果为应用启动时的调用,则需等待初始化接口中的lastLoginUser回调执行后,方可调用本接口,否则可能引起防沉迷系统异常。

success登录成功回调,在用户登录成功后调用,返回用户登录信息。

fail登录失败回调,在登录遇到错误时调用,返回错误码和错误信息。

5、登出

+ (void)logout;

在用户需要进行登出时调用本接口。

注:调用本接口时,同样会触发初始化配置接口的switchAccount回调

6、展示个人中心页面(合规化,必须接入)

+ (void)userCenter:(void(^)(void))didClose;

在需要启动用户中心时调用本接口,会在应用最顶层window中弹出个人中心。

仅限用户登录后使用本接口。

didClose窗口关闭回调。

7、检查手机绑定状态

+ (void)checkPhoneBindingStatus:(void(^)(BOOL isBinding))success fail:(void(^)(NSInteger code, NSString *message))fail;

在需要检查用户手机绑定状态时调用本接口,会返回是否绑定手机

仅限用户登录后使用本接口。

success手机绑定状态回调。

fail手机绑定检查失败回调,返回错误码和错误信息。

8、开启绑定手机页面

+ (void)bindPhoneNumberWithSuccess:(void(^)(void))success fail:(void(^)(NSInteger code, NSString *message))fail;

在需要绑定手机时调用本接口,会在应用最顶层window中弹出绑定手机页面。

仅限用户登录后使用本接口。

success手机绑定成功回调。

fail手机绑定失败回调,返回错误码和错误信息。

Fail Code 含义
201 用户已绑定手机号
901 网络错误
902 用户取消绑定手机
606/607/608 用户在其他设备登录

9、展示在线客服

+ (void)onlineCustomerService:(void(^)(void))didClose;

在需要在线客服时调用本接口,会在应用最顶层window中弹出客服界面。

10、展示游戏客服弹窗

+ (void)customerService:(void(^)(void))didClose;

在用户需要联系客服时调用本接口,会在应用最顶层window中弹出客服界面。

didClose窗口关闭回调。

11、预充值许可(若有充值且不使用SDK内置充值接口,必须接入)

+ (void)prepayWithMoney:(int)money mark:(NSString *)mark success:(void (^)(NSString *orderId))success fail:(void (^)(int code, NSString *message))fail;

在用户发起充值后,优先调用本接口获得用户充值许可,以确保用户在符合防沉迷规则的前提下进行充值行为。

仅限用户登录后使用本接口。

money 充值金额(元)最小支持1元,仅支持整数。

mark 游戏方自定义订单号,用于关联游戏方单号和4399充值中心订单号

success 允许充值回调,返回orderId用于后续服务端接口的操作。

fail 充值失败回调,返回失败code和相关信息,此时有可能会根据防沉迷系统的需要,弹出防沉迷说明弹窗。

12、从SDK获取IAP商品

+ (void)fetchProductWithSuccess:(void(^)(NSArray<OMProduct *> *products))success fail:(void(^)(OMPaymentError *error))fail

获取IAP商品。

支持iOS12+。

使用IAP需在工程->Target->Frameworks, Libraries, and Embedded Content中引入StoreKit.framework。

success 商品获取成功回调

OMProduct参数说明

参数名 类型 默认值 说明
name NSString 商品名称
productID NSString 商品productID
price NSString 仅用于UI展示,请勿依赖price字段校验订单,在某些情况下price可能会显示错误地区的价格。由于float存在精度问题,计算时请注意
currency NSString 货币,仅用于UI展示, 在某些情况下currency可能会返回错误地区的货币
currencySymbol NSString 货币符号,仅用于UI展示, 在某些情况下currencySymbo可能会返回错误地区的货币符号

fail 失败回调 OMPaymentError

参数名 类型 默认值 说明
code NSString 错误码
message NSString 错误信息
info NSString 错误补充信息,可为空
originalCode NSString 原始错误码
orderID NSString 订单id,可为空

Fail Code

Fail Code 含义
10001 未登录
10002 找不到Product
10003 系统不支持
1001 失败,用户禁止应用内付费购买
1002 无法获取产品信息
1003 ProductID为空, 请检查后台配置
1004 下单失败
1005 验单请求失败
1006 用户凭证失效
1007 空SKProduct实体
1100 产生除非消耗、自动续期Product的重复购买
1101 恢复购买错误
1102 无需恢复购买
1103 账单刷新错误
1104 账单校验失败
1105 用户取消或超时
1106 设备被Apple禁止充值
1107 请求变量、签名发生错误
1108 促销信息有误
1109 商品不可用,检查苹果后台
1110 未同意隐私Apple的协议
1111 需要等待批准
1112 Apple返回未知错误
1113 读取Receipt错误
2001 防沉迷限制充值
3001 网络错误
4001 未知错误

13、从SDK发起内购

+ (void)purchaseWithProductID:(NSString *)productID mark:(NSString *)mark roleInfo:(OMRoleInfoModel *_Nullable)roleInfo purchasingStatu:(void(^)(OMPurchasingStatu statu))purchasingStatu success:(void(^)(OMPurchaseResultInfo *info))success userCancel:(void(^)(OMPaymentError *error))userCancel fail:(void(^)(OMPaymentError *error))fail

发起应用内购买。请在调用获取IAP商品接口,并得到商品列表后调用此接口发起内购。

支持iOS12+。

仅限用户登录后使用本接口。

productID 内购商品id,请从「获取IAP商品」接口的商品列表中获取。

mark 游戏方自定义订单号,用于关联游戏方单号和4399充值中心订单号

roleInfo 充值角色信息,可以为nil,详细字段说明参「角色创建上报」接口附带的参数说明

purchasingStatu 支付中状态回调,OMPurchasingStatuPlaceOrder 下单中、OMPurchasingStatuVerifying 验单中。

success 成功回调

OMPurchaseResultInfo参数说明

参数名 类型 默认值 说明
orderID NSString 订单id,可能为空
mark NSString 游戏方自定义订单号,用于关联游戏方单号和4399充值中心订单号

userCancel 用户取消

fail 失败回调,参考商品获取说明的Fail code

14、前往第三方平台

+ (void)leadToPlatformWithKey:(NSString *_Nonnull)key success:(void(^)(void))success fail:(void(^)(NSInteger, NSString *_Nonnull))fail

根据后台配置的key跳转指定第三方平台。

需在Info.plist内,配置需要跳转的平台的scheme到LSApplicationQueriesSchemes下,详细可参考接入步骤(9)

例如 跳转微博,在后台配置key为weibo,url配置为sinaweibo://userinfo?uid=4399

key 对应社交平台的key。

success 成功回调。

fail 失败回调,返回失败code和相关信息。

15、打开评分弹窗

+ (void)reviewRequestWithCommentStatuCallback:(void(^)(NSInteger code, NSString *_Nonnull msg, NSInteger level, NSString *_Nonnull comment))callback

打开评分弹窗

仅限用户登录后使用本接口。

测试说明:https://note.4399doc.com/prd?sid=ffbb5d38453cbc90f54daf97#/share

callback

参数名 类型 默认值 说明
code NSInteger 1000,未评论;1001 已在弹窗内评论,1002 已跳转苹果评论
msg NSString 已评价;未评价
level NSInteger 1~5
comment NSString 评论内容,仅返回SDK弹窗评价内容

16、角色创建上报

+ (void)reportCreateWithRoleInfo:(OMRoleInfoModel *)roleInfo
                      completion:(void(^)(BOOL isSuccess))completion;

完成角色创建后调用,用于上报新角色信息。

仅限用户登录后使用本接口。

参数说明

参数名 类型 说明
roleInfo OMRoleInfoModel 角色信息模型,见下文 OMRoleInfoModel
completion void(^)(BOOL isSuccess) 完成回调,isSuccess=YES 表示上报成功

OMRoleInfoModel参数说明

字段 类型 说明
roleID NSString 角色唯一标识,可为nil
roleLevel NSString 角色等级,建议传当前可见等级,如“1”、“15”等,可为nil
serverID NSString 区服标识,可为nil
extensionValues NSDictionary<NSString *, NSString *> * 扩展字段,若与上述字段同名将覆盖原有字段,可为空

17、进入游戏上报

+ (void)reportGameEntryWithRoleInfo:(OMRoleInfoModel *)roleInfo
                         completion:(void(^)(BOOL isSuccess))completion;

在**进入游戏(进入主城/登录成功进入服务器)**时调用,用于上报当前角色进入游戏行为。

仅限用户登录后使用本接口。

参数说明

参数名 类型 说明
roleInfo OMRoleInfoModel 角色信息模型,见下文 OMRoleInfoModel
completion void(^)(BOOL isSuccess) 完成回调,isSuccess=YES 表示上报成功

18、上报事件

+ (void)reportEventWithEventName:(NSString *)eventName
                       attribute:(NSDictionary<NSString *, NSString *> *)attribute
                      completion:(void(^)(BOOL isSuccess))completion;

用于上报自定义事件,便于后续统计与分析。

参数说明

参数名 类型 说明
eventName NSString 事件名,例如:"tutorial_finish""level_up"
attribute NSDictionary<NSString *, NSString *> * 事件属性键值对,键与值均为字符串(可为空或传@{}
completion void(^)(BOOL isSuccess) 完成回调,isSuccess=YES 表示上报成功

三、Q&A

打包IPA processing failed错误提示

打包发布时,若出现IPA processing failed提示,可以尝试回退到上一步,再重试,加载到打包流程第一个界面进行App Thinning设置时,无需等待,快速点击Next进入下一个设置界面即可顺利进入后续流程。(该现象和Xcode打包分析流程有关,如App Thinning界面原先无特殊设置,将不影响发包)

未显示手机号一键登录

未显示Apple ID登录渠道

未显示QQ登录渠道

QQ登录未跳转回游戏

未显示第三方登录渠道

iOS 12.2以下的系统启动即闪退

上架 Appstore 因 Guideline 5.1.1 被拒绝

切换Xcode 15打包后,上传TestFlight后出现启动即闪退或显示与此设备不兼容

如何接入IAP

四、更新日志

版本 更新说明 备注
1.9.8 更新一键登录SDK,优化游戏评论 请替换m4399QuickLogin.framework或m4399QuickLogin.xcframework为MTDQuickLogin.xcframework
1.9.9 更新一键登录SDK 务必更新EAccountOpenPageResource.bundle
1.10.0 增加上报角色创建、进入游戏接口,优化内购稳定性