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 |