此文档适用于使用OC接口的SDK(如发现文档错误,请及时联系我们处理)
接入前,需要由项目负责人完成渠道申报并在后台进行配置,从而获取到该游戏的渠道参数, 配置文件,直接加入工程(等同bundle资源).。
IOS SDK支持 iPhone、iPad,要求armv7、armv7s或arm64架构,操作系统要求Mac要求macOS14以上,Xcode要求15以上,iOS SDK要求11.0以上( 注:由于新版本Facebook/firebase仅支持iOS13及以上系统,所以SDK目前仅支持iOS13及以上)。
iOS SDK主要由以下几部分构成,如下图:
[1] MIDBaselib 封装静态库
只支持armv7、armv7s和arm64架构,固件要求iOS8.0以上
[2] Thirdilb 第三方静态库.a或Framework
静态库封装调用的第三方静态库或Framework
[3] MIDAnalytics三方统计所需的静态库文件
[4] Splash SDK提供的闪屏支持
苹果2020年4月30日后提交的APP不再支持使用LaunchImage,启动图需要使用StoryBoard来搭建;
StoryBoard介绍:http://sdk.acegames.cn/t3/241/4775/1500008855.html
Xcode->Project->Build Settings工程配置
[1] 添加库的连接参数
请在工程文件Build Settings处,找到Other Linker Flags,并添加-ObjC
[2]其他配置参考下图
1.打开终端
cd [项目路径]
2.创建目录UnityIOS,此目录为Unity导出iOS工程目录
mkdir UnityIOS
3.检查是否安装CocoaPods,显示当前版本号 如果没有,安装CocoaPods
pod --version
4.初始化第三方依赖配置文件Podfile
pod init
5.编辑Podfile, 并复制下面内容
vim Podfile
source 'https://git.acegames.cn/midsdk/podspec/WPMIDSDKPods.git'source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'platform :ios, '13.0'use_frameworks!project 'UnityIOS/Unity-iPhone.xcodeproj'target 'Unity-iPhone' do |app|pod 'WPMIDBundles', '1.1.2'endtarget 'UnityFramework' do# Facebook登录pod 'WPMIDSDKFacebookSignIn', '1.0.8'# 谷歌登录pod 'WPMIDSDKGoogleSignIn', '1.0.8'# # 苹果登录pod 'WPMIDSDKAppleSignInApp', '1.0.4'# # 苹果GameCenterpod 'WPMIDSDKGameCenter', '1.0.7'# 全球pod 'WPMIDSDKGlobal', '1.1.5'# Basepod 'WPMIDSDKBaseSDK', '1.3.5.6'# sharepod 'WPMIDSDKShare/MID_ShareBase', '1.0.6'pod 'WPMIDSDKShare/MID_ShareSystem', '1.0.6'## #推送pod 'WPMIDSDKPush/MID_PushFirebase', '1.0.7' #选接,根据需求更新### #统计pod 'WPMIDSDKAnalyticsSDK/MID_AnalyticsBase', '1.2.2.2'pod 'WPMIDSDKAnalyticsSDK/MID_AppsFlyer', '1.2.2.2'pod 'WPMIDSDKAnalyticsSDK/MID_Facebook', '1.2.2.2'pod 'WPMIDSDKAnalyticsSDK/MID_Firebase', '1.2.2.2'# 激励广告pod 'WPMIDSDKAppLovin','1.1.0.1'# 此处为新增,与上面Unity-iPhone内需要共存,注意添加pod 'WPMIDBundles', '1.1.2'end
6.安装SDK和第三方依赖并生成Unity-iPhone.xcworkspace
# 安装SDK和第三方依赖并生成Unity-iPhone.xcworkspace,pod install --repo-update
7.生成目录如下
|-- Pods MIDSDK和第三方依赖|-- Podfile.lock CocoaPods版本控制文件|-- Podfile MIDSDK配置文件|-- Unity-iPhone.xcworkspace iOS工程文件|-- UnityIOS Unity导出iOS工程目录
8.打开Unity-iPhone.xcworkspace
open Unity-iPhone.xcworkspace
[1] 支持HTTP设置
ios9 下苹果要求 App 内访问网络必须使用 HTTPS ,现阶段不能马上改成 https。
请在 Info.plist 中添加 NSAppTransportSecurity 类型 Dictionary.在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 类型 Boolean,值设为 YES。如下图
[2] 权限设置【必加】
使用Xcode打包时,SDK使用到访问相册功能和iOS14获取idfa需要设置权限使用描述(必加),如下图
<key>NSUserTrackingUsageDescription</key><string>为了游戏能更好的提供个性化服务,请允许追踪您的广告标识权限。</string><key>LSRequiresIPhoneOS</key><true/><key>NSPhotoLibraryUsageDescription</key><string>您正在尝试访问相册,请允许访问添加照片和视频的权限。</string><key>NSCameraUsageDescription</key><string>Community Posting - Using image uploads will get your camera permissions</string>
[4] 去除系统冗余日志输出(非必须)
使用Xcode8及以后调试时如有无用日志输出请做以下设置,防止无用的系统日志在控制台输出,如下图
[1] dSYM文件
在XCODE编译项目之后,会在app旁看见一个同名的dSYM文件。dSYM文件是iOS编译后保存16进制函数地址映射信息的文件,每次应用程序build后,都会生成对应的xxx.app, xxx.app.dSYM文件。通过此文件可以将16进制地址转换成可读的函数地址,精确定位crash位置,如下图所示:
[2] 工程配置
开启内购和苹果登录前提需要苹果证书设置支持.之后再Xcode进行如下设置.
选择TARGETS->Unity-iPhone修改Signing & Capabilities
1.添加In-App Purchase,如不添加,内购支付无法使用。
2.添加Sign in with Apple,如不添加苹果登录无法使用。
| 参数名称 | 必要性 | 类型 | 默认值 | 功能 |
|---|---|---|---|---|
| MIDBase_InitOrientation | 必须 | String | UIInterface Orientation Landscape Right | 游戏初始化方向 竖屏: UIInterfaceOrientationPortrait 右横屏: UIInterfaceOrientationLandscapeRight 左横屏: UIInterfaceOrientationLandscapeLeft |
| MIDBase_Debugmodel | 必须 | Boolean | YES | 出包前请将其设置成NO。 主要用于查看控制台日志。 YES:调试模式 NO:出包模式 |
| MIDBase_AutoOrientation | 非必须 | Boolean | YES | 设置SDK界面是否支持旋转 YES:支持 NO:关闭 |
| MIDBase_isHiddenInitUI | 非必须 | Boolean | NO | 初始化loading图是否展示,值为false或者未添加会默认显示初始化loading图,值为true会隐藏初始化loading图(不建议使用此功能,如果影响游戏展示效果可提前或者推迟调用初始化接口的时机) |
<key>MIDBase_InitOrientation</key><string>UIInterfaceOrientationLandscapeLeft</string><key>MIDBase_AutoOrientation</key><true/><key>MIDBase_Debugmodel</key><true/><key>MIDBase_HI_AutoHidden</key><false/><key>MIDBase_isHiddenInitUI</key><false/>
除去xcode配置全局隐藏电池条外还需检查下图info.plist参数:
服务端配置:请参考 通用接入文档—> 《SDK服务端接入说明文档》
1、初始化第三方SDK,同时获取SDK所需要的初始化数据
2、检查版本更新,初始化内部封装了第三方的更新接口
/// 初始化传入资源版本/// @param viewController 游戏控制器/// @param version 资源版本号- (void)MIDSDKInit:(UIViewController *_Nonnull)viewController gameResVersion:(NSString *_Nonnull)version;
[[MIDGameOCSDK shareInstance] MIDSDKInit:根控制器 gameResVersion:@"版本"];
注意:
1.初始化接口在不同游戏引擎添加的位置不同,具体参看代码示例
2.因苹果机制问题,在某些系统版本的某些设备上一些苹果的权限弹框在didFinishLaunchingWithOptions中调用时出不来,可以将初始化放在applicationDidBecomeActive之后来避免这个为题,但需要注意的是不要重复初始化;
3.游戏本身的初始化最好在SDK的初始化结束并成功后开始,因为部分渠道的SDK有自动展示LOGO的功能,如果游戏的初始化先于SDK的初始化或两者并行可能会造成渠道的LOGO展示部出来或显示时间很短的BUG
遵守MIDGameOCSDKDelegate,并实现代理
@interface xxxx ()<MIDGameOCSDKDelegate>end//所有回调都基于此代理[MIDGameOCSDK shareInstance].delegate = self;
遵守MIDGameOCSDKDelegate
//初始化回调代理/// 初始化回调/// @param result 是否成功/// @param dict 返回内容- (void)InitCallBackWhitResult:(BOOL)result dict:(NSDictionary *)dict {//初始化回调结果if (result) {//初始化成功} else{//初始化失败}}
(1)对于coco2d-x引擎:
初始化接口必须放在cocos2d::CCApplication::sharedApplication()->run();之后,且需要添加代码self.window.rootViewController = viewController;
- (void)applicationDidBecomeActive:(UIApplication *)application{self.window.rootViewController = viewController;[window makeKeyAndVisible];NSLog(@"MIDGameSDK LOG:游戏开始初始化!");cocos2d::CCApplication::sharedApplication()→run();NSLog(@"MIDGameSDK LOG:SDK开始初始化");[[MIDGameOCSDK shareInstance] MIDSDKInit:viewController];}
(2)对于unity3d引擎:
初始化接口必须放在OnUnityReady();之后。
- (void)startUnity:(UIApplication*)application{OnUnityReady();//SDK初始化NSLog(@"MIDGameSDK LOG: SDK开始初始化");[[MIDGameOCSDK shareInstance] MIDSDKInit:unity根控制器];}
功能说明:
获取SDK接口是否可用
接口示例:
[[MIDGameOCSDK shareInstance] MIDSDKGetEnableInterface];
返回数据如下,NSDictionary格式
{
“SwitchAccount” : 1,
“Logout” : 1,
“RegisterLogin” : 1,
“EnterAppBBS” : 0,
“IsLogin” : 1,
“EnterPlatform” : 1
}
1: 表示接口可用
0: 表示接口不可用
返回数据说明:
切换账号接口 可用
注销账号接口 可用
注册登录接口 可用
进入论坛接口 不可用
登录状态接口 可用
用户中心接口 可用
功能说明:
获取SDK用户中心接口是否可用
接口示例:
[[MIDGameOCSDK shareInstance] MIDSDKGetIsEnterPlatform];
返回bool值,yes为可用No不可用;
功能说明:
获取SDK注销接口是否可用
接口示例:
[[MIDGameOCSDK shareInstance] MIDSDKGetIsLogout];
返回bool值,yes为可用No不可用;
功能说明:
获取SDK切换账号接口是否可用
接口示例:
[[MIDGameOCSDK shareInstance] MIDSDKGetIsSwitchAccount]
返回bool值,yes为可用No不可用;
功能说明:
获取当前SDK渠道信息
获取当前游戏包中的ServiceId,(游戏联运渠道ID,游戏可根据此ID区分各发行渠道)。
[[MIDGameOCSDK shareInstance] MIDSDKGetServiceId];
返回NSString字符串
获取当前游戏包中的ChannelId,(游戏推广渠道ID,含概CPS渠道,短链渠道等唯一标识)。
[[MIDGameOCSDK shareInstance] MIDSDKGetChannelId];
返回NSString字符串
获取当前游戏包中的LocaleId, (游戏发行区域ID)。
[[MIDGameOCSDK shareInstance] MIDSDKGetLocaleId];
返回NSString字符串
获取当前游戏包中的DeviceGroupId, (机型组ID)。
[[MIDGameOCSDK shareInstance] MIDSDKGetDeviceGroupId];
返回NSString字符串
功能说明:
在调用第三方app进行支付、分享、登录时,设置该接口,在完成后回调游戏。
接口定义:
- (BOOL)MIDSDKApplication:(UIApplication *)application handleOpenURL:(NSURL *)url;- (BOOL)MIDSDKApplication:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options;- (BOOL)MIDSDKApplication:(UIApplication *)application openURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
接口示例: (以下三个方法必须都添加)
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{if ([[MIDGameOCSDK shareInstance] MIDSDKApplication:application handleOpenURL:url]) {return YES;}return NO;}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)urlsourceApplication:(NSString *)sourceApplication annotation:(id)annotation{if([[MIDGameOCSDK shareInstance] MIDSDKApplication:application openURL:url sourceApplication:sourceApplication annotation:annotation]) {return YES;}return NO;}- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{if([[MIDGameOCSDK shareInstance] MIDSDKApplication:app openURL:url sourceApplication:[options valueForKey:@"UIApplicationOpenURLOptionsSourceApplicationKey"] annotation:[options valueForKey:@"UIApplicationOpenURLOptionsAnnotationKey"]]) {return YES;}return NO;}
功能说明:
通过从Info.plist文件中获取的MIDBase_AutoOrientation参数来设置游戏是否支持自动旋转。但还需要在appDelegate.mm中设置以下方法
接口定义:
- (BOOL)MIDSDKApplicationSupportedInterfaceOrientationsForWindow;- (NSUInteger)MIDSDKApplication:(UIApplication *_Nullable)application supportedInterfaceOrientationsForWindow:(UIWindow *_Nullable)window;
接口示例
- (NSUInteger)application:(UIApplication *)applicationsupportedInterfaceOrientationsForWindow:(UIWindow *)window{if ([[MIDGameOCSDK shareInstance] MIDSDKApplicationSupportedInterfaceOrientationsForWindow]) {return [[MIDGameOCSDK shareInstance] MIDSDKApplication:application supportedInterfaceOrientationsForWindow:window];}returnUIInterfaceOrientationMaskAll;}
功能说明:
用于控制界面旋转,请添加至rootViewController中
接口示例:
Objective-C- (BOOL)shouldAutorotate{return [[MIDGameOCSDK shareInstance] MIDSDKShouldAutoRotate];}Unity3DBOOL ShouldAutorotate_DefaultImpl(id self_, SEL _cmd){return [[MIDGameOCSDK shareInstance] MIDSDKShouldAutoRotate];}
功能说明:
在游戏进入前台时候调用,暂停页已封装入此接口,请添加至AppDelegate.mm中,U3D游戏为AppController.mm中
接口示例:
- (void)applicationWillEnterForeground:(UIApplication*)application{[[MIDGameOCSDK shareInstance] MIDSDKApplicationWillEnterForeground:application];}
功能说明
在游戏已经进入前台时候调用,请添加至AppDelegate.mm中,U3D游戏为AppController.mm中
接口示例:
- (void)applicationDidBecomeActive:(UIApplication*)application{[[MIDGameOCSDK shareInstance] MIDSDKApplicationDidBecomeActive:application];}
功能说明:
所有推送相关生命周期接口都需要接入
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{[MIDGameOCSDK.shareInstance MIDSDKApplication:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo{[MIDGameOCSDK.shareInstance MIDSDKApplication:application didReceiveRemoteNotification:userInfo];}- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{[[MIDGameOCSDK shareInstance] MIDSDKApplication:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];}- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{[MIDGameOCSDK.shareInstance MIDSDKApplication:application didFailToRegisterForRemoteNotificationsWithError:error];}

1.手机游戏客户端会调用sdk进行sdk初始化操作
2.sdk向用户中心服务器发起登录/注册的请求
3.用户中心服务器向sdk返回token、用户信息等等
4.sdk向返回游戏客户单登录结果和用户信息
5.游戏客户端上传用户信息到游戏服务器
6.服务器根据token向用户中心服务器获取用户信息
7.用户中心服务器向游戏服务器返回用户信息
8.游戏服务器向游戏客户端返回登录结果
功能说明:
登录用户中心。游戏客户端调用登录接口,登录成功后SDK会通过代理方法回调通知给游戏客户端。
接口定义:
//登录接口- (void)MIDSDKRegistLogin;
接口示例:
遵守MIDGameOCSDKDelegate
引入#import <MIDBaseFramework/MIDParamUserData.h>//回调函数- (void)RegistLoginCallBackWhitResult:(BOOL)result userData:(MIDParamUserData *)userData {if (result) {//用户登录成功,进入创建角色界面self.userData = userData;NSString *message = [NSString stringWithFormat:@"userName :\n%@\nuserID :\n%@\ntoken :\n%@\nloginType :\n%@\nnickName :\n%@\nuserServiceCode:\n%@", self.userData.username, self.userData.uid, self.userData.token, self.userData.logintype, self.userData.nickname,self.userData.userServiceCode];}else{//用户登录失败}}
返回的用户数据说明:
登录成功时
uid:平台分配的用户唯一id,区分大小写;
returnJson:第三方SDK平台返回的数据,一般情况下游戏无需关心;
token:分配的tokenId;
logintype:当前用户类型 speedy=快登用户、common=普通用户名密码用户、phone=手机号注册用户、email: 邮箱用户、thirdHidden=第三方隐性用户 、accessToken:token登录;
username:平台中的用户名;
userServiceCode: 用于服务端打点使用;
登录失败时
不返回用户数据
注意:
功能说明:
成功登录并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他功能接口中需要用到,如未调用则无法使用支付功能。用户首次创建或注册角色并登录时,需要调用一次注册设置和一次登录设置;用户使用老角色登录,则只需要调用一次登录设置。
注意:
1.游戏内没有角色注册行为的,在游戏自动给用户创建角色的时候,即认为注册。
2.用户首次创建或注册角色并登录时,需先调用注册设置,再调用登录设置。
3.研发需要在本地做基础判断,一些特殊符号不允许出现在角色名、公会名、队伍名、联盟名等名称中,具体符号_(, | { } “ ‘ \ / @ $ # & ! - + ( ) . ? ~ )^ *
接口定义:
- (void)MIDSDKSetGameLoginInfo:(MIDParamOC *)gameInfo gameType:(int)gameType;
参数说明:
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| GameInfo | 必须 | MIDGameInfo | 设置游戏账号信息 |
| GameType | 必须 | MIDGameType | 用户标识游戏角色注册登录状态,注册:kOCGameRegister; 登录:kOCGameLogin; 角色升级:kOCGameRoleUpgrade |
MIDParam参数说明:
| 参数名称 | 重要性 | 类型 | 说明 | |
|---|---|---|---|---|
| RoleName | 必须 | NSString | 游戏角色名称(不支持富文本) | |
| RoleId | 必须 | NSString | 游戏角色 id | |
| ServerId | 必须 | NSString | 游戏服务器id | |
| ServerName | 必须 | NSString | 游戏服务器名称 | |
| RoleLevel | 必须 | NSString | 游戏角色等级 | |
| RoleVipLevel | 必须 | NSString | 游戏角色vip等级 |
接口示例:
MIDParamOC *roleInfo = MIDParamOC.sharedInstance;roleInfo.RoleId = @"123456"; //游戏角色idroleInfo.RoleName = @"Jack"; //游戏角色名称roleInfo.ServerId = @"123"; //游戏服务器idroleInfo.ServerName = @"test"; //游戏服务器名称roleInfo.RoleLevel = @"1"; //游戏角色等级roleInfo.RoleVipLevel = @"1"; //游戏角色vip等级//游戏角色注册成功时调用[[MIDGameOCSDK shareInstance] MIDSDKSetGameLoginInfo:roleInfo gameType:kOCGameRegister];//游戏角色登录成功时调用[[MIDGameOCSDK shareInstance] MIDSDKSetGameLoginInfo:roleInfo gameType:kOCGameLogin];
功能说明:
注销当前登陆账号。注销成功后,SDK会通过代理方法回调通知给游戏客户端。
接口定义:
- (void)MIDSDKLogOut;
接口示例:
遵守MIDGameOCSDKDelegate
//回调函数- (void)LogOutCallBackWhitResult:(BOOL)result dict:(NSDictionary *)dict {//返回的字典数据格式说明调用登出接口,登出成功时{"Type":"Logout"}调用切换账号,登出成功时{"Type":"SwitchAccount"}}//注销接口[MIDGameOCSDK.shareInstance MIDSDKLogOut];
功能说明
游戏内切换账号功能,调用接口SDK会先拉起切换页面,用户切换完成后会通过切换账号回调返回用户信息.
接口定义
- (void)MIDSDKSwitchAccount;
接口示例
//回调函数- (void)SwitchAccountCallBackWhitResult:(BOOL)result userData:(MIDParamUserData * _Nullable)userData{NSLog(@"*********OC SwitchAccountCallBackWhitResult ******** ");if(result){//进入登录页面NSLog(@" 切换账号成功,进入登录页面 ");self.userData = userData;NSString *message = [NSString stringWithFormat:@"userName :\n%@\nuserID :\n%@\ntoken :\n%@\nloginType :\n%@\nnickName :\n%@\nuserServiceCode:\n%@", self.userData.username, self.userData.uid, self.userData.token, self.userData.logintype, self.userData.nickname,self.userData.userServiceCode];NSLog(@"SwitchAccount message = %@",message);}else{NSLog(@" 切换账号失败 ");}}//切换账号接口[MIDGameOCSDK.shareInstance MIDSDKSwitchAccount];
功能说明(支持2.1.5及以后版本)
游戏内绑定账号功能,调用接口SDK会先拉起绑定页面,用户绑定完成后会通过绑定账号回调返回用户绑定信息.
注意:
当前渠道带有切换账号功能时,游戏需要实现此接口逻辑进行游戏登录。切换账号分2种情况:
一是调用SDK的切换账号接口实现账号的切换,此类型的切换账号按钮是由游戏去实现,建议放到登录界面,切换账号成功后,登录数据会在此接口返回,游戏可执行游戏的登录流程,类似登录成功接口的回调。
二是渠道SDK的悬浮框或者用户中心页面带有切换账号功能,如用户点击切换账号并登录成功后,登录数据会在此接口返回,但如果当前游戏场景处于游戏中,游戏正常应该先返回到登录界面,然后再通过SDK切换账号成功返回的数据执行游戏的登录流程。
接口定义
- (void)MIDSDKBindAccount;
接口示例
/// 绑定回调/// @param result 绑定结果/// @param type 绑定三方类型/// @param dict 返回内容- (void)BindAccountCallBackWithResult:(BOOL)result thirdType:(NSString *)type userData:(MIDParamUserData *)userData{/*type:三方类型(海外)"GoogleLogin""FBLogin""appleLogin""TwitterLogin""GameCenterLogin"*/self.userData = userData;NSString *message = [NSString stringWithFormat:@"userName :\n%@\nuserID :\n%@\ntoken :\n%@\nloginType :\n%@\nnickName :\n%@\nuserServiceCode:\n%@", self.userData.username, self.userData.uid, self.userData.token, self.userData.logintype, self.userData.nickname,self.userData.userServiceCode];NSLog(@"SwitchAccount message = %@",message);}

1.sdk向计费服务器发起支付请求
2.计费服务器生成订单号,并向sdk返回支付结果
3.计费服务器通知游戏服务器发货
4.游戏服务器发送虚拟物品至玩家手机游戏客户端
5.游戏服务器向计费服务器返回发货结果
功能说明
游戏客户端通过调用计费接口,实现游戏中的道具购买。游戏客户端调用计费接口,计费成功后,SDK会通过代理方法通知游戏客户端。
接口定义:
- (void)MIDSDKChargeWithParams:(MIDPurchaseParamOC *)params;
参数说明
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| price | 必填 | NSString | 商品价格,单位详见基础码表(货币编码http://sdk.acegames.cn/t3/241/4774/1500009172.html)货币类型及对应ID |
| currencyType | 必填 | NSString | 货币类型,详见基础码表(货币编码http://sdk.acegames.cn/t3/241/4774/1500009172.html)货币类型及对应ID |
| propName | 必填 | NSString | 商品名称,不含数字 |
| propId | 必填 | NSString | 游戏自定义的商品ID,必传。 |
| propNum | 必填 | NSString | 商品数量,只能是数字 |
| propDescribe | 非必填 | NSString | 商品描述 |
| deleverUrl | 非必填 | NSString | 游戏发放道具服务器地址,用户支付成功后计费中心会回调此地址告知游戏进行道具发放。 可以配置到SDK后台。没有请填空字符串@”” |
| extendParams | 非必填 | NSString | 游戏自定义扩展参数 |
| gameRoleLevel | 非必填 | NSString | 游戏角色等级 |
| gameRoleVipLevel | 非必填 | NSString | 游戏角色VIP等级 |
回调说明
| 参数名称 | 类型 | 说明 |
|---|---|---|
| status | NSString | 支付状态(1:成功,0:失败,-1:支付结果未知) |
| ssId | NSString | 订单号,失败时可能为空 |
| propId | NSString | 商品ID,失败时可能为空 |
| code | NSString | 状态码(附录9.1) |
| msg | NSString | 描述信息 |
接口示例:
遵守MIDGameOCSDKDelegate
- (void)purchase:(UIButton *)btn{MIDPurchaseParamOC *params = MIDPurchaseParamOC.sharedInstance;params.price =@"1";//商品价格,以分为单位(必填)params.propId = @"1004";//商品id(必填)boringcat.diamond.1params.currencyType = @"1";//货币类型,人民币为1(必填)params.propName = @"10元宝";//商品名称,不含数字(必填)params.propNum = @"1";//商品数量params.propDescribe = @"";//商品描述(可选)params.deleverUrl = @"";//发货地址(可选)params.extendParams = @"";//扩展参数(可选)[MIDGameOCSDK.shareInstance MIDSDKChargeWithParams:params];//购买接口}//代理方法- (void)OnPurchaseResultWithResult:(NSString)status ssId:(NSString *)ssId propId:(NSString *)propId code:(NSString *)code msg:(NSString *)msg {NSString *des = [NSString stringWithFormat:@"status = %@ \n ssid = %@ \n propid = %@ \n code = %@ \n msg = %@" ,status , ssId, propId, code, msg];if ([status isEqualToString:@"1"]) {des = [NSString stringWithFormat:@"status = 成功 \n ssid = %@ \n propid = %@ \n code = %@ \n msg = %@" , ssId, propId, code, msg];NSLog(@"Onurchascallback success = %@",des);}else if ([status isEqualToString:@"0"]) {des = [NSString stringWithFormat:@"status = 失败 \n ssid = %@ \n propid = %@ \n code = %@ \n msg = %@" , ssId, propId, code, msg];NSLog(@"Onurchascallback failed = %@",des);}else{des = [NSString stringWithFormat:@"status = 未知 \n ssid = %@ \n propid = %@ \n code = %@ \n msg = %@" , ssId, propId, code, msg];NSLog(@"Onurchascallback otherError = %@",des);}}
游戏客户端通过调用礼包码接口,实现游戏中的礼包兑换。游戏客户端调用礼包码接口前,需要设置代理,兑换成功后,SDK会通过代理方法通知游戏客户端。
接口定义
/// 礼包码接口/// @param gameCode 礼包码/// @param deliverUrl URL/// @param extendParams 透传参数- (void)MIDSDKExchangeGameCode:(NSString *)gameCode deliverUrl:(NSString *)deliverUrl extendParams:(NSString *)extendParams;
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| gameCode | 必填 | NSString | 后台配置的礼包码 |
| deliverUrl | 可选 | NSString | 回调地址,没有需要填@””空字符串 |
| extendParams | 必填 | NSString | 拓展参数 |
接口示例
//调用[[MIDGameOCSDK shareInstance] MIDSDKExchangeGameCode:_customPayPrice.text deliverUrl:@"http://pay.acegames.cn/Paycall" extendParams:@""];//回调方法- (void)OnGamecodeResultWithResult:(BOOL)result code:(NSString *)code msg:(NSString *)msg {NSString *des = [NSString stringWithFormat:@"result = %@ \n code = %@ \n msg = %@" ,result ? @"yes" : @"no" , code, msg];if (result) {NSLog(@" OnGamecodeResult success = %@",des);}else{NSLog(@" OnGamecodeResult failed = %@",des);}}
功能说明:
进入用户中心界面。根据接口MIDSDKGetEnableInterface来判断当前渠道是否支持该接口。
接口示例:
[[MIDGameOCSDK shareInstance] MIDSDKEnterPaltform];
功能说明
调用native的webview显示页面,带有刷新、前进、后退、关闭的功能
调用时传入URL即可[MIDGameOCSDK.shareInstance MIDSDKOpenWebviewWithNavbarWithUrl:url];
研发上报游戏现在的进度,用于SDK标记游戏现在所处进度,并进行相关操作。
以悬浮层按钮开关为例:
SDK会在进入服务器列表时打开SDK悬浮功能条,
SDK会在离开服务器选择时关闭SDK悬浮功能条,
请研发上报事件时尽量准确。
/*** 游戏内事件,悬浮按钮定义*/typedef NS_ENUM(NSUInteger, MIDOCGameProcessEventType) {GAMEOC_PROCESS_EVENT_TYPE_IN_SELECT_SERVERLIST, /**< 进入到选择服务器列表页面。 */GAMEOC_PROCESS_EVENT_TYPE_OUT_SELECT_SERVERLIST, /**<离开选择服务器列表页面 */};
研发主动调用,传入不同的事件用于标记游戏现在所处进度
[[MIDGameOCSDK shareInstance] MIDSDKBaseSendGameProcessEventType:GAMEOC_PROCESS_EVENT_TYPE_IN_SELECT_SERVERLIST];
功能说明:
调用接口打开客服页面,根据接口MIDSDKGetIsEnterPlatform来判断当前渠道是否支持该接口。
[[MIDGameOCSDK shareInstance] MIDSDKUserFeedback];
功能说明:
登录完成或者切换账号完成以后在登录数据内返回serviceCode;
MIDParamUserData 对象内调用.userServiceCode。
功能说明:
调用获取CDN列表接口
[MIDGameOCSDK.shareInstance MIDSDKGetCdnPathList];
遵守MIDGameOCSDKDelegate
最后在回调里拿到CDN列表信息
/// cdn回调/// @param result 是否成功/// @param dict 返回内容- (void)UpdateCDNPathListenerWithResult:(BOOL)result dict:(NSDictionary *)dict {if (result) {NSLog(@"UpdateCDNPathListener = %@",dict);[self showMessage:[NSString stringWithFormat:@"%@",[dict objectForKey:@"domainList"]]];}else{NSLog(@"UpdateCDNPathListener = failed");[self showMessage:@"获取cdn失败"];}}
接口说明
/// 第三方广告接口/// @param event_key 事件/// @param dict 内容- (void)MIDSDKLogEvent:(NSString *)event_key dictionary:(NSDictionary *)dict;
接口示例
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];[dict setObject:[[MIDGameOCSDK shareInstance] MIDSDKGetUserId] forKey:@"userId"];[dict setObject:@"123456" forKey:@"roleId"];[[MIDGameOCSDK shareInstance] MIDSDKLogEvent:@"registration" dictionary:dict];
显示隐私协议页面
[[MIDGameOCSDK shareInstance] MIDSDKShowPrivacyView];
必看事项:
调用契机
1,仅在用户展示与您的应用程序的互动后才能要求评级。
2,不要中断用户,特别是当他们执行时间敏感或压力很大的任务时。例如一个购物 App 在用户正在下单的过程中弹出一个请求评分
3,不要像瘟疫。这是个比喻,意思为不要频繁请求评分,烦不胜烦!
4,不要使用按钮和其他控件来请求。因为这个 API 的响应机制受限于 App Store 策略,不受我们把控,谁都不希望点击按钮/控件之后无响应出现,搞得用户莫名其妙!
必看事项:
该接口在系统10.3及以上的设备中的同一个应用(线上)一年(365天)内只可以展示3次,是否展示由苹果自行处理不受我们控制(该接口需联网);10.3以下设备为跳转商店方式(同下接口),可多次调用,不受一年三次限制,但都受上面调用契机的限制,否则被苹果审核时发现可能会被打回拒审.
示例:
[[MIDGameOCSDK shareInstance] MIDSDKOpenStoreReview];
必看事项:
跳转商店方式(同下接口),可多次调用,不受一年三次限制,系统版本不限,但都受上面调用契机的限制,否则被苹果审核时发现可能会被打回拒审.
示例:
[[MIDGameOCSDK shareInstance] MIDSDKSkipStoreReview];
获取客户端真实IP , 登录成功以后获取。
[[MIDGameOCSDK shareInstance] getClientIP];
注:仅限海外多语言地区使用
如果研发有多语言需求,需要在启动后先设置语言,避免SDK展示语言和游戏展示语言不一致情况。
typedef NS_ENUM(NSUInteger, MIDOCLanguageType){kOCDefault=0,//默认英文kOCChinese,//简体kOCEnglish,//英语kOCKorean,//韩语kOCTaiwan,//繁体kOCGermany,//德语kOCRussia,//俄语kOCFrance,//法语kOCThailand,//泰语kOCSpain,//西班牙语kOCItaly,//意大利语kOCIndonesia,//印度尼西亚语kOCPortugal,//葡萄牙语kOCJapanese,//日语kOCTurkish,//土耳其kOCVietnam,//越南kOCNederlands,//荷兰kOCPolish,//波兰kOCNorwegian,//挪威kOCSwedish,//瑞典};[[MIDGameOCSDK shareInstance] MIDSDKSetLanguage:kOCDefault];
功能说明:
获取用户当前登录苹果账号充值币种,在需要时调用此接口,在回调里返回具体币种(需要游戏研发和运营确定好计费点,并通知技术支持在gsc后台配置后才能获取).
列表内每一项说明:
| key | 类型 | 说明 |
|---|---|---|
| gscProductId | String | 商品编码 |
| price | String | 商品价格。 列如:港币8块钱 此项为: 8.00 |
| title | String | 商品名 |
| productId | String | 商品在苹果后台的商品id |
| currency | String | 当前货币符号,列如: 港币 此项为:HKD |
| currencySymbol | String | 当前货币符号。列如:”$”, |
//接口[[MIDGameOCSDK shareInstance] MIDSDKGetCurrency];/****************************************************************************************/遵守MIDGameOCSDKDelegate最后在回调里拿到币种信息- (void)CurrencyCallBackWithCurrency:(NSDictionary *)dict {NSLog(@"当前币种 = %@",dict);NSArray *array = [dict objectForKey:@"array"];NSInteger count = [array count];for (int i = 0; i < count; i++) {NSDictionary *info = array[i];NSLog(@"info%d = %@",i,info);}dispatch_async(dispatch_get_main_queue(), ^{UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"demo提示"message:[NSString stringWithFormat:@"%@",dict]preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *enter = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];[alert addAction:enter];[self presentViewController:alert animated:YES completion:nil];});}
接口说明:获取当前隐私设置
/// 隐私协议结果监听- (void)MIDSDKGetGDPRPrivacy:(PrivacyfuncCallBack _Nullable )privacyCallBack;
调用方法:
SDK通过此回调返回给研发隐私协议选择状态。
在初始化的时候同时设置隐私协议回调。
SDK在首次安装 弹出隐私协议后返回。用户同意协议后每次启动SDK不在弹出隐私协议,但是SDK会返回同意状态。
[MIDGameOCSDK.shareInstance MIDSDKGetGDPRPrivacy:^(BOOL isAgreePrivacy, NSDictionary *result) {NSLog(@"用户%@了协议",isAgreePrivacy ? @"同意" : @"拒绝");}];
回调说明:
针对适应GDPR法案协议参数解释。其他地区只需要关心(isAgreePrivacy)是否同意即可。
| 参数 | 参数说明 |
|---|---|
| isAgreePrivacy | 是否同意了协议 |
| result | 同意详情。具体选择了那种模式 ,NSDictionary格式,GDPR专用,不适应GDPR法案的协议为null |
| personalizedDiscounts | [result objectForKey:@”personalizedDiscounts”]第一选项: 0:不同意;1:同意 |
| marketingPurposes | [result objectForKey:@”marketingPurposes”]第二选项:0:不同意;1:同意 |
需要和技术支持协商使用,
问卷调查ID需要在平台配置。
(透传参数数量不能超过10个)
接口说明:
/*** 打开问卷调查* @param QuestionId 问卷id* @param roleLv 角色等级* @param roleVipLv 角色vip等级* @param customParams 透传参数 研发自定义 可以为null,(透传参数数量不能超过10个)*/- (void)MIDSDKOpenQuestionnaireWithQuestionId:(NSString *_Nonnull)QuestionId roleLv:(NSString *_Nonnull)roleLv roleVipLv:(NSString *_Nonnull)roleVipLv customParams:(NSDictionary *_Nullable)customParams;
调用方法:
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];[dict setValue:@"value1" forKey:@"key1"];[dict setValue:@"value2" forKey:@"key2"];[[MIDGameOCSDK shareInstance] MIDSDKOpenQuestionnaireWithQuestionId:@"1" roleLv:@"44" roleVipLv:@"9" customParams:dict];
接口说明:角色登出时清除当前登录的角色信息
/// 角色登出- (void)MIDSDKClearRoleData;
调用方法:
/// 角色登出[[MIDGameOCSDK shareInstance] MIDSDKClearRoleData];
接口说明:
- (NSString *)MIDSDKGetClientLocationCountry; // 获取客户端国家
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKGetClientLocationCountry];
接口说明:
- (NSString *)MIDSDKGetClientLocationProvince; // 获取客户端省份
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKGetClientLocationProvince];
接口说明:当前仅支持登录公告样式,其他公告调用会出现异常.
//公告- (void)MIDSDKGetNoticeWithType:(int)noticeType ;
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKGetNoticeWithType:kOCNoticeLogin ;
接口说明:调用展示社区页面(需要在后台提前配置社区页面).
//论坛 默认颜色(#edededff)- (void)MIDSDKShowForumView;
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKShowForumView];
接口说明:调用展示社区页面(需要在后台提前配置社区页面).
//论坛 默认颜色(#edededff)/// - customparas: 透传参数,json格式字符串,可传空字符串- (void)MIDSDKShowForumView:(NSString *_Nullable)customparas;
调用方法:
//NSString *customparas = @"{"function":"topicId","data":"帖子ID"}";NSMutableDictionary *mDict = [[NSMutableDictionary alloc] init];[mDict setObject:@"topicId" forKey:@"function"];[mDict setObject:@"帖子ID" forKey:@"data"];NSString *customparas = [self convertToJsonData:mDict];//字典转字符串[[MIDGameOCSDK shareInstance] MIDSDKShowForumView:customparas];
customparas 介绍
| 字段 | 类型 | 介绍 |
|---|---|---|
| function | string | 功能标识;请参考下面function介绍 |
| data | string | 根据不同的function传递不同的数据 |
function介绍
| function固定值 | 类型 | 介绍 |
|---|---|---|
| topicId | string | 标识打开指定帖子,此时data中应该传帖子ID; |
| subjectId | string | 标识打开话题主页,此时data 中应该传话题id; |
| encyclopedia | string | 标识打开百科页面; data可以指定百科的URL地址; data没有值默认打开百科首页 |
| gift-bag | string | 标识打开礼包中心; |
| userCenter | string | 标识打开个人中心; 如果不填写该值,默认跳转到社区首页; |
接口说明:调用展示社区页面(需要在后台提前配置社区页面).
/// 社区设置背景颜色并透传参数/// - Parameters:/// - customparas: 透传参数,json格式字符串,可传空字符串/// - colorHex: 16进制颜色码例如:(0xff0000为红色),使用默认颜色(#edededff)可传空字符串- (void)MIDSDKShowForumView:(NSString *_Nullable)customparas colorHex:(NSString *_Nullable)colorHex;
调用方法:
NSMutableDictionary *mDict = [[NSMutableDictionary alloc] init];[mDict setObject:@"topicId" forKey:@"function"];[mDict setObject:@"帖子ID" forKey:@"data"];NSString *customparas = [self convertToJsonData:mDict];//字典转字符串[[MIDGameOCSDK shareInstance] MIDSDKShowForumView:customparas colorHex:@"0xff0000"];
customparas 介绍
| 字段 | 类型 | 介绍 |
|---|---|---|
| function | string | 功能标识;请参考下面function介绍 |
| data | string | 根据不同的function传递不同的数据 |
function介绍
| function固定值 | 类型 | 介绍 |
|---|---|---|
| topicId | string | 标识打开指定帖子,此时data中应该传帖子ID; |
| subjectId | string | 标识打开话题主页,此时data 中应该传话题id; |
| encyclopedia | string | 标识打开百科页面; data可以指定百科的URL地址; data没有值默认打开百科首页 |
| gift-bag | string | 标识打开礼包中心; |
| userCenter | string | 标识打开个人中心; 如果不填写该值,默认跳转到社区首页; |
功能说明:
调用打开社区接口
遵守MIDGameOCSDKDelegate
最后在回调里拿到社区开关信息
- (void)GetOpenForumViewCallBack:(BOOL)isOpen{//isOpen=true为打开,=false为关闭// NSString *open = [NSString stringWithFormat:@"社区%@", isOpen ? @"打开" : @"关闭"];NSLog(@"*********GetOpenForumViewCallBack********\n%@",isOpen ? @"open" : @"close");}
接口说明:用来判断当前客服接口是否可用.
/// 客服开关,返回yes时表示客服可用- (BOOL)MIDSDKCustomerServiceSwitch;
调用方法:
BOOL isOK = [[MIDGameOCSDK shareInstance] MIDSDKCustomerServiceSwitch];
接口说明:用来判断当前登录是否为游客.
/// 当前登录是否为游客,=yes为游客- (BOOL)MIDSDKIsSpeedyUser;
调用方法:
BOOL isOK = [[MIDGameOCSDK shareInstance] MIDSDKIsSpeedyUser];
接口说明:将传入的字符串复制到剪切板
/// 将字符串复制到剪切板/// - Parameter string: 需要剪切的字符串- (void)MIDSDKCopyStringtoPasteboard:(NSString *_Nonnull)string;
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKCopyStringtoPasteboard:@"需要复制的内容"];
接口说明:用来判断当前设备是否是刘海屏.
/// 客服开关,返回yes时表示客服可用- (BOOL)MIDSDKIsNotchScreen;
调用方法:
BOOL isOK = [[MIDGameOCSDK shareInstance] MIDSDKIsNotchScreen];
接口说明:用来获取屏幕除安全区域坐标.
/// 获取屏幕除安全区域坐标- (CGRect)MIDSDKGetScreenSafeArea;
调用方法:
CGRect safeRect = [[MIDGameOCSDK shareInstance] MIDSDKGetScreenSafeArea];float x = safeRect.origin.x;float y = safeRect.origin.y;float w = safeRect.size.width;float h = safeRect.size.height;
接口说明:用来获取当前设备ID.
/// 设备ID- (NSString *_Nullable)MIDSDKGetDeviceId;
调用方法:
NSString *deviceId = [[MIDGameOCSDK shareInstance] MIDSDKGetDeviceId];
接口说明:用来获取当前设备内存大小.
/// 设备内存- (NSString *_Nullable)MIDSDKGetPhysicalMemory;
调用方法:
NSString *deviceMemory = [[MIDGameOCSDK shareInstance] MIDSDKGetPhysicalMemory];
接口说明:用来获取当前语言.
/// 当前语言- (NSString *_Nullable)MIDSDKGetPreferredLanguage;
调用方法:
NSString *language = [[MIDGameOCSDK shareInstance] MIDSDKGetPreferredLanguage];
接口说明:
用于游戏自己生成的异常文件上报,
异常文件需要小于10兆。
/// 发送log文件日志/// - Parameters:/// - file: 文件路径/// - message: 透传信息- (void)MIDSDKSendLogWithFile:(NSString *_Nonnull)file message:(NSString *_Nonnull)message;
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKSendLogWithFile:文件路径 message:@"透传"];
接口说明:
用于同步给SDK当前游戏资源版本。
/// 设置游戏资源版本号/// - Parameter gameResVersion: 版本- (void)MIDSDKSetGameResVersion:(NSString *_Nonnull)gameResVersion;
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKSetGameResVersion:@"版本号"];
接口说明:
用于获取隐私协议开关状态。
/// 隐私协议开关- (BOOL)MIDSDKGetIsAgreement;
调用方法:
BOOL switch = [MIDGameOCSDK.shareInstance MIDSDKGetIsAgreement];
接口说明:
用于向用户分享邀请链接。
注意:
1.该功能需要先在appsflyer后台配置深链接功能并添加对应链接;
2.需将深链接根据文档第8.3条说明点击加号额外配置到Xcode工程的通用链接里。
3.该功能需要同步接入文档第7条分享功能。
/// 分享邀请深链接/// 与分享接口(MIDSDKShareThirdPlatformView/MIDSDKShareThirdPlatformWithChannel)共用一个回调(ShareThirdPlatformCallBackWithShareType)<参考文档7.3>/// - Parameter templateId: 模板 ID(appsflyer后台提供)/// - Parameter inviteMsg: 分享描述文字内容- (void)MIDBaseSDKShareInvite:(NSString *_Nonnull)templateId inviteMsg:(NSString *_Nonnull)inviteMsg;
调用方法:
[[MIDGameOCSDK shareInstance] MIDBaseSDKShareInvite:模板ID inviteMsg:文字描述];
以上接口会通过文档7.3条分享回调获取链接分享结果
接口说明:
用于获取af返回的归因数据。
| 参数key | 数据说明 | 数据值 |
|---|---|---|
| af_status | 是否买量 | Non-organic or Organic |
| adgroup | 广告素材名称 | 来源的广告素材,可能会是空的 |
| adset | 广告组名称 | 来源的广告组,可能会是空的 |
| campaign | 广告系列名称 | 来源的广告系列,可能会是空的 |
/// 获取af归因数据/// - Parameter key: 数据参数对应key(af_adset/af_status/campaign)- (NSString *_Nullable)getAFConversionData:(NSString *_Nonnull)key;
调用方法:
NSString *tmp = [MIDGameOCSDK.shareInstance MIDSDKGetAFConversionData:key];
注意:BaseSDK3.2.8版本启用
接口说明:
用于获取公告展示内容,
/// 获取af归因数据/// 获取公告内容- (void)MIDSDKGetNoticeContentWithType:(int)noticeType;
调用方法:
[[MIDGameOCSDK shareInstance] MIDSDKGetNoticeContentWithType:kOCNoticeActivity];
回调数据:
公告内容通过:NoticeContentCallBackWithResult 回调
- (void)NoticeContentCallBackWithResult:(BOOL)result size:(int)size dict:(NSDictionary *)dict {if (result) {if (!size) {NSLog(@"noticeContentCallBack未配置公告信息");}else{NSLog(@"noticeContentCallBack 获取成功");}}else{NSLog(@"noticeContentCallBack请求失败");}}
获取成功参数说明
| 参数名称 | 重要性 | 类型 | 说明 |
|---|---|---|---|
| size | 必须 | int | 本次获取到的公告条数,数量为0 则为未配置公告,需要联系运营配置需要的公告 |
| dict | 必须 | NSDictionary | 数组的公告内容,为获取到的公告数据 |
| dict.noticeId | 必须 | String | 公告在平台的编号 |
| dadictta.noticeType | 必须 | String | 公告类型;GAME_NOTICE_TYPE_LOGIN标识登录公告;GAME_NOTICE_TYPE_ACTIVITY标识活动公告; 登录公告是在进入游戏服之前展示,支持按渠道以及版本进行配置; 活动公告是进服后展示,支持按游戏服以及版本进行配置 |
| dict.noticeTitle | 必须 | String | 公告标题 |
| dict.contentType | 必须 | String | 公告内容的类型;text:文本;html:富文本 |
| dict.noticeContent | 必须 | String | 公告内容 |
需要在info.plist的URLtype中填写Facebook参数,id处填入”FacebookAppID”,红线处填入”fb+facebookid”格式,所需参数由运营提供
(图为谷歌和Facebook配置)
红线处填入FacebookID和name和token,参数由运营提供
<key>FacebookAppID</key><string>FacebookID</string><key>FacebookDisplayName</key><string>facebookname</string><key>FacebookClientToken</key><string>新增token</string>
<key>LSApplicationQueriesSchemes</key><array><string>fbshareextension</string><string>fb-messenger-api</string><string>fbapi</string><string>fbauth2</string><string>fbapi20130214</string><string>fbapi20130410</string><string>fbapi20130702</string><string>fbapi20131010</string><string>fbapi20131219</string><string>fbapi20140410</string><string>fbapi20140116</string><string>fbapi20150313</string><string>fbapi20150629</string><string>fbapi20160328</string><string>fbauth</string><string>fb-messenger-share-api</string><string>fbshareextension</string></array>
完成前置的[1.3.2]通过pod引入所需库。
新版Facebook9.0.0以上版本需支持swift桥接,步骤如下图:
打开xcode-file-new-file…
选择Swift File - Next
选择自己的项目工程打钩-点击create
点击create bridging header
同6.1.1Facebook接入图
需要在info.plist的URLtype中填写Google参数,id处填入”GoogleID”,红线处填入”com.googleusercontent.apps. + id”格式,所需参数由运营提供
GIDClientID配置和URLtype相反”id + .apps.googleusercontent.com”.
<key>GIDClientID</key><string>"googleid".apps.googleusercontent.com</string>
完成前置的[1.3.2]通过pod引入所需库。
目前仅支持”系统分享”的图片和链接分享功能
| 参数名 | 类型 | 重要性 | 说明 |
|---|---|---|---|
| OPSParam_ShareType | NSString | (必填) | OPShareImage |
| OPSParam_ImagePath | NSString | (必填) | 本地图片路径 |
| 参数名 | 类型 | 重要性 | 说明 |
|---|---|---|---|
| OPSParam_ShareType | NSString | (必填) | OPShareLink |
| OPSParam_ImagePath | NSString | (必填) | 本地图片路径 |
| OPSParam_Text | NSString | (必填) | 文本内容 |
| OPSParam_LinkTitle | NSString | (必填) | 链接标题 |
| OPSParam_LinkDesc | NSString | (必填) | 链接描述 |
| OPSParam_LinkUrl | NSString | (必填) | 链接地址 |
需引入头文件
#import <MIDBaseFramework/MIDSDKEnum.h>
//***************分享场景*******************#define SceneWeChat @"WeChat" //微信好友#define SceneWeChatLine @"WeChatLine" //微信朋友圈#define SceneQQ @"QQ" //QQ好友#define SceneQzone @"Qzone" //QQ空间#define SceneSinaWeibo @"SinaWeibo" //新浪微博#define SceneFacebook @"Facebook" //Facebook#define SceneTwitter @"Twitter" //Twitter#define SceneSystem @"System" //系统//***************分享参数********************#define OPSParam_ShareType @"ShareType" //分享类型标识#define OPShareText @"ShareText" //分享文本#define OPShareImage @"ShareImage" //分享图片#define OPShareLink @"ShareLink" //分享链接#define OPSParam_Text @"Text" //文本#define OPSParam_ImagePath @"ImagePath" //图片本地地址#define OPSParam_LinkTitle @"LinkTitle" //链接标题#define OPSParam_LinkDesc @"LinkDesc" //链接描述#define OPSParam_LinkUrl @"LinkUrl" //链接地址#define OPSParam_NOAPPID @"NOAPPID" //特殊参数,暂时无用
接口定义:
//第三方分享- (void)MIDSDKShareThirdPlatformView:(NSDictionary *_Nonnull)dict;
接口示例
//分享图片NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];NSString *filePath = [[NSBundle mainBundle] pathForResource:@"localPic" ofType:@"png"];[dic setObject:OPShareImage forKey:OPSParam_ShareType];[dic setObject:filePath forKey:OPSParam_ImagePath];[[MIDGameOCSDK shareInstance] MIDSDKShareThirdPlatformView:dic];==========================================================================//分享链接NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];NSString *filePath = [[NSBundle mainBundle] pathForResource:@"localPic" ofType:@"jpg"];[dic setObject:OPShareLink forKey:OPSParam_ShareType];[dic setObject:@"testTitle" forKey:OPSParam_LinkTitle];[dic setObject:@"http://sdk.acegames.cn/" forKey:OPSParam_LinkUrl];[dic setObject:@"testDesc" forKey:OPSParam_LinkDesc];[dic setObject:filePath forKey:OPSParam_ImagePath]; //多媒体内容中缩略图大小不能大于32K[[MIDGameOCSDK shareInstance] MIDSDKShareThirdPlatformView:dic];
接口定义:
/// 第三方分享回调/// @param shareType 分享类型/// @param errCode 错误码/// @param dict 返回内容- (void)ShareThirdPlatformCallBackWithShareType:(NSString *_Nonnull)shareType errCode:(int)errCode dict:(NSDictionary *_Nonnull)dict;
接口示例:
- (void)ShareThirdPlatformCallBackWithShareType:(NSString *)shareType errCode:(int)errCode dict:(NSDictionary *)dict {if (errCode == 1) {[self showMessage:[NSString stringWithFormat:@"%@分享成功",shareType]];}else if (errCode == 0){[self showMessage:[NSString stringWithFormat:@"%@分享取消",shareType]];} else {[self showMessage:[NSString stringWithFormat:@"%@分享失败",shareType]];}}
新版三方登录和分享支持URLlink,需增加实现生命周期方法接入
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{if ([[MIDGameOCSDK shareInstance] MIDSDKApplication:application continueUserActivity:userActivity restorationHandler:restorationHandler]) {return YES;}return NO;}
1.在通过系统分享拉起Twitter分享链接时,如果带缩略图则自动变成图片分享,无法正常分享链接;
2.在通过系统分享拉起Facebook分享链接时,无论带不带缩略图都不会显示缩略图;
3.建议海外版本在使用系统分享链接时不传缩略图.
整合了APPLOVINSDK,包含加载激励广告,打开激励广告等功能。点击链接查看详情
文档地址:http://sdk.acegames.cn/t3/241/4775/1500009574.html
在Xcode15及以上版本可以配置脚本,以在构建阶段自动上传符号表文件(已上传苹果后台的无法生效,只针对构建阶段上传),配置方式详见firebase文档(https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=ios&authuser=0&hl=zh-cn);
需根据文档配置到unity导出的工程内
https://sdk.acegames.cn/t3/241/4775/1500010117.html
整合了firebase推送和苹果原生推送,包含远程推送、本地推送、移除推送等。点击链接查看详情
文档地址:https://sdk.acegames.cn/t3/241/4775/1500010198.html
| 状态码 | 说明 |
|---|---|
| 101 | 连接超时 |
| 102 | 网络异常,请检查网络 |
| 103 | 数据异常 |
| 104 | SDK初始化参数错误 |
| 105 | SDK语言配置文件错误 |
| 106 | midgame.cfg配置文件错误 |
| 107 | SDK未初始化成功 |
| 108 | SDK未设置登录回调 |
| 109 | 未设置服务器id |
| 110 | 未设置价格 |
| 111 | 未设置货币类型 |
| 112 | 未设置商品名称 |
| 113 | 未设置商品id |
| 114 | 未设置虚拟货币单位 |
| 115 | 未设置虚拟货币数量 |
| 116 | 未设置发货地址 |
| 117 | 未设虚拟货币单位 |
| 118 | 未设商品数量 |
| 119 | 用户取消支付 |
| 120 | 支付失败 |
| 121 | 支付页面加载失败 |
| 122 | 登录状态有问题 |
| 123 | 订单不合法 |
| 129 | 未知错误,请重试 |
| 130 | 当前Apple ID无法购买商品,请联系Apple客服 |
| 131 | 用户取消购买 |
| 132 | 商品ID无效 |
| 133 | 此设备无法购买商品,请在[通用]-[访问权限]-[APP内购买]中开启 |
| 134 | 当前商品配置未生效 |
| 135 | 返回信息超时,请等待3-5分钟,查询是否充值成功 |
| 136 | 特殊错误,请重试 |
| 137 | 货币信息异常 被刷 |
| 138 | 货币码不实时 |
| 139 | 无效的商品列表 |
| 140 | 商品信息获取失败,请稍后再试 |
| 141 | 下单操作过于频繁 |
| 200 | 支付成功 |
| 201 | 下单成功 |
| 货币ID | 货币名称 | 货币单位 |
|---|---|---|
| 1 | 人民币 | 分 |
| 2 | 美元 | 美分 |
| 3 | 日元 | 円 |
| 4 | 港币 | 分 |
| 5 | 英镑 | 便士 |
| 6 | 新加坡币 | 分 |
| 7 | 越南盾 | 盾 |
| 8 | 台币 | 元 |
| 9 | 韩元 | 元 |
| 10 | 泰铢 | 萨当 |
