跳到主要内容

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