更新日期:2025年 04月 08日Objective-C(iOS)接入文档
<h3>
<span style="line-height:3;font-size:14px;"><strong><span style="font-size:16px;"></span><span style="font-size:16px;">1.开发包说明</span></strong></span>
</h3>
<p>
<span style="color:#E53333;font-size:14px;"><br />
</span>
</p>
<p>
<span style="color:#E53333;font-size:14px;">SMPCQuickSDK.framework 是基础库,QuickChannel.framework 是各个渠道的接⼊实现库</span><span style="color:#E53333;font-size:14px;white-space:pre;"> </span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;"> <br />
</span>
</p>
<h3>
<span style="line-height:3;font-size:16px;"><strong>2.接入步骤</strong></span>
</h3>
<h4>
<span style="line-height:3;font-size:14px;"><strong>2.1 QuickSDK一般流程</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">· 游戏接入SDK随带的母包库进行接口检查。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">· 在QuickSDK后台添加渠道,配置参数。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">· 测试完毕之后使用打包工具生成渠道包</span>
</p>
<p>
<br />
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>2.2 开发环境配置</strong></span>
</h4>
<p>
<span style="font-size:14px;">将 SMPCQuickSDK.framework 和⺟包的 QuickChannel.framework 添加到⼯程中,并选择相应的 target,其中 QuickChannel.framework 是动态库添加的时候设置为Embed & Sign,如下图:</span>
</p>
<p>
<br />
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20240808/202408081353352dBT747.png" alt="" style="font-size:14px;" />
</p>
<p>
<span style="font-size:14px;"><span style="white-space:normal;font-size:14px;">· </span>包含 UnityFramework 动态库特别说明:<br />
.a/.framework/.h/.m等文件 TargetMembership 需要关联到 UnityFramework<br />
.bundle/.cfg/.png等资源文件 TargetMembership 需要关联到 Unity-iPhone<br />
.framework等动态库TargetMembership 须同时关联到关联到 UnityFramework和Unity-iPhone<br />
<br />
</span>
</p>
<p>
<span style="font-size:14px;"><span style="color:#E53333;">基础库SMPCQuickSDK.framework为靜态库,设置为 </span><span style="color:#E53333;">Do Not Embed,不需要也不能设置为Embed & Sign,</span><span style="color:#E53333;"></span><span style="color:#E53333;">如果带Unityframework动态库,SMPCQuickSDK.framework仅关联到Unityframework即可</span><br />
渠道库QuickChannel.framework为动态库,须同时关联到 UnityFramework和Unity-iPhone,但Unity-iPhone必须设置为Embed & Sign, UnityFramework不需要设置为Embed & Sign</span>
</p>
<p>
<span style="font-size:14px;"><br />
</span>
</p>
<p>
<span style="font-size:14px;"><span style="white-space:normal;font-size:14px;color:#E53333;">· </span><span style="color:#E53333;">确保工程Build Setting - Runpath Search Paths添加了@executable_path/Frameworks</span></span>
</p>
<p>
<span style="font-size:14px;"><img src="https://staticsite.quickapi.net/data/newFiles/20240926/20240926183421RkOA840.png" alt="" /><br />
</span><br />
<span style="font-size:14px;"></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">· 在Build Settings中将Architectures设置为arm64,项目本身也需要支持arm64</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"> Other Linker Flags添加-ObjC <span style="color:#E53333;">(注意字母O跟C要大写,如果包含UnityFramework 动态库,需要在unityframework里添加-ObjC)</span></span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20240808/20240808135359cHiG538.png" alt="" />
</p>
<p>
<span style="line-height:3;font-size:14px;">· Device Orientation 中选中游戏兼容的方向。常见配置</span>
</p>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong><img src="https://staticsite.quickapi.net/data/newFiles/20240808/20240808135411auvj529.png" alt="" /><br />
</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;"> </span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong> · info.plist中添加,以允许http访问</strong></span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20240808/20240808135503ycGb732.png" alt="" />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>· 游戏版本设置</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">游戏的Version(CFBundleShortVersionString)和Build(CFBundleVersion)必须保持一致,且使用x.y.z这样的点分式,比如:1.2.1</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">数字前面不要加0。因为每个渠道更新读取的版本号不一样,设置Version和Build一致才能保证各个渠道更新都正常,如果不愿意这样设置,可以通过生成的调试工程手动出有这样要求的渠道包,要求Version和Build一致的渠道不多,可以在审核不通过后再修改。</span>
</p>
<p>
<img src="https://staticsite.quickapi.net/data/newFiles/20240808/20240808135522YwYS909.png" alt="" />
</p>
<p>
<br />
</p>
<h3>
<span style="line-height:3;font-size:16px;"><strong>3.接口说明</strong></span>
</h3>
<p>
<span style="line-height:3;font-size:14px;">首先配置项目信息。</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>3.1 初始化(必接)</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.1.1 获取实例</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:+ (SMPCQuickSDK *)defaultInstance;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:获取QuickSDK实例</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.1.2 初始化QuickSDK</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">- (int)initWithConfig:(SMPCQuickSDKInitConfigure *)configure application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;</pre>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:使用productKey,productCode,初始化SDK, 由QuickSDK平台分配,在iOS打包工具上可以看到,打包时需要和iOS打包工具上的选择的产品参数一致。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">参数:configure封装了 productKey和 productCode</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">application: 应用的application, 调用函数的参数原封不动的传入即可</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">launchOptions:应用的launchOptions, 调用函数的参数原封不动的传入即可。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:该接口需要在应用加载完成回调中调用,即(<span style="font-size:14px;white-space:normal;color:#E53333;">建议在初始化系统window之后再调用SDK初始化</span>)</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{}</pre>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//初始化
//监听初始化完成事件
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(smpcQpInitResult:)
name:kSmpcQuickSDKNotiInitDidFinished
object:nil];
- (void)smpcQpInitResult:(NSNotification *)notify {
NSLog(@"%@",notify);
//初始化成功,进行下一步流程
}
SMPCQuickSDKInitConfigure *cfg = [[SMPCQuickSDKInitConfigure alloc] init];
cfg.productKey = @”09633196”;
cfg.productCode = @”50840817638746911281319234382938”;
int error = [[SMPCQuickSDK defaultInstance] initWithConfig:cfg application: application didFinishLaunchingWithOptions:launchOptions];
if (error != 0) {
NSLog(@"不能启动初始化:%d",error);
}
//大部分渠道会处理自己内部的初始化失败,如果收到渠道初始化失败,游戏需要去处理,通常的做法让界面处于等待,等0.5s再初始化一次,如果失败就提示检查网络退出游戏</pre>
<p>
<br />
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>3.2 用户接口</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.2.1 登录接口(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (int)login;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:打开登录界面,进入用户登陆流程。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">返回值:返回0说明调用接口成功,其他值参考说明。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">收到登录成功通知kSmpcQuickSDKNotiLogin后,取得返回值userInfo,取得用户uid、用户昵称/用户名和user_token,也可直接使用接口获取uid,userToken,昵称,参考demo,(可选内容)<strong>使用该user_token从服务器获取用户信息</strong>。随带Demo中有相关实现。该uid是渠道sdk提供的用户唯一标识,不同渠道间的uid可能发生重叠。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">5..(void)smpcQpLoginResult:(NSNotification *)notify {
NSDictionary *userInfo = [notify userInfo];
int error = [userInfo objectForKey:@”error”] intValue];
if (error == 0) {
NSString *uid = [[SMPCQuickSDK defaultInstance] userId];
NSString *userNick = [[SMPCQuickSDK defaultInstance] userNick];
NSString *user_token = [[SMPCQuickSDK defaultInstance] userToken];
}
}</pre>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.2.2 注销接口</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数: - (int)logout;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:主动注销当前用户。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">返回值:返回0说明调用接口成功,其他值参考说明。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">注意:调用该接口将引起QuickSDK发出一个注销通知kSmpcQuickSDKNotiLogout,游戏开发者收到注销通知后走下一步流程,比如回到游戏登录界面,再调用登录。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.2.3 用户uid</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (NSString *)userId;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:获取最后登录用户uid,通常在收到登录通知回调中调用,该uid是渠道sdk提供的用户唯一标识,不同渠道间的uid可能发生重叠。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">返回值:最后登录用户的uid,可能为空,在没有收到登录通知时可能已经有值,不能作为判断当前是否有用户登录游戏的依据。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.2.4 用户userToken</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (NSString *)userToken</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:获取最后一次登录用户的userToken,用于到服务器验证用户。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">返回值:最后一次登录用户的userToken</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.2.5 用户昵称</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (NSString *)userNick;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.2.6 更新角色信息(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (void)updateRoleInfoWith:(SMPCQuickSDKGameRoleInfo *)info isCreate:(BOOL)isCreate;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:向QuickSDK提交角色信息。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">参数:info 角色信息对象,参考类SMPCQuickSDKGameRoleInfo,isCreate表示是否为刚刚创建的角色</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">返回值:</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>3.3 充值接口</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.3.1 充值(必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (int)payOrderInfo:(SMPCQuickSDKPayOrderInfo *)orderInfo</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">roleInfo:(SMPCQuickSDKGameRoleInfo *)roleInfo;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:订单支付</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">参数:orderInfo 订单信息</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">roleInfo 玩家角色信息</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">说明:orderInfo中</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">goodsId //商品ID IAP时为苹果开发者后台配置的商品id,非IAP时随意,必填</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">productName //应该为一个通用名称,不包含商品个数,如“勾玉”,“元宝”,必填</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">cpOrderID //游戏订单号,必填</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">count //商品数量,如@"60",必填</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">amount //总价(元), 如@"6",必填</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">callbackUrl <span style="white-space:normal;color:#E53333;font-size:14px;">//</span>如果后台没有配置充值回调地址,callbackUrl将作为充值回调地址。选填</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">extrasParams <span style="white-space:normal;color:#E53333;font-size:14px;">//</span>透传字段,服务器回调时原样传递, 选填。</span><span style="font-size:14px;"><span style="color:#E53333;"> </span> </span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">productDesc //商品描述,选填。若游戏未填写则默认QuickSDK使用“数量+商品名称“拼接(如果数量为1,使用商品名称),游戏传入不为空字符串则以游戏传入参数值为准<br />
</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">异步充值,用户完成充值操作后会发送充值结果通知。kSmpcQuickSDKNotiRecharge,sdk客户端通知的结果仅供参考,很多渠道没有客户端充值结果回调,以服务器端同步为准。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;"><br />
</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;">3.4 扩展接口</span>
</h4>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.4.1 AppDelegate事件调用 (必接)</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;color:#E53333;">说明:对能够使用OC接口的开发者这些回调应该比较容易添加,为了减轻大部分开发者负担,Unity3D和Cocos2d-x的游戏不用接入下面事件调用的代码,打包工具将会自动添加。打包工具在Unity3d和cocos2d-x默认系统生命周期delegate文件中添加如下代码,进行并不严格的排重,如果开发者修改了默认的delegate文件将导致添加失败,请自行在修改后的delegate文件中添加。<br />
<span style="color:#000000;">如果使用IPA出包,以下代码打包工具无法自动添加,请开发人员务必添加到母包工程系统代理类里面,通常情况下:</span><br />
<span style="color:#000000;">原生Objective-C工程在AppDelegate.m对应系统代理回调方法中添加以下代码</span><br />
<span style="color:#000000;">Unity工程在UnityAppController.mm对应系统代理回调方法中添加以下代码</span><br />
<span style="color:#000000;">Cocos2d工程在AppController.mm对应系统代理回调方法中添加以下代码</span><br />
<span style="color:#000000;">如果开发者修改了或者自定义了默认的系统delegate文件,请在修改后或者自定义的delegate文件中添加</span><br />
</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">- (void)applicationWillResignActive:(UIApplication *)application {
[[SMPCQuickSDK defaultInstance] applicationWillResignActive:application];
}
- (void) applicationDidEnterBackground:(UIApplication *)application {
[[SMPCQuickSDK defaultInstance] applicationDidEnterBackground:application];
}
- (void) applicationWillEnterForeground:(UIApplication *)application {
[[SMPCQuickSDK defaultInstance] applicationWillEnterForeground:application];
}
- (void) applicationDidBecomeActive:(UIApplication *)application {
[[SMPCQuickSDK defaultInstance] applicationDidBecomeActive:application];
}
- (void) applicationWillTerminate:(UIApplication *)application {
[[SMPCQuickSDK defaultInstance] applicationWillTerminate:application];
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
[[SMPCQuickSDK defaultInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
[[SMPCQuickSDK defaultInstance] application:application didFailToRegisterForRemoteNotificationsWithError:error];
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo{
[[SMPCQuickSDK defaultInstance] application:application didReceiveRemoteNotification:userInfo];
}
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window
{
[[SMPCQuickSDK defaultInstance] application:application supportedInterfaceOrientationsForWindow:window];
return UIInterfaceOrientationMaskAll;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
[[SMPCQuickSDK defaultInstance] openURL:url application:application];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
[[SMPCQuickSDK defaultInstance] openURL:url sourceApplication:sourceApplication application:application annotation:annotation];
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<nsstring*, id=""> *)options{
[[SMPCQuickSDK defaultInstance] openURL:url application:app options:options];
return YES;
}</nsstring*,></pre>
<p>
<br />
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.4.2 显示浮动菜单</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (void)showToolBar:(SMPC_QUICK_SDK_TOOLBAR_PLACE)place;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:显示浮动工具栏。若渠道无此对应接口,调用无效。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案例:当用户登录成功后调用</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">[[SMPCQuickSDK defaultInstance] showToolBar:SMPC_QUICK_SDK_TOOLBAR_TOP_LEFT];</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.4.3 隐藏浮动菜单</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (void)hideToolBar;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:隐藏浮动菜单。若渠道无此对应接口,调用无效。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">案列:必要时隐藏。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.4.4 进入用户中心</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (int)enterUserCenter;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:进入用户中心。若渠道无此对应接口,调用无效。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.4.5 进入客服中心</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:- (int)enterCustomerCenter;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:进入客服中心。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">若渠道无此对应接口,直接调用会返回接口不支持的错误码。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.4.6 进入BBS</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数: - (int)enterBBS;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:进入渠道BBS。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">若渠道无此对应接口,直接调用会返回接口不支持的错误码。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;"><strong>3.4.7 是否支持指定方法</strong></span>
</p>
<p>
<span style="line-height:3;font-size:14px;">类名:SMPCQuickSDK</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">函数:-(BOOL)isFunctionTypeSupported:(SMPC_QUICK_SDK_FUNC_TYPE)type;</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">功能:判断渠道SDK支付支持某个接口,用户中心,客服中心,BBS,暂停等接口不是每个渠道SDK都实现了,所以可以在代码里判断来执行。若渠道无此对应接口,调用无效,会返回接口不支持的错误码。</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;">3.5 其他接口</span>
</h4>
<h4>
<br />
</h4>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">- (int)channelType; //渠道唯一标识
#pragma mark 平台基本信息
- (NSString *)getConfigValue:(NSString *)key; //获取quick后台配置的自定义参数
- (NSString *)getDeviceID; //获取设备id</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<h4>
<strong style="font-size:16px;">4.SDK通知说明</strong>
</h4>
<h4>
<span style="line-height:3;font-size:14px;"><strong>4.1 初始化通知</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">名称:kSmpcQuickSDKNotiInitDidFinished</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:成功调用初始化接口后,异步。收到该通知后通过错误码判断渠道SDK是否初始化成功。</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">SMPC_QUICK_SDK_ERROR_NONE、SMPC_QUICK_SDK_ERROR_INIT_FAILED。
NSDictionary *userInfo = notify.userInfo;
int errorCode = [userInfo[kSmpcQuickSDKKeyError] intValue];
switch (errorCode) {
case SMPC_QUICK_SDK_ERROR_NONE:
{
//初始化成功,进行下一步流程
}
break;
case SMPC_QUICK_SDK_ERROR_INIT_FAILED:
default:
{
//初始化失败
}
break;
}</pre>
<p>
<br />
</p>
<p>
<br />
</p>
<p>
<strong style="font-size:14px;font-family:""><br />
</strong>
</p>
<p>
<strong style="font-size:14px;font-family:"">4.2 登录成功通知</strong>
</p>
<p>
<span style="line-height:3;font-size:14px;">名称:kSmpcQuickSDKNotiLogin</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:渠道SDK有用户登录成功时发出。如果游戏已经存在正在游戏的用户,收到该通知时认为是切换账号,需要开发者注销游戏内用户,使用新用户信息进入游戏。</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;">4.3 注销通知</span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">名称:kSmpcQuickSDKNotiLogout</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:这有2种情况</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">· 用户从渠道SDK内的用户管理界面注销成功时会发出该通知。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">· 游戏调用QuickSDK的用户注销接口后会收到该通知,根据错误码判断注销成功或失败,一般都认为是注销成功,不用考虑失败。</span>
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>4.4 充值结果通知</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">名称:kSmpcQuickSDKNotiRecharge</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">说明:成功调用QuickSDK充值接口后会收到该通知。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">通知结果的3种情况根据错误码来判断(SMPC_QUICK_SDK_ERROR_NONE、SMPC_QUICK_SDK_ERROR_RECHARGE_FAILED、SMPC_QUICK_SDK_ERROR_RECHARGE_CANCELLED)。</span>
</p>
<p>
<span style="line-height:3;font-size:14px;">因为大部分渠道回调都以服务器为准,该结果仅供客户端参考,实际结果以服务器端同步为准。</span><span style="font-size:14px;"> </span>
</p>
<p>
<span style="line-height:3;font-size:14px;">通知userInfo中信息说明:</span>
</p>
<p>
<br />
</p>
<pre class="brush:js;toolbar:false">//错误码
int error = [[userInfo objectForKey:kSmpcQuickSDKKeyError] intValue];
//QuickSDK订单号、cp下单时传入的订单号
NSString *orderID = userInfo[kSmpcQuickSDKKeyOrderId];
NSString *cpOrderID = userInfo[kSmpcQuickSDKKeyCpOrderId];</pre>
<p>
<br />
</p>
<h4>
<span style="line-height:3;font-size:14px;"><strong>4.5 暂停结束通知</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">名称:kSmpcQuickSDKNotiPauseOver</span>
</p>
<p>
<span style="line-height:2.5;font-size:14px;">说明:不用监听,某些渠道SDK暂停结束时发出通知。</span>
</p>
<h4>
<span style="font-size:14px;"><span style="line-height:3;">4.6 </span><span style="line-height:3;">获取渠道实名信息(选接)</span><span style="line-height:2.5;"></span></span>
</h4>
<p>
<span style="font-size:14px;"><span style="line-height:3;">类名:</span><span style="line-height:3;">SMPCQuickSDK</span></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:3;">函数:</span><span style="line-height:3;">- (NSDictionary *)realNameInfo;</span><span style="line-height:2.5;"></span></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:3;">功能:</span><span style="line-height:3;">获取渠道实名认证信息</span></span>
</p>
<p>
<span style="font-size:14px;line-height:3;"><span style="line-height:3;">返回值类型:字典</span></span>
</p>
<p>
<span style="font-size:14px;line-height:3;"><span style="line-height:3;">注:</span></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:2.5;"><span style="line-height:3;">kSmpcQuickSDKKeyRealName:是否实名认证。YES:已认证;NO:未认证</span><br />
<span style="line-height:3;"> kSmpcQuickSDKKeyRealAge:年龄如果渠道没有返回默认为-1</span><br />
<span style="line-height:3;"> kSmpcQuickSDKKeyRealResumeGame:渠道实名认证失败之后是否可以继续游戏。YES:可以;NO:不可以;渠道没返回默认YES</span><br />
<span style="line-height:3;">kSmpcQuickSDKKeyRealOther:预留字段默认为空字符串</span></span></span>
</p>
<h4>
<span style="font-size:14px;"><span style="line-height:2.5;"><span style="line-height:3;">4.7 </span><span style="line-height:3;">调起渠道实名认证(选接)</span></span></span>
</h4>
<p>
<span style="font-size:14px;"><span style="line-height:3;">类名:</span><span style="line-height:3;">SMPCQuickSDK</span></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:3;">函数:</span><span style="line-height:3;">- (int)realAuth;</span></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:3;">功能:</span><span style="line-height:3;">调起渠道实名认证界面</span><br />
<span style="line-height:3;">若渠道无此对应接口,直接调用会返回接口不支持的错误码。</span></span>
</p>
<h4>
<span style="font-size:14px;"><span style="line-height:3;">4.8 </span><span style="line-height:3;">实名认证结果通知</span></span>
</h4>
<p>
<span style="font-size:14px;"><span style="line-height:3;">类名:</span><span style="line-height:3;">kSmpcQuickSDKNotiRealAuth</span></span>
</p>
<p>
<span style="font-size:14px;line-height:3;">说明:实名认证成功后会收到该通知</span><span style="font-size:14px;line-height:2.5;"></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:2.5;"></span><span style="line-height:3;">通知 userInfo 中信息说明</span><span style="line-height:3;">:</span></span>
</p>
<p>
<span style="font-size:14px;"><span style="line-height:3;">kSmpcQuickSDKKeyRealName:是否实名认证。YES:已认证;NO:未认证</span><br />
<span style="line-height:3;">kSmpcQuickSDKKeyRealAge: 年龄如果渠道没有返回默认为-1</span><br />
<span style="line-height:3;">kSmpcQuickSDKKeyRealResumeGame: 渠道实名认证失败之后是否可以继续游戏YES:可以;NO:不可以;渠道没返回默认YES</span><br />
<span style="line-height:3;">kSmpcQuickSDKKeyRealOther:预留字段默认为空字符串</span><br />
</span>
</p>
<h3>
<span style="line-height:3;font-size:14px;">5.其他说明(必读)</span>
</h3>
<h4>
<span style="line-height:3;font-size:14px;"><strong>5.1 接口说明</strong></span>
</h4>
<p>
<span style="line-height:3;font-size:14px;">QuickSDK 初始化接口,用户接口,充值统一都支持。所有提供的接口都可以直接调用,有些可能会因为渠道不支持而调用无效。</span>
</p>
<p>
<br />
</p>