1 支付有关
1.1 查询商品本地价格
通过查询商品信息,可以获取库存商品的本地价格,查询商品本地价格调用接口:
+ (void)queryChannelProduct:(NSString )channel
callBackBlock:(void(^)(NSArray
代码示例
1 2 3 4 |
[WAPayProxy queryChannelProduct:@"APPLE" callBackBlock:^(NSArray<WAChannelProduct *> *channelProductsArray, NSError *error) { if (!error) { }}]; |
注意:这个接口需要在查询库存商品( queryInventoryWithDelegate)成功回调后使用。
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
chanel | NSString | Y | 渠道名称 | 如苹果渠道 APPLE |
实体结果说明 WAChannelProduct:
字段名 | 类型 | 说明 | 备注 |
---|---|---|---|
channel | NSString | 渠道名称 | 传递的channel |
productIdentifiere | NSString | 平台商品id | |
localeCurrencyCode | NSString | 本地货币code | USD 、CNY |
localFormattedPrice | NSString | 格式化价格 | $999.99 、 ¥6,498.00 |
price | NSDecimalNumber | 价格 | 999.99、 6498 |
1.2支付服务是否可用
通过以下接口可以获取支付服务是否可用,返回boolean类型结果,true为可用,false为不可用,只要有一个支付渠道可用即为true:
+(BOOL)isPayServiceAvailable;
代码示例:
1 2 |
[WAPayProxy isPayServiceAvailable]; |
2 . 隐私政策
如果CP对接的登录方式是接口登录方式,则可以使用以下几个接口来实现隐私政策流程,具体流程可参考下图。
2.1 获取隐私政策url
WINGSDK有自己的隐私政策,调用以下接口获取到隐私政策url(隐私政策内容为html页面)
1 2 |
+(NSString *)getPrivacyUrl |
示例:
1 2 |
[WACoreProxy getPrivacyUrl]; |
2.2 获取隐私政策更新时间
隐私政策更新需要重新显示时可以调用以下接口获取最新隐私政策更新时间,和上一次保存的时间戳作对比,从而确定是否需要展示
1 2 |
+(NSString *)getPrivacyUpdateTime |
示例:
1 2 |
[WACoreProxy getPrivacyUpdateTime]; |
2.3 显示隐私政策详情UI
当需要显示隐私政策详情时,可以调用以下接口显示出隐私政策详情界面
1 2 |
+(void)showPrivacyUI:(void(^)())privacyUIClosedHandler |
示例:
1 2 3 4 |
[WACoreProxy showPrivacyUI:^(){ // 已关闭隐私政策回调 }]; |
3 公共设置
WINGSDK包括serverId等公共参数,这些参数主要用于数据跟踪和统计。公共参数必须严格按照文档进行配置,在后续的接口中会使用到这些公共的参数,没有按照要求配置会导致部分接口调用失败。
3.1 设置服务器ID
当用户的服务器ID发生改变时,需要调用设置服务器ID接口设置新的服务器ID,例如每次进入服务器:
1 2 |
[WACoreProxy setServerId: @"127.0.0.1"]; |
注意:设置服务器ID的操作在每次选服后都需要进行,必须在调用其他接口前设置。
3.2 设置用户gameUserId
用户在选择服务器并且登录之后将用户gameUserId设置到SDK中以便于跟踪。
1 2 |
[WACoreProxy setGameUserId:@"12345"]; |
3.3 设置用户等级level
设置游戏玩家的角色等级,调用接口:
1 2 |
[WACoreProxy setLevel:10]; |
注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级,必须在调用其他接口前设置。
3.4 设置玩家昵称
设置游戏玩家的昵称,调用接口:
1 2 |
[WACoreProxy setNickName:@"测试角色名称"]; |
注意:
1.当玩家登录、登出游戏,或修改昵称时,需要及时调用这个接口设置玩家昵称。
2.调用该接口设置昵称后,玩家进行购买时会自动记录昵称到订单信息中。
4 登录有关
4.1 应用内登录
SDK平台应用内登录,是指CP本身有自己登录系统,先登录CP后台拿到用户信息后登录SDK后台,应用内登录调用接口用户登录接口 ,登录平台取值APPSELF(WA_PLATFORM_APPSELFLOGIN),将CP后台返回的用户信息按照规定格式(JSON字符串)通过extInfo字段传入。
应用内登录extInfo格式(标准JSON格式字符串)
1 2 3 4 5 6 7 |
{ "appSelfLogin": true, "puserId": "12345", "accessToken": "o1akkfjia81FMvFSO8kxC96TgQYlheEr", "extInfo": "extInfo String" } |
实例:
1 2 3 |
NSString* extra = @"{\"puserId\":\"12345\",\"extInfo\":\"extInfo String\",\"accessToken\":\"o1akkfjia81FMvFSO8kxC96TgQYlhEEr\",\"appSelfLogin\":true}"; [WAUserProxy loginWithPlatform:WA_PLATFORM_WINGA extInfo: extra delegate:self]; |
字段说明:
字段名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
appSelfLogin | boolean | 应用内登录固定值true | Y | |
puserId | String | CP用户id | Y | |
accessToken | String | CP用户Token | Y | |
extInfo | String | 额外信息 | N | CP 扩展信息字段,限长512,WING服务器到CP服务器验证登录时原样返回给CP。CP可以添加任意自定义的字段(JSON格式),用于检验登录或扩展其它功能,不超过长度限制即可。 |
4.2 登录高级设置
使用该接口需注意以下两点:
1)一般来说,如果应用登录的时候有登录方式选择界面,就不需要使用此接口,此接口默认是这种方式(取值为1)。
2)这个接口主要是用来满足以下需求:用户第一次登录是以游客方式进行登录,进到应用里面可以切换其它登录方式,下次登录会直接以切换后的账户进行登录(取值为2)。
1 2 |
+(void)setLoginFlowType:(int)flowType; |
代码示例:
1 2 |
[WAUserProxy setLoginFlowType:WA_LOGIN_FLOW_TYPE_DEFAULT]; |
登录流程有两种模式,在WAConstants类中定义,取值如下表:
名称 | 取值 | 备注 |
---|---|---|
WA_LOGIN_FLOW_TYPE_DEFAULT | 1 | 适用于有登录界面的场景,登录的时候不会重新绑定设备 |
WA_LOGIN_FLOW_TYPE_REBIND | 2 | 适用于无登录界面的场景,登录时重新将新账号与当前设备绑定,如在游戏中切换账户,切换以后的匿名登录是以切换后的账户进行登录。 |
5 账户管理
5.1 关于绑定解绑的通知
账户管理界面没有返回绑定和解绑结果,但是会以通知的方式将结果回调给CP。当绑定有结果之后(无论成功失败),将回传一个WABindingResult实例。当解绑有结果(无论成功失败),将回传一个WAAccount实例。有四个通知,分别是绑定成功、绑定失败、解绑成功、解绑失败,通知的名称分别是以下常量:
WABindDidSucceedNotification;
//绑定成功
WABindDidFailNotification;
//绑定失败
WAUnbindDidSucceedNotification;
//解绑成功
WAUnbindDidFailNotification;
//解绑失败
注:关于绑定facebook成功之后,请注意触发邀请奖励。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//接收通知的方法 -(void)bindDidSucceed:(NSNotification*)noti{ if (noti.object) { WABindingResult* result = noti.object; if ([result.platform isEqualToString:WA_PLATFORM_FACEBOOK]) { [WASocialProxy inviteInstallRewardPlatform:WA_PLATFORM_FACEBOOK TokenString:result.accessToken handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //触发被邀请人安装应用事件接口成功 }else{ //触发被邀请人安装应用事件接口失败 } }]; } } } |
5.2 绑定第三方平台账户
5.2.1 实现协议WAAccountBindingDelegate
说明:关于APPLE账号的绑定,请参考实现协议WALoginDelegate中定义的方法的说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
(1)绑定成功 /*! @abstract 绑定成功 @param result 绑定的账户信息 */ -(void)bindingDidCompleteWithResult:(WABindingResult*)result; (2)绑定失败 /*! @abstract 绑定失败 @param result 绑定的账户信息 @param error 错误 */ -(void)bindingDidFailWithError:(NSError*)error andResult:(WABindingResult*)result; (3)绑定取消 /*! @abstract 绑定取消 @param result 绑定的账户信息(注:返回的result只有platform有值) */ -(void)bindingDidCancel:(WABindingResult*)result; |
5.3 调用方法
+(void)bindingAccountWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WAAccountBindingDelegate>)delegate;
绑定平台取值:
名称 | 取值 | 备注 |
---|---|---|
WA_PLATFORM_FACEBOOK | FACEBOOK平台 | |
WA_PLATFORM_APPLE | APPLE | APPLE平台 |
WA_PLATFORM_VK | VK | VK平台 |
示例代码:
1 2 |
[WAUserProxy bindingAccountWithPlatform:WA_PLATFORM_FACEBOOK extInfo:nil delegate:self]; |
5.4 查询已经绑定的第三方平台账户
通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:
+(void)queryBoundAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WAUserProxy queryBoundAccountWithCompleteBlock:^(NSError *error, NSArray<WAAccount *> *accounts) { if (error) { //失败处理 }else{ //成功 } }]; |
5.5 解绑第三方平台账户
通过以下接口,可以解绑已经绑定的第三方平台账户:
+(void)unBindAccountWithPlatform:(NSString *const)platform platformUserId:(NSString*)pUserId completeBlock:(void(^)(NSError* error))completeBlock;
有以下情况之一者,不可解绑:
1.解绑的账户为WINGSDK平台的;
2.用户没有绑定第三方平台账户的;
3.用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的。
示例代码:
1 2 3 4 5 6 7 8 |
[WAUserProxy unBindAccountWithPlatform:_accountSelected.platform platformUserId:_accountSelected.pUserId completeBlock:^(NSError *error) { if (error) { //失败处理 }else{ //成功处理 } }]; |
5.6 切换账户
使用以下接口可以快速切换登录的账户
+(void)switchAccountWithPlatform:(NSString *const)platform completeBlock:(void(^)(NSError* error,WALoginResult* result))completeBlock;
5.7 新建账户
+(void)createNewAccountWithCompleteBlock:(void(^)(NSError* error,WALoginResult* result))completeBlock;
新建账户后,新的账户会跟当前设备绑定,如果之前的账户没有绑定第三方平台账户,数据将会丢失。
代码示例:
1 2 3 4 5 6 7 8 |
[WAUserProxy createNewAccountWithCompleteBlock:^(NSError *error, WALoginResult *result) { if (!error) { //新建账号成功 }else{ //新建账号失败 } }]; |
5.8获取账户信息
SDK提供了获取指定平台的账户信息,可以通过以下接口获取:
+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;
示例代码:
1 2 |
WAAppUser* appUserId = [WAUserProxy getAccountInfoWithPlatform:WA_PLATFORM_VK]; |
6 AiHelp有关
6.1.判断是否开启游戏评分AiHelp
说明:该接口返回布尔值,YES表示已开启,NO表示未开启。在使用其他AIHELP接口前请先判断这个接口,在返回YES的情况下使用。示例如下:
1 2 3 4 |
if([WACscProxy isOpenGameReviewAiHelp]){ [WACscProxy openGameReviewAiHelp]; } |
6.2. 打开游戏评分AiHelp界面
说明:该接口受WING后台中参数设置-客户端-游戏评价开关
控制。如果后台未开启开关,此接口不生效。
调用示例:
1 2 3 4 |
if([WACscProxy isOpenGameReviewAiHelp]){ [WACscProxy openGameReviewAiHelp]; } |
6.3.设置客服系统语言
1 2 |
+ (void)setLanguage:(nonnull NSString *)language |
示例代码:
1 2 |
[WACscProxy setLanguage:@"zh_CN"]; |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
language | NSString | Y | 语言名称 | 语言支持如下图 |
语言支持列表图:
7 调用评分界面
cp可根据需求,调用appStore评分界面,调用方法
1 2 |
[WAUserProxy openReview]; |
系统要求:iOS10.3及以上系统才可以调起评分界面。
8 删除账号接口
8.1 第三方账号注销授权接口
描述:如果是SIGGINWITHAPPLE登录(可通过接口[WAUserProxy getCurrentLoginPlatform]获取登录方式),需要单独授权一次拿到授权信息,然后再调用请求删除账号接口,目前只支持SIGGINWITHAPPLE
类名:WAUserProxy
方法名:deleteAccounAuthorizationWithPlatform
请求参数:paltform,登录平台
调用方法:WAUserProxy.deleteAccounAuthorizationWithPlatform
调用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
if ([[WAUserProxy getCurrentLoginPlatform] isEqualToString:WA_PLATFORM_SIGNINWITHAPPLE]) { [WAUserProxy deleteAccounAuthorizationWithPlatform:WA_PLATFORM_SIGNINWITHAPPLE completeBlock:^(NSError *error, WADeleteRequestModel *deleteResult) { // 删除账号接口 [WAUserProxy requestDeleteAccout:deleteResult completeBlock:^(NSError *error, WADeleteResult *result) { if(error){ [self showToastMessage:error.userInfo[WAErrorDeveloperMessageKey]]; return; } [WAUserProxy logout]; NSLog(@"注销成功,cp需要退出sdk登录,以及cp退出登录页"); NSLog(@"申请时间==%@",result.apply_date); NSLog(@"删除时间==%@",result.delete_date); }]; }]; } |
WADeleteRequestModel说明
字段名 | 类型 | 说明 | 备注 |
---|---|---|---|
deletePlatform | string | 删除平台(Facebook,Apple) | — |
deleteToken | string | 删除平台accessToken | — |
8.2 请求删除账号接口
类名:WAUserProxy
方法名:requestDeleteAccout
请求参数:(WADeleteRequestModel*)deleteResult,如无则传递nil。此参数通过调用第三方账号注销授权接口回掉获取。如signinwithappie需要传递此参数
返回值:callback
调用方法:WAUserProxy.requestDeleteAccout
调用示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
if ([[WAUserProxy getCurrentLoginPlatform] isEqualToString:WA_PLATFORM_SIGNINWITHAPPLE]) { [WAUserProxy deleteAccounAuthorizationWithPlatform:WA_PLATFORM_SIGNINWITHAPPLE completeBlock:^(NSError *error, WADeleteRequestModel *deleteResult) { // 删除账号接口 [WAUserProxy requestDeleteAccout:deleteResult completeBlock:^(NSError *error, WADeleteResult *result) { if(error){ [self showToastMessage:error.userInfo[WAErrorDeveloperMessageKey]]; return; } [WAUserProxy logout]; NSLog(@"注销成功,cp需要退出sdk登录,以及cp退出登录页"); NSLog(@"申请时间==%@",result.apply_date); NSLog(@"删除时间==%@",result.delete_date); }]; }]; } |
8.3 取消删除账号接口
类名:WAUserProxy
方法名:cancelRequestDeleteAccoutWithUserid
返回值:callback
调用方法:WAUserProxy.cancelRequestDeleteAccoutWithUserid
调用示例:
1 2 3 4 5 6 7 8 |
[WASdkAccountDeleteHandler cancelRequestDeleteAccoutWithUserid:userid callback:^(NSError * error) { if(!error){ NSLog(@"取消删除账号成功"); } }] |
9 UMP同意弹窗相关
9.1同意弹窗说明
SDK在初始化的时候会在页面进行UMP同意弹窗初始化,并展示给需要的用户(欧盟地区)进行同意授权,授权完成后AdMob功能才会进行初始化及加载广告。如果是非欧盟地区用户,则会直接返回授权成功,并进行后续逻辑。
以上为SDK内部逻辑,研发无需处理。除此之外,研发需要在游戏内部放置一个按钮,可供用户打开UMP同意设置并修改同意状态,需要用到下面“检查设置”和”展示设置“两个方法。
UMP同意弹窗效果如下:
9.2 开关配置
UMP功能默认关闭,如果需要开启UMP功能,在Info.plist中加入下面配置:
AdmobUseUMP 为YES
9.3 检查配置
检查是否需要展示UMP同意设置。
1 2 |
[WAAdMobProxy checkUmpOptions] |
返回值说明:
类型 | 必填 | 说明 | 备注 |
---|---|---|---|
BOOL | Y | YES为需要展示,此时可以显示UMP配置按钮入口;NO为不需要,可以隐藏UMP配置按钮入口。 | 如果设备在非欧盟地区一般返回NO |
9.4 展示配置
展示UMP同意设置
1 2 |
+ (void)showUmpOptionsWithViewController:(UIViewController *)viewController consentGatheringComplete:(void (^)(NSError *_Nullable error))completionHandler |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
viewController | UIViewController | Y | 当前页面控制器 | 显示成功后,用户操作同意或不同意才会回调,;如果显示失败,则error不为空 |
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 |
if([WAAdMobProxy checkUmpOptions]){ [WAAdMobProxy showUmpOptionsWithViewController:[WADemoUtil getCurrentVC] consentGatheringComplete:^(NSError * _Nullable error) { if(error){ }else { NSLog(@"consentGatheringComplete"); } }]; } |
9.5添加UMP同意监听
SDK初始化时的UMP同意弹窗授权状态监听.
notification.userInfo回掉参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
status | NSString | Y | 1为同意 0为失败 | |
error | NSError | N | status为0时,才有值 |
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<br /> [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleAdmobUMPStatusNotification:) name:WASDK_ADMOB_UMP_STATUS_NOTIFICATION object:nil]; - (void)handleAdmobUMPStatusNotification:(NSNotification *)notification { NSDictionary *admobUMPResultDic = notification.userInfo; NSString *status = admobUMPResultDic[@"status"]; NSError * error =admobUMPResultDic[@"error"]; if ([status intValue]==1) { NSLog(@"ump同意 "); }else if([status intValue]==0){ NSLog(@"失败错误信息==%@",error.localizedDescription); } } |
10 GHGL模块相关配置
在Info.plist文件中,URL types下配置URL Schemes
注意
1.格式为wa+YOUR_SDK_APPID。比如SDK的appid为f7f9a9d18da611e5a0be000d3a906774,则对应内容为waf7f9a9d18da611e5a0be000d3a906774
2.这里SDK的appid为wingsdk的appid