iOS SDK接口说明(OC语言)
1 获取SDK全局单例
说明:本SDK基于单例模式设计,必须使用该接口来获取SDK的唯一实例,才能正常使用SDK。后续接口(除获取SDK版本号接口外)都必须通过单例来调用
接口:
/// 获取全局SDK单例
+ (instancetype)sharedInstance;
调用方式:
[TopSDK sharedInstance];
2 初始化接口
说明:该接口用于进行SDK初始化操作,必须在调用SDK其他接口前尽早调用,初始化结果通过设置的delegate进行回调
接口:
/// 初始化方法(务必尽早调用)
/// @param appId 分配的应用id
- (void)initWithAppId:(NSString *)appId;
参数:
appId:由我方分配给CP的对应的应用id
completion:初始化结果回调
推荐在AppDelegate.m中application:didFinishLaunchingWithOptions:方法内进行初始化,如:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[TopSDK.sharedInstance initWithAppId:@"132168550394630144"];
return YES;
}
3 设置Delegate&Protocol
说明:通过设置代理的方式,获取事件调用的结果,如果要获取相关接口的回调,必须在调用该接口前设置代理(如:要获取initWithAppId:接口的回调,则必须在调用初始化接口前设置代理)
协议:
@required
/// SDK初始化结果回调
/// @param success 是否初始化成功
- (void)initSDKWithResult:(BOOL)success;
/// 登录成功回调
/// @param user 登录用户对象
- (void)didLoginSuccessWithUser:(TOPUser *)user;
/// 登录失败回调
/// @param error 错误信息
- (void)didLoginFailureWithError:(NSError *)error;
/// 支付成功回调
/// @param payment 支付信息
- (void)didPaySuccessWithPayment:(TOPPayment *)payment;
/// 支付失败回调
/// @param payment 支付信息
/// @param error 错误信息
- (void)didPayFailureWithPayment:(TOPPayment *)payment
error:(NSError *)error;
/// 登出成功回调
- (void)didLogoutSuccess;
/// 登出失败回调
/// @param error 错误信息
- (void)didLogoutFailureWithError:(NSError *)error;
@optional
/// 获取用户信息成功回调
/// @param user 用户信息
- (void)didGetUserInfoSuccessWithUser:(TOPUser *)user;
/// 获取用户信息失败回调
/// @param error 错误信息
- (void)didGetUserInfoFailureWithError:(NSError *)error;
/// 获取用户账号绑定信息成功回调
/// @param platforms 账号绑定的平台列表
- (void)didGetUserBindInfoSuccessWithPlatforms:(NSArray *)platforms;
/// 获取用户账号绑定信息失败回调
/// @param error 错误信息
- (void)didGetUserBindInfoFailureWithError:(NSError *)error;
/// 绑定账号成功回调
/// @param platform 绑定的平台
- (void)didBindSuccessWithPlatform:(NSString *)platform;
/// 绑定账号失败回调
/// @param platform 绑定的平台
/// @param error 错误信息
- (void)didBindFailureWithPlatform:(NSString *)platform error:(NSError *)error;
/// 查询商品信息成功
/// @param skuList 查询的sku列表
/// @param details 商品详情列表
- (void)didSuccessQuerySkuDetailsWithSkuList:(NSArray *)skuList details:(NSArray *)details;
/// 查询商品信息失败
/// @param skuList 查询的sku列表
/// @param error 错误信息
- (void)didFailedQuerySkuDetailsWithSkuList:(NSArray *)skuList error:(NSError *)error;
为获取这些事件回调,请将需要处理上述回调事件的对象设置为代理并支持TopSDKDelegate协议
比如需要在AppDelegate类中处理这些事件,则需在AppDelegate.m中进行如下设置:
#import "AppDelegate.h"
#import <TOPSDK/TopSDK.h>
// 1 在interface后面声明支持协议TopSDKDelegate
@interface AppDelegate ()<TopSDKDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 2 在initWithAppId:方法前设置delegate
TopSDK.sharedInstance.delegate = self;
[TopSDK.sharedInstance initWithAppId:@"132168550394630144"];
[TopSDK.sharedInstance application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [TopSDK.sharedInstance application:app openURL:url options:options];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [TopSDK.sharedInstance application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}
#pragma mark - TopSDKDelegate
- (void)initSDKWithResult:(BOOL)success {
if (success) {
// 初始化成功
} else {
// 初始化失败
}
}
- (void)didLoginSuccessWithUser:(TOPUser *)user {
// 登录成功,用户信息在user中
}
- (void)didLoginFailureWithError:(NSError *)error {
// 登录失败,error为错误信息
}
- (void)didLogout {
// 登出成功
}
- (void)didPaySuccessWithPayment:(TOPPayment *)payment {
// 支付成功,购买的商品信息在payment
}
- (void)didPayFailureWithPayment:(TOPPayment *)payment
error:(NSError *)error {
// 支付失败,购买的商品信息在payment,error为错误信息
}
- (void)didGetUserInfoSuccessWithUser:(TOPUser *)user {
// 获取用户信息成功,user为用户信息
}
- (void)didGetUserInfoFailureWithError:(NSError *)error {
// 获取用户信息失败,error为错误信息
}
- (void)didGetUserBindInfoSuccessWithPlatforms:(NSArray *)platforms {
// 获取用户绑定信息成功,绑定的平台类型包含在platforms中,例:@[@"APPLE",@"GOOGLE"]
}
- (void)didGetUserBindInfoFailureWithError:(NSError *)error {
// 获取用户绑定信息失败,error为错误信息
}
- (void)didBindSuccessWithPlatform:(NSString *)platform {
// 绑定账号成功,platform为绑定的平台类型,如:GOOGLE
}
- (void)didBindFailureWithPlatform:(NSString *)platform error:(NSError *)error {
// 绑定账号失败,platform为绑定的平台类型,error为错误信息
}
@end
4 登录接口
说明:调起SDK登录,登录结果会通过delegate进行回调(见4.2)
接口:
/// 登录方法
- (void)login;
调用方式:
[[TopSDK sharedInstance] login];
5 登出接口
说明:进行SDK登出,登出成功会通过delegate进行回调(见4.2)
接口:
/// 登出方法
- (void)logout;
调用方式:
[[TopSDK sharedInstance] logout];
6 支付接口
说明:调起苹果支付,支付结果会通过delegate进行回调(见4.2)
接口:
/// 调起支付
/// @param payment 支付商品信息
/// @param roleInfo 支付角色信息
- (void)payWithPayment:(TOPPayment *)payment role:(TOPRoleInfo *)roleInfo;
参数:
payment:商品信息,调起支付时必须传入:商品id(productId),可选传入:商品价格(amount)、商品名称(productName)
roleInfo:角色信息
回调:
/// 支付成功回调
/// @param payment 支付信息
- (void)didPaySuccessWithPayment:(TOPPayment *)payment;
/// 支付失败回调
/// @param payment 支付信息
/// @param error 错误信息
- (void)didPayFailureWithPayment:(TOPPayment *)payment
error:(NSError *)error;
调用方式:
TOPPayment *payment = [TOPPayment new];
// 这里传入商品id,商品id需在苹果开发者网站进行配置
payment.productId = @"com.TopSDK.product.01";
payment.amount = 1.0;
payment.productName = @"一元礼包";
payment.developerPayload = @"透传字段";
// 传入角色信息
TOPRoleInfo *role = [TOPRoleInfo new];
role.roleName = @"小明"; // 角色名
role.roleLevel = @"101"; // 角色等级
role.roleId = @"1001"; // 角色id
role.vipLevel = @"10"; // vip等级
role.serverName = @"1区"; // 服务器名称
// 调起支付
[[TopSDK sharedInstance] payWithPayment:payment role:role];
7 唤起用户中心接口
说明:用于唤起用户中心页面,页面会以全屏方式覆盖在当前界面上
接口:
/// 主动唤起用户中心
- (void)enterUserCenter;
调用方式:
[[TopSDK sharedInstance] enterUserCenter];
8 获取用户信息界面接口
说明:在登录成功后,用于获取用户信息
接口:
/// 获取用户信息
- (void)getUserInfo;
回调:
/// 获取用户信息成功回调
/// @param user 用户信息
- (void)didGetUserInfoSuccessWithUser:(TOPUser *)user;
/// 获取用户信息失败回调
/// @param error 错误信息
- (void)didGetUserInfoFailureWithError:(NSError *)error;
调用方式:
[[TopSDK sharedInstance] getUserInfo];
9 获取账号绑定信息接口
说明:在登录成功后,用于获取当前登录用户的账号绑定信息
接口:
/// 获取账号绑定信息
- (void)getUserBindInfo;
回调:
/// 获取用户账号绑定信息成功回调
/// @param platforms 账号绑定的平台列表
- (void)didGetUserBindInfoSuccessWithPlatforms:(NSArray *)platforms;
/// 获取用户账号绑定信息失败回调
/// @param error 错误信息
- (void)didGetUserBindInfoFailureWithError:(NSError *)error;
调用方式:
[[TopSDK sharedInstance] getUserBindInfo];
10 绑定账号接口
说明:在登录成功后,用于绑定其他的第三方账号
接口:
/// 绑定账号
/// @param platform 需要绑定的第三方平台,如:TOPLoginPlatformGoogle,见TopSDKCommon.h
- (void)bindPlatform:(NSString *)platform;
参数:
- platform:需要绑定的第三方平台,如:TOPLoginPlatformGoogle,具体见
5 支持三方账号类型
回调:
/// 绑定账号成功回调
/// @param platform 绑定的平台
- (void)didBindSuccessWithPlatform:(NSString *)platform;
/// 绑定账号失败回调
/// @param platform 绑定的平台
/// @param error 错误信息
- (void)didBindFailureWithPlatform:(NSString *)platform error:(NSError *)error;
调用方式:
[TopSDK.sharedInstance bindPlatform:TOPLoginPlatformGoogle];
11 查询商品接口
说明:通过平台官方接口(AppStore)查询指定商品的详情
接口:
/// 查询商品信息
/// @param skuList 商品id列表
- (void)querySkuDetailsOut:(NSArray *)skuList;
参数:
- skuList:需要查询的商品id列表
回调:
/// 查询商品信息成功
/// @param skuList 查询的sku列表
/// @param details 商品详情列表
- (void)didSuccessQuerySkuDetailsWithSkuList:(NSArray *)skuList details:(NSArray *)details;
/// 查询商品信息失败
/// @param skuList 查询的sku列表
/// @param error 错误信息
- (void)didFailedQuerySkuDetailsWithSkuList:(NSArray *)skuList error:(NSError *)error;
调用方式:
[[TopSDK sharedInstance] querySkuDetailsOut:@[
@"com.topsdk.product.01",
@"com.topsdk.product.02",
@"com.topsdk.product.03",
@"com.topsdk.product.04"
]];
12 应用生命周期事件接口
SDK需要获取应用的生命周期事件以进行后续处理,因此请在应用代理类(Unity一般为UnityAppController.mm,Cocos一般为AppDelegate.mm,iOS原生工程一般为AppDelegate.m)中添加对应的方法,具体如下:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[TopSDK.sharedInstance application:application didFinishLaunchingWithOptions:launchOptions];
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [TopSDK.sharedInstance application:app openURL:url options:options];
}
// 仅iOS9以下版本需要添加
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [TopSDK.sharedInstance application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
[TopSDK.sharedInstance applicationDidEnterBackground:application];
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
[TopSDK.sharedInstance applicationWillEnterForeground:application];
}
如果App实现了UIWindowSceneDelegate,请在其应用代理类(一般为SceneDelegate.m)中添加如下方法:
- (void)sceneWillEnterForeground:(UIScene *)scene {
[TopSDK.sharedInstance sceneWillEnterForeground:scene];
}
- (void)sceneDidEnterBackground:(UIScene *)scene {
[TopSDK.sharedInstance sceneDidEnterBackground:scene];
}
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts {
[TopSDK.sharedInstance scene:scene openURLContexts:URLContexts];
}
13 获取SDK版本号
说明:用于获取SDK版本号的接口
接口:
/// 获取当前SDK的版本号
+ (NSString *)getSDKVersion;
调用方式:
NSString *sdkVersion = [TopSDK getSDKVersion];
14 支持三方账号类型
当前支持的三方账号类型如下(需接入对应的三方SDK后才可用):
| 三方账号 | 类型 |
|---|---|
| Apple | TOPLoginPlatformApple |
| TOPLoginPlatformGoogle | |
| TOPLoginPlatformFacebook | |
| Line | TOPLoginPlatformLine |
| NAVER | TOPLoginPlatformNaver |
| Snapchat | TOPLoginPlatformSnapchat |
| Kakao | TOPLoginPlatformKakao |
| TOPLoginPlatformTwitter |
15 事件上报接口
说明:TOPSDK 已内置 TOPData,用于事件上报至集成的数据平台,如 Appsflyer、Firebase、Adjust。以下为事件上报相关接口说明。其中登录、注册、支付事件由 TOPSDK 自动上报,无需额外调用;其余事件可按业务需要手动调用。
调用 SDK 前请先引用:
#import <TOPData/TOPData.h>
15.1 登录事件(TOPSDK自动上报)
说明:在用户登录时触发,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust),无需自行调用。
接口:
+ (void)loginEventWithMethod:(NSString *)method;
参数:
- method:登录使用的方法,比如:
GOOGLE、FACEBOOK、GUEST
15.2 注册事件(TOPSDK自动上报)
说明:在新用户首次注册时触发,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust),无需自行调用。
接口:
+ (void)signupEventWithMethod:(NSString *)method;
参数:
- method:登录使用的方法,比如:
GOOGLE、FACEBOOK、GUEST
15.3 支付事件(TOPSDK自动上报)
说明:在用户支付成功时触发,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust),无需自行调用。
接口:
+ (void)purchaseEventWithData:(TOPPurchaseData *)data;
参数:
TOPPurchaseData 字段说明:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| revenue | double | 价格,如:1.1 |
| currency | string | 币种,如:USD |
| quantity | int | 数量,默认1 |
| productId | string | 商品id,如:com.demo.item01 |
| orderId | string | 订单号,如:12131231231 |
| receiptId | string | 票据id,如:awdfaqwdfqcs |
15.4 开始新手引导事件
说明:可选事件,建议在新手引导开始时上报,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust)。
接口:
+ (void)tutorialBeginEvent;
15.5 完成新手引导事件
说明:可选事件,建议在新手引导结束时上报,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust)。
接口:
+ (void)tutorialCompleteEvent;
15.6 升级事件
说明:可选事件,建议在游戏角色升级时上报,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust)。
接口:
+ (void)levelUpEventWithLevel:(NSInteger)level
roleName:(NSString *)roleName;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| level | int | 等级,如:99 |
| roleName | string | 角色名,如:小黑 |
15.7 成就解锁事件
说明:可选事件,建议在游戏角色解锁成就时上报,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust)。
接口:
+ (void)unlockAchievementEventWithAchievementId:(NSString *)achievementId;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| achievementId | string | 成就id,如:100001 |
15.8 分享事件
说明:可选事件,建议在触发分享时上报,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust)。
接口:
+ (void)shareEventWithMethod:(NSString *)method
contentType:(NSString *)contentType
contentId:(NSString *)contentId;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| method | string | 分享渠道,如:Facebook、Twitter、Email... |
| contentType | string | 分享内容类型,如:图片、链接、视频、文本 |
| contentId | string | 分享内容id,如:活动id |
15.9 获得虚拟货币事件
说明:可选事件,建议在玩家获得虚拟货币时调用,此事件仅会上报至 Firebase。
接口:
+ (void)earnVirtualCurrencyEventWithName:(NSString *)name
count:(NSInteger)count;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| name | string | 虚拟货币名称,如:宝石、钻石 |
| count | int | 虚拟货币数量,如:100 |
15.10 支出虚拟货币事件
说明:可选事件,建议在玩家支出虚拟货币时调用,此事件仅会上报至 Firebase。
接口:
+ (void)spendVirtualCurrencyEventWithName:(NSString *)name
count:(NSInteger)count
goodsName:(NSString *)goodsName;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| name | string | 虚拟货币名称,如:宝石、钻石 |
| count | int | 虚拟货币数量,如:100 |
| goodsName | string | 购买的商品名称,如:包月会员 |
15.11 游戏关卡开始事件
说明:可选事件,建议在玩家开始关卡时调用,此事件仅会上报至 Firebase。
接口:
+ (void)levelStartEventWithLevelName:(NSString *)levelName;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| levelName | string | 关卡名称,如:1-1 |
15.12 游戏关卡结束事件
说明:可选事件,建议在玩家结束关卡时调用,此事件仅会上报至 Firebase。
接口:
+ (void)levelEndEventWithLevelName:(NSString *)levelName
success:(BOOL)success;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| levelName | string | 关卡名称,如:1-1 |
| success | Bool | 是否成功 |
15.13 自定义事件上报
说明:如果以上模板事件不能满足业务需求,可使用该接口进行自定义事件上报。
接口:
+ (void)reportEvent:(NSString *)eventName
params:(NSDictionary *)params
channelType:(TOPDataChannelType)channelType;
参数:
| 参数名 | 类型 | 介绍 |
|---|---|---|
| eventName | string | 事件名 |
| params | JSON Object | 参数 |
| channelType | TOPDataChannelType | 上报渠道类型,默认 TOPDataChannelTypeAll |
TOPDataChannelType 说明:
| 类型 | 说明 |
|---|---|
| TOPDataChannelTypeAll | 上报到所有接入的数据平台,如:Appsflyer、Firebase、Adjust |
| TOPDataChannelTypeAppsFlyer | 仅上报到 Appsflyer |
| TOPDataChannelTypeFirebase | 仅上报到 Firebase |
| TOPDataChannelTypeAdjust | 仅上报到 Adjust |