跳到主要内容

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.mapplication: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后才可用):

三方账号类型
AppleTOPLoginPlatformApple
GoogleTOPLoginPlatformGoogle
FacebookTOPLoginPlatformFacebook
LineTOPLoginPlatformLine
NAVERTOPLoginPlatformNaver
SnapchatTOPLoginPlatformSnapchat
KakaoTOPLoginPlatformKakao
TwitterTOPLoginPlatformTwitter

15 事件上报接口

说明:TOPSDK 已内置 TOPData,用于事件上报至集成的数据平台,如 Appsflyer、Firebase、Adjust。以下为事件上报相关接口说明。其中登录、注册、支付事件由 TOPSDK 自动上报,无需额外调用;其余事件可按业务需要手动调用。

调用 SDK 前请先引用:

#import <TOPData/TOPData.h>

15.1 登录事件(TOPSDK自动上报)

说明:在用户登录时触发,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust),无需自行调用。

接口:

+ (void)loginEventWithMethod:(NSString *)method;

参数:

  • method:登录使用的方法,比如:GOOGLEFACEBOOKGUEST

15.2 注册事件(TOPSDK自动上报)

说明:在新用户首次注册时触发,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust),无需自行调用。

接口:

+ (void)signupEventWithMethod:(NSString *)method;

参数:

  • method:登录使用的方法,比如:GOOGLEFACEBOOKGUEST

15.3 支付事件(TOPSDK自动上报)

说明:在用户支付成功时触发,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust),无需自行调用。

接口:

+ (void)purchaseEventWithData:(TOPPurchaseData *)data;

参数:

TOPPurchaseData 字段说明:

参数名类型介绍
revenuedouble价格,如:1.1
currencystring币种,如:USD
quantityint数量,默认1
productIdstring商品id,如:com.demo.item01
orderIdstring订单号,如:12131231231
receiptIdstring票据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;

参数:

参数名类型介绍
levelint等级,如:99
roleNamestring角色名,如:小黑

15.7 成就解锁事件

说明:可选事件,建议在游戏角色解锁成就时上报,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust)。

接口:

+ (void)unlockAchievementEventWithAchievementId:(NSString *)achievementId;

参数:

参数名类型介绍
achievementIdstring成就id,如:100001

15.8 分享事件

说明:可选事件,建议在触发分享时上报,此事件会上报至所有集成的数据平台(Appsflyer、Firebase、Adjust)。

接口:

+ (void)shareEventWithMethod:(NSString *)method
contentType:(NSString *)contentType
contentId:(NSString *)contentId;

参数:

参数名类型介绍
methodstring分享渠道,如:Facebook、Twitter、Email...
contentTypestring分享内容类型,如:图片、链接、视频、文本
contentIdstring分享内容id,如:活动id

15.9 获得虚拟货币事件

说明:可选事件,建议在玩家获得虚拟货币时调用,此事件仅会上报至 Firebase。

接口:

+ (void)earnVirtualCurrencyEventWithName:(NSString *)name
count:(NSInteger)count;

参数:

参数名类型介绍
namestring虚拟货币名称,如:宝石、钻石
countint虚拟货币数量,如:100

15.10 支出虚拟货币事件

说明:可选事件,建议在玩家支出虚拟货币时调用,此事件仅会上报至 Firebase。

接口:

+ (void)spendVirtualCurrencyEventWithName:(NSString *)name
count:(NSInteger)count
goodsName:(NSString *)goodsName;

参数:

参数名类型介绍
namestring虚拟货币名称,如:宝石、钻石
countint虚拟货币数量,如:100
goodsNamestring购买的商品名称,如:包月会员

15.11 游戏关卡开始事件

说明:可选事件,建议在玩家开始关卡时调用,此事件仅会上报至 Firebase。

接口:

+ (void)levelStartEventWithLevelName:(NSString *)levelName;

参数:

参数名类型介绍
levelNamestring关卡名称,如:1-1

15.12 游戏关卡结束事件

说明:可选事件,建议在玩家结束关卡时调用,此事件仅会上报至 Firebase。

接口:

+ (void)levelEndEventWithLevelName:(NSString *)levelName
success:(BOOL)success;

参数:

参数名类型介绍
levelNamestring关卡名称,如:1-1
successBool是否成功

15.13 自定义事件上报

说明:如果以上模板事件不能满足业务需求,可使用该接口进行自定义事件上报。

接口:

+ (void)reportEvent:(NSString *)eventName
params:(NSDictionary *)params
channelType:(TOPDataChannelType)channelType;

参数:

参数名类型介绍
eventNamestring事件名
paramsJSON Object参数
channelTypeTOPDataChannelType上报渠道类型,默认 TOPDataChannelTypeAll

TOPDataChannelType 说明:

类型说明
TOPDataChannelTypeAll上报到所有接入的数据平台,如:Appsflyer、Firebase、Adjust
TOPDataChannelTypeAppsFlyer仅上报到 Appsflyer
TOPDataChannelTypeFirebase仅上报到 Firebase
TOPDataChannelTypeAdjust仅上报到 Adjust