一、集成SDK到项目
集成要求:iOS7.0及以上版本。
WINGSDK进行了抽象层与实现层的分离,整体流程如下图所示:
1.1 导入抽象层
将提供给CP的抽象层WASdkIntf.framework
,以及配置文件wa_sdk_intf_config.xml
,wa_sdk_track_config.plist
,wa_sdk.plist
导入到工程中,如下图。注:请将文件夹wasdk放置在工程的.xcodeproj的同一级目录下。
当调用抽象层接口时候,请导入头文件:
#import<WASdkIntf/WASdkIntf.h>
1.2 WINGSDK配置
1.2.1 WINGSDK基本配置(wa_sdk.plist)
参数说明:
WaSdkServerUrl:WINGSDK后台url(生产环境:https://api.wingsdk.com/sdkapi/)
appKey:WINGSDK后台appKey
appId:WINGSDK后台appId
os:手机操作系统
channel:发布渠道
1.2.2 Facebook相关配置
如果不需要Facebook,请忽略此章节
1、登录配置:详见Facebook公共配置
2、Facebook添加发布权限:详见第三方后台配置—iOS版《2.2 Facebook添加publish_actions权限》
3、Facebook应用邀请配置:详见第三方后台配置—iOS版《2.3 Facebook应用邀请配置》
4、Facebook后台新建礼物:详见Facebook后台新建礼物
1.2.3 APPLE相关配置
如果不需要APPLE,请忽略此章节
1、登录配置:详见第三方后台配置—iOS版《一、Apple后台应用配置》
1.2.4 Appsflyers 相关配置
如果不需要Appsflyers,请忽略此章节
1、数据收集配置:详见7.1.1 配置概览
1.2.5 Chartboost 相关配置
如果不需要Chartboost,请忽略此章节
1、数据收集配置:详见7.1.1 配置概览
1.2.6 VK相关配置
如果不需要VK,请忽略此章节
登录配置:详见VK配置
二、WINGSDK使用
2.1 SDK初始化
请在AppDelegate的didFinishLaunchingWithOptions 调用下面代码:
1 2 3 |
[WACoreProxy init]; [WAUserProxy application:application didFinishLaunchingWithOptions:launchOptions]; |
2.2 开启/关闭调试模式
WingSDK默认是打开调试模式的,开启调试模式可以在IDE的Logcat中查看到程序的Log信息,方便调试和测试。开启/关闭调试模式调用以下接口。
打开调试模式:
1 2 |
[WACoreProxy setDebugMode:YES]; |
关闭调试模式:
1 2 |
[WACoreProxy setDebugMode:NO]; |
2.3公共参数配置
公共参数必须严格按照文档进行配置,在后续的接口中会使用到这些公共的参数,没有按照要求配置会导致部分接口调用失败。
2.3.1 设置用户gameUserId
用户在选择服务器并且登录之后将用户gameUserId设置到SDK中以便于跟踪。
1 2 |
[WACoreProxy setGameUserId:@"12345"]; |
2.3.2 设置服务器ID
用户登录选服后,调用接口设置服务器id
1 2 |
[WACoreProxy setServerId: @"127.0.0.1"]; |
注意:设置服务器ID的操作在每次选服后都需要进行。
2.3.3 设置用户等级level
设置游戏玩家的角色等级,调用接口:
1 2 |
[WACoreProxy setLevel:10]; |
注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级。
三、用户模块功能
3.1 登录功能使用
3.1.1设置登陆流程接口:
+(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 | 登录时重新将新账号与当前设备绑定 |
3.1.2 用户登录接口
3.1.2.1登录接口
(1)选择登录方式
+(void)loginWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WALoginDelegate>)delegate;
注:extInfo参见附表3.1登录extInfo字段说明
代码示例:facebook登录
1 2 |
[WAUserProxy loginWithPlatform: WA_PLATFORM_FACEBOOK extInfo:nil delegate:self]; |
登录平台取值:
名称 | 取值 | 备注 |
---|---|---|
WA_PLATFORM_WINGA | GUEST | WINGSDK平台 |
WA_PLATFORM_APPLE | APPLE | APPLE平台 |
WA_PLATFORM_FACEBOOK | Facebook平台 | |
WA_PLATFORM_VK | VK | VK平台 |
(2)登录过程的应用间跳转
请在AppDelegate实现以下方法:
1 2 3 4 5 |
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [WAUserProxy application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; } |
3.1.2.2 实现协议WALoginDelegate中定义的方法
说明:关于APPLE登录,用户每次进入APP进行登录操作,Game Center只进行一次授权。假如用户在第一次登录的时候取消了,以后每次进行登录,程序都会执行登录取消的协议方法,除非用户重新进入app。同样的,第一次登录的时候,出现Game Center授权错误,之后程序都会执行登录失败的协议方法,除非用户重新进入app。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
(1)登录成功 /*! @abstract 登录成功 @param results 登录结果 */ -(void)loginDidCompleteWithResults:(WALoginResult*)result; (2)登录失败 /*! @abstract 登录失败 @param result 登录的用户信息 注:这不是登录结果,由于登录失败所以userId是空的.但如果第三方平台(Facebook,Apple)授权成功,pUserId,pToken,extends不为空,可用于提示用户. @param error 错误 */ -(void)loginDidFailWithError:(NSError*)error andResult:(WALoginResult*)result; (3)登录取消 /*! @abstract 用户取消登录 @param result 登录的账户信息 (注:返回的result只有platform有值) */ -(void)loginDidCancel:(WALoginResult*)result; |
3.1.3 登录对话框
SDK内置了一个包含所有支持的登录方式的一个对话框,通过调用以下接口打开对话框:
3.1.3.1 实现协议WALoginViewDelegate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
(1)登录成功 /*! @abstract 登录成功 @param result 登录的用户信息 */ -(void)loginViewDidCompleteWithResult:(WALoginResult*)result; (2)登录失败 /*! @abstract 登录失败 @param result 登录的用户信息 注:这不是登录结果,由于登录失败所以userId是空的.但如果第三方平台(Facebook,Apple)授权成功,pUserId,pToken,extends不为空,可用于提示用户. @param error 错误 */ -(void)loginViewDidFailWithError:(NSError*)error andResult:(WALoginResult*)result; (3)登录取消 /*! @abstract 用户取消登录 @param result 登录的用户信息(只有platform非空). */ -(void)loginViewDidCancel:(WALoginResult*)result; |
3.1.3.2 调用方法
+(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled;
cacheEnabled是否缓存登录方式。如果缓存登录方式,第二次调用的时候直接按照上次的登录方式进行登录,不会弹出登录选择框。如果想弹出登录选择框,请调用clearLoginCache方法,清除缓存
代码示例:
1 2 |
[WAUserProxy login:<#your viewController#> cacheEnabled:<#(BOOL)#>]; |
3.1.3.3 清除登录方式的缓存(重新弹出登录选择框)
+(void)clearLoginCache;
代码示例:
1 2 |
[WAUserProxy clearLoginCache]; |
3.1.3.4 隐藏登录选择框
+(void)hide;
代码示例:
1 2 |
[WAUserProxy hide]; |
3.1.4 用户登出
退出游戏的时候,必须登出操作。用户登出调用以下接口:
1 2 |
[WAUserProxy logout]; |
3.2账户管理的使用
3.2.1 绑定第三方平台账户
3.2.1.1 实现协议WAAccountBindingDelegate
说明:关于APPLE账号的绑定,请参考3.1.2.2 实现协议WALoginDelegate中定义的方法的说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
(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; |
3.2.1.2 调用方法
+(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]; |
3.2.2 查询已经绑定的第三方平台账户
通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:
+(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{ //成功 } }]; |
3.2.3 解绑第三方平台账户
通过以下接口,可以解绑已经绑定的第三方平台账户:
+(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{ //成功处理 } }]; |
3.2.4 切换账户
使用以下接口可以快速切换登录的账户
+(void)switchAccountWithPlatform:(NSString *const)platform completeBlock:(void(^)(NSError* error,WALoginResult* result))completeBlock;
3.2.5 新建账户
+(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{ //新建账号失败 } }]; |
3.2.6 使用账户管理页面
SDK内置了账户管理页面,打开这个内置的页面之前必须先登录,通过这个页面可以对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户。
3.2.6.1 实现协议WAAcctManagerDelegate
1 2 3 4 5 6 7 8 9 10 11 12 |
/*! @abstract 新建账户回调接口 @param result 新建账户的账户信息 */ -(void)newAcctDidCompleteWithResult:(WALoginResult*)result; /*! @abstract 切换账户回调接口 @param result 切换账户的账户信息 */ -(void)switchAcctDidCompleteWithResult:(WALoginResult*)result; |
3.2.6.2 调用方法
+(void)openAccountManager:(id<WAAcctManagerDelegate>)delegate;
代码示例:
1 2 |
[WAUserProxy openAccountManager:self]; |
3.2.6.3 关于绑定解绑的通知
账户管理界面没有返回绑定和解绑的结果的,但是会以通知的方式将结果回调给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{ //触发被邀请人安装应用事件接口失败 } }]; } } } |
3.2.7 获取账户信息
SDK提供了获取指定平台的账户信息,可以通过以下接口获取:
+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;
示例代码:
1 2 |
WAAppUser* appUserId = [WAUserProxy getAccountInfoWithPlatform:WA_PLATFORM_VK]; |
附表3.1 登录extInfo字段说明
平台 | 格式 | 说明 |
---|---|---|
WINGSDK | { “appSelfLogin”: true, “appUserId”: “12345”, “appToken”: “o1akkfjia81FMvFSO8kxC96TgQYlhEEr”, “extInfo”: “extInfo String” } |
1 WINGSDK平台应用内登录,所谓的应用内登录,是指应用本身有登录系统,应用登录自己的后台后拿到用户信息后登录WINGSDK后台,创建WINGSDK用户的过程,可选,默认匿名登录 2 字段说明: appSelfLogin: 是否应用内登录(boolean) appUserId: 应用userId(String) appToken: 应用Token(String) extInfo: 额外数据(String),这个数据WA后台在想应用后台验证的时候,会通过回调接口传递到应用服务器。 |
四、支付模块功能
4.1 支付服务是否可用
通过以下接口可以获取支付服务是否可用,返回boolean类型结果,true为可用,false为不可用:
+(BOOL)isPayServiceAvailableWithPlatform:(NSString *const)platform;
代码示例:
1 2 |
[WAPayProxy isPayServiceAvailableWithPlatform:WA_PLATFORM_APPLE]; |
参数说明:
名称 | 取值 | 备注 |
---|---|---|
WA_PLATFORM_APPLE | APPLE | APPLE平台 |
WA_PLATFORM_BOACOMPRA | BOACOMPRA | BOACOMPRA平台 |
4.2 初始化
4.2.1 初始化接口
使用对应平台的支付服务前必须对其进行初始化,请在AppDelegate的didFinishLaunchingWithOptions方法调用以下方法。
+(void)init4Iap;
代码示例:
1 2 |
[WAPayProxy init4Iap]; |
支付的初始化在调用Activity的onCreate中初始化,每次只能初始化一个平台。
4.3 查询库存商品
4.3.1 实现协议 WAInventoryDelegate
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/*! @abstract 查询成功 @param Inventory 是一个数组,保存着WAIapProduct类型的实例(仅productIdentifier可用) */ -(void)queryInventoryDidCompleteWithResult:(NSArray<WAIapProduct *>*)Inventory; /*! @abstract 查询失败 @param error 错误 @param platform 支付平台 */ -(void)queryInventoryDidFailWithError:(NSError*)error; |
4.3.2 调用方法
查寻库存商品,调用以下接口:
+(void)queryInventoryWithDelegate:(id<WAInventoryDelegate>)delegate;
代码示例:
1 2 |
[WAPayProxy queryInventoryWithDelegate:self]; |
4.4 购买支付
4.4.1 实现协议 WAPaymentDelegate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/*! @abstract 支付成功 @param iapResult 支付结果 @param platform 支付平台 */ -(void)paymentDidCompleteWithResult:(WAIapResult*)iapResult andPlatform:(NSString*)platform; /*! @abstract 支付失败 @param error 错误 @param platform 支付平台 */ -(void)paymentDidFailWithError:(NSError*)error andPlatform:(NSString*)platform; |
支付结果说明 WAIapResult
字段名 | 类型 | 说明 | 备注 |
---|---|---|---|
productIdentifier | NSString | 商品id | |
resultCode | long | 支付结果代码 | 1、支付成功 2、支付失败 3、用户取消 4、支付成功,上报失败 5、商品消耗中 6、创建订单失败 |
4.4.2 调用方法
购买指定平台的商品,调用以下接口:
+(void)payWithProductId:(NSString*)productId extInfo:(NSString*)extInfo delegate:(id<WAPaymentDelegate>)delegate;
代码示例:
1 2 |
[WAPayProxy payWithProductId:product.productIdentifier extInfo:nil delegate:self]; |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
productId | String | Y | 库存商品的id | 必须归属platform指定的平台 |
extInfo | String | N | 额外信息,该信息会在支付成功后原样通知到CP服务器,CP用于检验。如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为JSON,参数名为 deliverUrl,参考格式 { “deliverUrl”:” http://game.com/deliver.do”, “otherInfo”:”otherInfo” } |
五、社交模块功能
5.1 分享功能
5.1.1 实现协议 WASharingDelegate
1 2 3 4 5 6 7 8 9 10 11 12 |
(1)分享成功 - (void)sharer:(NSObject<WASharing>*)sharer platform:(NSString *const)platform didCompleteWithResults:(NSDictionary *)results; (2)分享失败 - (void)sharer:(NSObject<WASharing>*)sharer platform:(NSString *const)platform didFailWithError:(NSError *)error; (3)分享取消 - (void)sharerDidCancel:(NSObject<WASharing>*)sharer platform:( NSString *const)platform; |
5.1.2 调用方法
分享调用以下接口,支持分享链接、图片、视频、Facebook OpenGraph:
+(void)shareWithPlatform:( NSString *const)platform shareContent:(NSObject<WASharingContent>*)shareContent shareWithUI:(BOOL)shareWithUI delegate:(NSObject<WASharingDelegate>*)delegate;
示例代码:
1 2 3 4 5 6 7 8 9 |
WASharePhoto *photo = [[WASharePhoto alloc]init]; photo.image = image; //phote.imageURL = [NSURL URLWithString:@"..."];//image 和 imageURL 可以二选一 photo.userGenerated = YES; photo.caption = @"caption..."; WASharePhotoContent *content = [[WASharePhotoContent alloc]init]; content.photos = @[photo]; [WASocialProxy shareWithPlatform:WA_PLATFORM_FACEBOOK shareContent:content shareWithUI:YES delegate:self]; |
参数说明
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
shareContent | NSObject<WASharingContent>* | Y | 分享内容 | |
shareWithUI | BOOL | Y | 是否通过UI分享 | 设置为YES时直接通过UI分享,有界面。设置为NO时通过API分享,没有界面。 |
delegate | NSObject<WASharingDelegate>* | N | 委托 |
5.1.2.1 分享链接内容实体WAShareLinkContent
WAShareLinkContent字段说明
字段名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
contentURL | NSURL | Y | 链接 | |
peopleIDs | NSArray | N | 分享好友ID | |
placeID | NSString | N | 地址id | |
ref | NSString | N | 添加到引用链接中的参数值 | |
contentTitle | NSString | N | 连接标题 | |
contentDescription | NSString | N | 链接描述 | |
imageURL | NSURL | N | 配图 |
5.1.1.2 分享图片内容实体WASharePhotoContent
WASharePhotoContent字段说明
字段名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
contentURL | NSURL | N | 内容URL | |
peopleIDs | NSArray | N | 分享好友ID | |
placeID | NSString | N | 地址id | |
ref | NSString | N | 添加到引用链接中的参数值 | |
photos | NSArray | Y | 图片列表 | 不能超过12MB,而且列表不能为空,至少一张图片 |
WASharePhoto字段说明
字段名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
image | UIImage | Y | 图片对象 | 和imageURL两个必选一个 |
imageURL | NSURL | Y | 图片Uri | 和image两个必选一个 |
userGenerated | BOOL | N | 未使用 | |
caption | NSString | N | 图片描述 |
5.1.1.3 分享视频内容实体WAShareVideoContent
WAShareVideoContent字段说明
字段名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
contentURL | NSURL | N | 内容URL | |
peopleIDs | NSArray | N | 分享好友ID | |
placeID | NSString | N | 地址id | |
ref | NSString | N | 添加到引用链接中的参数值 | |
previewPhoto | WASharePhoto | N | 视频缩略图 | |
video | WAShareVideo | Y | 视频 | 不能超过12MB |
WAShareVideo字段说明
字段名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
videoURL | NSURL | Y | 视频URL |
5.2 应用邀请功能
使用应用邀请必须先在facebook后台配置,请参考第三方后台配置—iOS版《2.3 Facebook应用邀请配置》
5.2.1 实现协议 WAAppInviteDialogDelegate
1 2 3 4 5 6 7 8 |
(1)邀请成功 - (void)appInviteDialog:(WAAppInviteDialog *)appInviteDialog platform:(NSString *const)platform didCompleteWithResults:(NSDictionary *)results; (2)邀请失败 - (void)appInviteDialog:(WAAppInviteDialog *)appInviteDialog platform:(NSString *const)platform didFailWithError:(NSError *)error; |
5.2.2 调用方法
+(void)appInviteWithPlatform:(NSString *const)platform Content:(WAAppInviteContent*)content delegate:(NSObject<WAAppInviteDialogDelegate>*)delegate;
代码示例:
1 2 3 4 5 6 |
WAAppInviteContent* content = [[WAAppInviteContent alloc]init]; content.appLinkURL = [NSURL URLWithString:@"https://fb.me/1656977844516768"]; content.appInvitePreviewImageURL = [NSURL URLWithString:@"http://xljz.wanmei.com/resources/jpg/120704/10161341372867319.jpg"]; [WASocialProxy appInviteWithPlatform:WA_PLATFORM_FACEBOOK Content:content delegate:self]; |
WAAppInviteContent实体说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
appLinkURL | NSURL | Y | 分享链接 | |
appInvitePreviewImageURL | NSURL | Y | 预览图片url地址 |
5.3 游戏邀请功能
5.3.1 查询可邀请好友列表
游戏邀请只能邀请没有玩过当前游戏的好友,称为可邀请好友,查询可邀请的好友调用以下接口:
+(void)queryInvitableFriendsWithDuration:(float)duration completeBlock:(void(^)(NSArray* friends,NSError *error))block;
代码示例:
1 2 3 4 5 6 7 8 |
[WASocialProxy queryInvitableFriendsWithDuration:5 completeBlock:^(NSArray *friends, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
block | String | Y | 回调 | |
duration | long | Y | 过滤时间间隔 | 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友 |
5.3.2 游戏邀请
WingSDK 3.5.2版本开始,使用6.7 发送请求接口代替
5.3.2.1 实现协议 WAGameRequestDialogDelegate
1 2 3 4 5 6 7 8 9 10 11 12 |
(1)游戏请求成功 - (void)gameRequestDialog:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform didCompleteWithResults:(NSDictionary *)results; (2) 游戏请求失败 - (void)gameRequestDialog:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform didFailWithError:(NSError *)error; (3) 游戏请求取消 - (void)gameRequestDialogDidCancel:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform; |
5.3.2.2 调用方法
发送游戏邀请请求调用以下接口(注:VK平台一次只能发一次邀请给一个好友):
+(void)gameInviteWithPlatform:(NSString *const)platform Content:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 |
WAGameRequestContent *gameRequestContent = [[WAGameRequestContent alloc] init]; gameRequestContent.message = @"Take this bomb to blast your way to victory!!!"; gameRequestContent.title = @"Game for you."; //recipients是个数组,可以同时发送给多个好友 NSMutableArray* recipients = [NSMutableArray array]; for (WAAppUser* appUser in _friendSelected) { [recipients addObject:appUser.ID]; } gameRequestContent.recipients = recipients; [WASocialProxy gameInviteWithPlatform:WA_PLATFORM_FACEBOOK Content:gameRequestContent delegate:self]; |
注:如果是VK平台 actionType必须赋值(gameRequestContent.actionType = WAGameRequestActionRequest) VK平台有两个actionType: WAGameRequestActionInvite, WAGameRequestActionRequest。在游戏的测试阶段,请用WAGameRequestActionRequest进行测试。正式上线的时候修改为WAGameRequestActionInvite,参照下面流程图。
5.3.3 邀请成功记录
成功邀请好友后,在协议方法-gameRequestDialog:platform:didCompleteWithResults:中调用以下接口向服务器记录邀请信息:
+(void)createInviteInfoWithPlatform:(NSString *const)platform results:(NSDictionary*)results handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//请求成功 - (void)gameRequestDialog:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform didCompleteWithResults:(NSDictionary *)results{ //邀请好友成功 发送邀请信息到SDK后台 [WASocialProxy createInviteInfoWithPlatform:WA_PLATFORM_FACEBOOK results:results handler:^(NSUInteger code, NSString *msg, NSError *error) { //当code为200时,表示发送成功 进行相应的操作。 if (code == 200) { //发送成功 }else{ //发送失败 } }]; } |
5.3.4 邀请安装奖励
通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,
必须在玩家进行登录成功或者绑定成功之后时候调用。
1 2 |
+(void)inviteInstallRewardPlatform:(NSString *const)platform TokenString:(NSString*)tokenString handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler; |
代码示例:
1.在登录成功的协议(-loginDidCompleteWithResults:)方法中调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-(void)loginDidCompleteWithResults:(WALoginResult *)result{ if (result.platform == WA_PLATFORM_FACEBOOK||result.platform == WA_PLATFORM_VK) { [WASocialProxy inviteInstallRewardPlatform:result.platform TokenString:result.pToken handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //触发被邀请人安装应用事件接口成功 }else{ //触发被邀请人安装应用事件接口失败 } }]; } } |
2.在绑定成功的协议(-bindingDidCompleteWithResult:)方法中调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
-(void)bindingDidCompleteWithResult:(WABindingResult*)result{ if ([result.platform isEqualToString:WA_PLATFORM_FACEBOOK]||[result.platform isEqualToString:WA_PLATFORM_VK]) { [WASocialProxy inviteInstallRewardPlatform:result.platform TokenString:result.accessToken handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //触发被邀请人安装应用事件接口成功 }else{ //触发被邀请人安装应用事件接口失败 } }]; } |
5.3.5 邀请事件奖励
通过邀请安装使用的用户,在触发定义的特定事件,需要通知服务器奖励邀请人,比如等级达成、充值等,调用以下接口:
1 2 |
+(void)inviteEventRewardWithPlatform:(NSString *const)platform eventName:(NSString*)eventName handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler; |
代码示例:
1 2 3 4 5 6 7 8 |
[WASocialProxy inviteEventRewardWithPlatform:WA_PLATFORM_FACEBOOK eventName:@"eventName" handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //发送邀请奖励事件成功 }else{ //发送邀请奖励事件失败 } }]; |
5.3.6 查询好友
查询指定平台正在玩游戏的好友列表,调用以下接口:
+(void)queryFriendsWithCompleteBlock:(void(^)(NSArray<WAAppUser *>* friends,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy queryFriendsWithCompleteBlock:^(NSArray *friends, NSError *error) { if (!error) { //查询好友列表成功 }else{ //查询好友列表失败 } }]; |
5.3.7 查询Facebook Graph Object
Facebook的礼物就是在Facebook控制台创建的Graph Object,查询礼物列表的时候调用这个接口,这个接口只针对Facebook平台。
+(void)queryFBGraphObjectsWithObjectType:(NSString*)objectType completeBlock:(void(^)(NSArray<WAFBObject*>* objects,NSError *error))block;
代码示例:
1 2 3 4 5 6 7 8 9 10 |
//objectType 必须赋值 详见附录五 Facebook后台新建礼物 NSString* objectType = @"com_ghw_sdk:Gift"; [WASocialProxy queryFBGraphObjectsWithObjectType:objectType completeBlock:^(NSArray<WAFBObject *> *objects, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
5.3.8 Facebook赠送礼物
WingSDK 3.5.2版本开始,使用6.7 发送请求接口代替
使用facebook礼物功能,请先在facebook后台配置相关信息,详情请Facebook后台新建礼物
Facebook用户向游戏内的好友赠送礼物。
5.3.8.1 实现协议 WAGameRequestDialogDelegate
同5.3.2.1 实现协议 WAGameRequestDialogDelegate
5.3.8.2 调用方法
+(void)fbSendGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:
1 2 3 4 5 6 7 8 9 10 11 |
WAGameRequestContent *gameRequestContent = [[WAGameRequestContent alloc] init]; gameRequestContent.message = @"send a gift to you!"; gameRequestContent.title = [NSString stringWithFormat:@"This is %@",_gift.title]; //设置赠送的好友 gameRequestContent.recipients = recipients;//数组存放WAAppUser的ID //设置赠送的礼物id gameRequestContent.objectID = _gift.ID;//WAFBObject的ID //actionType设置为WAGameRequestActionTypeSend 赠送 gameRequestContent.actionType =WAGameRequestActionTypeSend; [WASocialProxy fbSendGiftWithContent:gameRequestContent delegate:self]; |
5.3.9 Facebook索要礼物
WingSDK 3.5.2版本开始,使用6.7 发送请求接口代替
Facebook用户向游戏内的好友发出索要礼物的请求。
5.3.9.1 实现协议 WAGameRequestDialogDelegate
同5.3.2.1 实现协议 WAGameRequestDialogDelegate
5.3.9.2 调用方法
+(void)fbAskForGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:
1 2 3 4 5 6 7 8 9 10 11 |
WAGameRequestContent *gameRequestContent = [[WAGameRequestContent alloc] init]; gameRequestContent.message = @"send a gift to you!"; gameRequestContent.title = [NSString stringWithFormat:@"This is %@",_gift.title]; //设置索要礼物的好友 gameRequestContent.recipients = recipients;//数组存放WAAppUser的ID //设置索要的礼物id gameRequestContent.objectID = _gift.ID;//WAFBObject的ID //actionType设置为WAGameRequestActionTypeAskFor 索要 gameRequestContent.actionType = WAGameRequestActionTypeAskFor; [WASocialProxy fbAskForGiftWithContent:gameRequestContent delegate:self]; |
5.3.10 Facebook查询收到的礼物
Facebook用户查询好友赠送给自己的礼物,调用以下接口:
+(void)fbQueryReceivedGiftsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* gifts,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy fbQueryReceivedGiftsWithCompleteBlock:^(NSArray<WAFBAppRequest *> *gifts, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
5.3.11 Facebook查询向自己索要礼物的请求
Facebook用户查询好友向自己索要礼物的请求,调用以下接口:
+(void)fbQueryAskForGiftRequestsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* requests,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy fbQueryAskForGiftRequestsWithCompleteBlock:^(NSArray<WAFBAppRequest *> *requests, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
5.3.12 删除请求
Facebook中用户收到的礼物,好友向自己索要礼物的请求都是一个Facebook的请求,收取礼物和拒绝赠送礼物的时候,需要删除掉对应的请求。删除请求调用以下接口:
+(void)fbDeleteRequestWithRequestId:(NSString*)requestId completeBlock:(void(^)(id result,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy fbDeleteRequestWithRequestId:_request.ID completeBlock:^(id result, NSError *error) { if (!error) { //删除成功 }else{ //删除失败 } }]; |
六、游戏社区功能
6.1 通过Group id查询Group详情
通过Group id查询Group详情,调用以下接口:
1 2 |
+(void)getGroupWithPlatform:(NSString *const)platform groupIds:(NSArray*)groupIds extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block; |
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getGroupWithPlatform:WA_PLATFORM_VK groupIds:@[@"groupid1",@"groupid2"] extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
WAGroup实体说明
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
gid | NSString | group id | |
name | NSString | group名称 | |
screen_name | NSString | group screen_name | |
is_closed | int | 是否封闭 | 0 – 开放 1 – 封闭 2 – 私有 |
is_member | BOOL | 当前用户是否该group成员 | 0 – 不是group的成员 1 – 是group的成员 |
type | NSString | 类型 | group — group page — public page event — event |
photo | NSString | group图片 | |
photo_medium | NSString | group图片,中尺寸 | |
photo_big | NSString | group图片,大尺寸 | |
desc | NSString | group描述 | |
members_count | int | 成员数 | |
status | NSString | 状态 | |
schemeUrl | NSString | 跳转到应用对应的页面 | |
pageUrl | NSString | 跳转到浏览器对应的页面 |
6.2 查询当前应用关联的Group
一个应用只能关联一个Group,通过以下接口可以查询当前应用关联的Group详细信息:
1 2 |
+(void)getGroupsWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block; |
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getCurrentAppLinkedGroupWithPlatfrom:WA_PLATFORM_VK extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
6.3 查询当前用户已加入的Group
查询当前用户加入的Group详细信息调用以下接口:
1 2 |
+(void)getCurrentUserGroupWithPlatfrom:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block; |
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getCurrentUserGroupWithPlatfrom:WA_PLATFORM_VK extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
6.4 查询当前应用推荐的所有Group
这是6.2和6.3查询到的Group的汇总,调用以下接口:
1 2 |
+(void)getGroupsWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block; |
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getGroupsWithPlatform:WA_PLATFORM_VK extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
6.5 加入Group
加入指定的某个Group,调用以下接口:
1 2 |
+(void)joinGroupWithPlatform:(NSString *const)platform groupId:(NSString*)groupId extInfo:(NSString *const)extInfo completeBlock:(void(^)(NSError* error))block; |
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy joinGroupWithPlatform:WA_PLATFORM_VK groupId:@"GroupId" extInfo:nil completeBlock:^(NSError *error) { if (!error) { //join Group 成功 }else{ //join Group 失败 } }]; |
6.6 进入Group详情页
进入Group的详情页面,调用以下接口
1 2 |
+(void)openGroupPageWithPlatform:(NSString *const)platform groupUri:(NSString *const)groupUri extInfo:(NSString*)extInfo |
如果客户端已经安装platform指定平台的app客户端,将会进入到app客户端详情页面,如果没有安装,则打开网页详情页。
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
platform | String | Y | 平台类型 | |
groupUri | String | Y | 打开Group的uri | VK平台为screen_name字段值 |
extInfo | String | N | 额外数据信息 | 扩展字段,根据各个平台需要定义 |
示例代码:
1 2 |
[WASocialProxy openGroupPageWithPlatform:WA_PLATFORM_VK groupUri:_group.screen_name extInfo:nil]; |
6.7 发送请求接口
该接口从SDK 3.5.2版本开始启用
发送请求接口向平台好友发送请求,请求包括普通请求、游戏邀请、赠送礼物、索要礼物等,发送请求调用以下接口:
1 2 |
+(void)sendRequestWithPlatform:(NSString *const)platform requestType:(NSString *const)requestType title:(NSString*)title message:(NSString*)message objectId:(NSString*)objectId receiptIds:(NSArray*)receiptIds delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate; |
参数说明
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
platform | NSString | Y | 平台类型 | 平台类型在WAConstants类中定义,目前支持VK以及FACEBOOK |
requestType | NSString | Y | 请求类型 | 请求类型默认的在WAConstants下有定义,请参考表6.7.1请求类型 |
title | NSString | Y | 标题 | 部分平台需要显示 |
message | NSString | Y | 说明文字 | 部分平台需要显示 |
objectId | NSString | N | 对象id | 部分请求类型必填,比如发送礼物,为礼物对象id |
receiptIds | NSArray | Y | 接收者id | 根据平台而定,有些平台支持一次发送请求给多个用户,有些平台一次只能发送给一个用户。VK平台一次只能发送一个用户 |
delegate | NSObject | N | 代理 | |
extInfo | NSString | N | 额外数据信息 | 扩展字段,根据各个平台需要定义 |
变量名 | 取值值 | 说明 | 备注 |
---|---|---|---|
WA_REQUEST_TYPE_INVITE | INVITE | 邀请 | |
WA_REQUEST_TYPE_REQUEST | REQUEST | 普通请求 | |
WA_REQUEST_TYPE_SEND | SEND | 发送礼物 | objectId不能为空 |
WA_REQUEST_TYPE_ASKFOR | ASKFOR | 索要礼物 | objectId不能为空 |
示例代码:
1 2 |
[WASocialProxy sendRequestWithPlatform:WA_PLATFORM_FACEBOOK requestType:WA_REQUEST_TYPE_SEND title:@"A gift" message:@"send you a gift" objectId:@"objectId" receiptIds:@[@"receiptId1",@"receiptId2"] delegate:self]; |
注:vk平台测试游戏邀请功能需要申请权限,可以把请求类型设置成WA_REQUEST_TYPE_REQUEST来测试普通邀请,带申请权限通过后改成WA_REQUEST_TYPE_INVITE来测试。关于vk邀请功能的业务流程图如下:
七、 数据收集功能模块
7.1 配置
7.1.1 配置概览
拿到wa_sdk_track_config.plist,对各个平台进行相应的配置。注:文件名以及key值不可修改。
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关。
WA URL正式环境的地址: https://api.wingsdk.com/data/
7.1.2 WINGSDK数据收集的事件映射配置
由于SDK数据收集后台有若干预定义的事件,具体如表所示。
事件 | 释义 | 备注 |
---|---|---|
ghw_launch | 安装事件 | 无需调用,sdk内部处理 |
ghw_startup | 应用启动事件 | 无需调用,sdk内部处理 |
ghw_login | 登录事件 | |
ghw_initiated_payment | 点击充值 | 无需调用,sdk内部处理 |
ghw_payment | 充值完成 | 无需调用,Sdk已经集成 |
ghw_initiated_purchase | 点击购买 | 注,虚拟交易 |
ghw_purchase | 购买完成 | 注,虚拟交易 |
ghw_heartbeat | 在线时长 | 无需调用,sdk内部处理 |
ghw_level_achieved | 升级事件 | |
ghw_user_create | 创建角色 | |
ghw_user_info_update | 用户资料更新 | |
ghw_task_update | 玩家任务统计 | |
ghw_gold_update | 货币状况变更 | |
ghw_user_import | 导入用户事件 |
为了数据收集更通用,我们做了一个映射。作用是将一个自定义字段映射到我们的预定义字段。这个映射是针对7.2.3.1 方法一做的。如果你使用7.2.3.2方法二进行数据收集,可以忽略这个映射。如下图,在配置文件wa_sdk_track_config.plist中,展开文件,可以看到WINGSDK下面有一个Mapping节点,展开Mapping节点,就是我们平台的预定义事件字段。如下所示,login等价于ghw_login。没有配置的字段,都是按照我们的预定义字段进行操作。
7.2 调用
7.2.1 导入头文件
#import <WASdkIntf/WASdkIntf.h>
7.2.2 工程启动时初始化
您需要在第一次启动在应用程序上进行SDK初始化。请保证在发送下面的跟踪事件之前进行SDK初始化。请在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码:
1 2 |
[WACoreProxy initAppEventTracker]; |
7.2.3 调用事件进行追踪
安装和打开游戏事件是内部触发的,另外关于充值事件(WAEventPayment)和点击充值(WAEventInitiatedPayment)的跟踪已经在WINGSDK中自动调用,用户不用自己调用。若不想启用这两个事件的自动跟踪,可在didFinishLaunchingWithOptions进行如下操作:
1 2 |
[WATrackProxy autoTriggerAfterPayment:NO]; |
调用方法有两种。方法一调用方法简单,但是发送到各个渠道的事件名称(eventName)、参数(params)、累加值(value)是一样的。如果需要自己设置事件名称、参数、累加值,请使用方法二。
7.2.3.1 方法一
调用事件的用法如下:
+(void)trackWithEventName:(NSString *)eventName valueToSum: (double)value params:(NSDictionary *)params;
-eventName:事件名称可在附表中查询
-valueToSum:传入一个double值作为累加值,没有累加值可以传0。
-params:参数字典参数可在附表中查询
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
NSDictionary *params = @{ WAEventParameterNameSuccess:@YES, WAEventParameterNameTransactionId:@”transactionId”, WAEventParameterNamePaymentType:[NSNumber numberWithInt:WAEnumPaymentTypeApple], WAEventParameterNameCurrencyType:@”CNY”, WAEventParameterNameCurrencyAmount:@100, WAEventParameterNameVirtualCoinAmount:@122, WAEventParameterNameIAPId:@”iapId”, WAEventParameterNameIAPName:@”iapName”, WAEventParameterNameIAPAmount:@100, WAEventParameterNamePrice:@100, }; [WATrackProxy trackWithEventName:WAEventPayment valueToSum:100 params:params]; |
调用购买事件WAEventPayment,
参数:WAEventParameterNameContentType
道具类型,
WAEventParameterNameContentID
内容ID,
WAEventParameterNameItemAmount
购买数量,
WAEventParameterNameCurrencyType
货币类型,
WAEventParameterNameCurrencyAmount
现金额
…
详见参数表。
7.2.3.2 方法二
7.2.3.2.1 调用示例
步骤一 构建WAEvent实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
WAEvent* event = [[WAEvent alloc]init]; event.defaultEventName = WAEventLevelAchieved; event.defaultValue = 1; event.defaultParamValues = @{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" }; event.eventNameDict = @{WA_PLATFORM_APPSFLYER:WAEventLevelAchieved,WA_PLATFORM_CHARTBOOST:WAEventLevelAchieved,WA_PLATFORM_FACEBOOK:@"FacebookLevelAchieved",WA_PLATFORM_WINGA:WAEventLevelAchieved}; event.valueDict = @{WA_PLATFORM_APPSFLYER:@1,WA_PLATFORM_CHARTBOOST:@1,WA_PLATFORM_FACEBOOK:@2,WA_PLATFORM_WINGA:@1}; event.channelSwitcherDict = @{WA_PLATFORM_APPSFLYER:@NO,WA_PLATFORM_FACEBOOK:@YES,WA_PLATFORM_WINGA:@YES,WA_PLATFORM_CHARTBOOST:@YES}; event.channelSwitcherDict = @{WA_PLATFORM_APPSFLYER:@NO}; event.paramValuesDict = @{ WA_PLATFORM_APPSFLYER:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" }, WA_PLATFORM_CHARTBOOST:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" }, WA_PLATFORM_FACEBOOK:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"FacebookLevelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"FacebookDescription" }, WA_PLATFORM_WINGA:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" } }; [event trackEvent]; |
步骤二 发送数据:
1 2 |
[event trackEvent]; |
7.2.3.2.2 关于WAEvent实例的构建
(1)设置默认的事件名称
设置该事件的事件名称,SDK内置了应用内事件,请参考7.3事件介绍
1 2 |
event.defaultEventName = WAEventLevelAchieved; |
(2)设置渠道自定义事件名称
1 2 |
event.eventNameDict = @{WA_PLATFORM_APPSFLYER:WAEventLevelAchieved,WA_PLATFORM_CHARTBOOST:WAEventLevelAchieved,WA_PLATFORM_FACEBOOK:@"FacebookLevelAchieved",WA_PLATFORM_WINGA:WAEventLevelAchieved}; |
注:
1、eventNameDict的key参考附表7.4渠道名称表
2、AppsFlyer和facebook的应用内事件和WINGSDK的应用内事件已经做了映射(例如: ghw_login <-> af_login,ghw_login<->fb_login,参考下图),用户无需再手动自定义。
3、如果不进行设置,所有的渠道将采用设置的默认值(defaultEventName)。
(3)设置默认累加值
设置事件用于统计数字,比如购买的金额等
1 2 |
event.defaultValue = 1; |
(4)设置渠道自定义累加值
1 2 |
event.valueDict = @{WA_PLATFORM_APPSFLYER:@1,WA_PLATFORM_CHARTBOOST:@1,WA_PLATFORM_FACEBOOK:@2,WA_PLATFORM_WINGA:@1}; |
1)valueDict的key值参考附表7.4渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。
(5)设置事件默认的参数/值
1 2 3 4 5 6 7 8 |
event.defaultParamValues = @{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" }; |
注:
1)参数名称参考附表7.3SDK预定义参数名
(6)设置事件渠道自定义的参数/值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
event.paramValuesDict = @{ WA_PLATFORM_APPSFLYER:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" }, WA_PLATFORM_CHARTBOOST:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" }, WA_PLATFORM_FACEBOOK:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"FacebookLevelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"FacebookDescription" }, WA_PLATFORM_WINGA:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000, WAEventParameterNameLevelInfo:@"levelInfo", WAEventParameterNameLevelType:@2, WAEventParameterNameDescription:@"description" } }; |
注:
1)渠道名称参考:附表7.4渠道名称表
2)参数名称参考:附表7.3SDK预定义参数名
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultParamValues)
(7)渠道开关设置
1 2 |
event.channelSwitcherDict = @{WA_PLATFORM_APPSFLYER:@NO,WA_PLATFORM_FACEBOOK:@YES,WA_PLATFORM_WINGA:@YES,WA_PLATFORM_CHARTBOOST:@YES}; |
注:以上代码会关闭Appsflyer对该事件的收集,而Facebook、WINGSDK、Chartboost是打开的。默认情况下,各个渠道都是打开的。所以以上代码可以简化为:
1 2 |
event.channelSwitcherDict = @{WA_PLATFORM_APPSFLYER:@NO}; |
7.3事件介绍
建议参数属性:(参数对应的静态变量名请看附表7.3SDK预定义参数名)
7.3.1 WAEventLogin
说明:登录游戏后调用
无参数.
7.3.2 WAEventInitiatedPayment
说明:点击充值时后调用。注:无需调用,SDK已经集成。
无参数.
7.3.3 WAEventPayment
说明:充值完成后调用(成功的情况下)。注:无需调用,SDK已经集成。
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
success | BOOL | 是否成功 | N | |
transactionId | String | 交易的流水号 | Y | |
paymentType | WAEnumPayment | 支付类型 | Y | 0表示google支付,1表示apple支付,2表示赠送,分别有枚举: WAEnumPaymentTypeGoogle WAEnumPaymentTypeApple WAEnumPaymentTypeFree |
currencyType | String | 货币类型 | Y | 货币类型(string):货币类型:如美元USD,人民币CNY详见货币表 |
currencyAmount | double | 现金额 | Y | 充值时支付的现实货币金额 |
virtualCoinAmount | double | 虚拟游戏币 | Y | 充值获得虚拟货币数量 |
virtualCurrency | String | 虚拟游戏币类型 | N | |
iapId | String | 道具ID | N | 充值获取的的道具id |
iapName | String | 道具名称 | N | 充值获取的的道具名称 |
iapAmount | int | 道具数量 | N | 充值获取的的道具数量 |
7.3.4 WAEventInitiatedPurchase
说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。
无参数。
7.3.5 WAEventPurchase
说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。注:valueToSum/defaultValue的值要传,而且值要和price一样。
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
itemName | String | 游戏内虚拟物品的名称/ID | Y | |
itemAmount | int | 交易的数量 | Y | |
price | float | 交易的总价 | Y |
7.3.6 WAEventLevelAchieved
说明:统计玩家等级增长事件,达到等级时调用。
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
score | int | 账户分数 | N | |
fighting | int | 战斗力 | N | |
levelInfo | String | 等级信息 | N | |
levelType | int | 等级类型 | N | |
description | String | 描述 | N |
7.3.7 WAEventUserCreate
说明:创建游戏角色.
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
roleType | string | 角色类型 | N | |
nickname | String | 角色名(昵称) | Y | |
gender | WAEnumGender | 角色性别 | N | 性别(string): 0表示女,1表示男,2表示未知,分别有枚举: WAEnumGenderFemale WAEnumGenderMale WAEnumGenderUnknown |
registerTime | long | 创建时间 | Y | 注册时间戳,单位为毫秒(1970以后) |
vip | int | 等级 | N | |
status | int | 状态 | N | 状态标识,-1: 锁定,1:未锁定 |
bindGameGold | int | 绑定钻石 | N | |
gameGold | int | 用户钻石数 | N | |
level | int | 用户等级数 | N | |
fighting | int | 战斗力 | N |
7.3.8 WAEventUserInfoUpdate
说明:更新用户资料
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
roleType | String | 角色类型 | N | |
nickname | String | 昵称 | N | |
vip | int | 等级 | N |
7.3.9 WAEventGoldUpdate
说明:玩家货币状况变更统计
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
approach | String | 变更途径 | Y | 开通VIP、任务获得、公会贡献、解锁背包等 |
goldType | int | 货币类型 | Y | 钻石,绑定钻石,金币,军魂等。 定义有1和2: 1、游戏货币; 2、游戏绑定货币 |
amount | int | 变更货币数 | Y | 消耗用负数表示,获取用正数表示 |
currentAmount | int | 用户变更以后该种货币的数量 | Y |
7.3.10 WAEventTaskUpdate
说明:玩家任务信息统计
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
taskId | String | 任务Id | Y | |
taskName | String | 任务名称 | Y | |
taskType | String | 任务类型 | Y | |
taskStatus | int | 任务状态 | Y | 状态标识: 1、领取任务 2、开始任务 3、待领奖(任务完成) 4、已领奖 |
7.3.11 WAEventUserImport
说明:导入用户事件
参数名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
isFirstEnter | int | 是否为第一次导入 | Y | 否为0,是为:1。默认为0。 |
7.3.12 自定义事件
事件描述:自定义事件
事件名称:自定义(必须以”ghw_self_”为前缀 可以用常量WAEventParameterNameCustomMethodPrefix)
参数:自定义
有无累计值:自定义
说明:支持自定义事件的统计
自定义(必须以”ghw_self_”为前缀 可以用常量WAEventParameterNameCustomMethodPrefix)
附表7.1货币标识
名称 | 标识 |
---|---|
人民币 | CNY |
美元 | USD |
港币 | HKD |
欧元 | EUR |
英镑 | GBP |
日元 | JPY |
加元 | CAD |
详见:https://en.wikipedia.org/wiki/ISO_4217
附表7.2 SDK预定义事件名
事件 | 常量名 | 值 |
---|---|---|
安装游戏 | WAEventLaunch | ghw_launch(SDK已集成,无需调用) |
打开游戏 | WAEventStartUp | ghw_startup(SDK已集成,无需调用) |
登录游戏 | WAEventLogin | ghw_login |
点击充值 | WAEventInitiatedPayment | ghw_initiated_payment(SDK已集成,无需调用) |
充值完成 | WAEventPayment | ghw_payment(SDK已集成,无需调用) |
点击购买 | WAEventInitiatedPurchase | ghw_initiated_purchase |
购买完成 | WAEventPurchase | ghw_purchase |
在线时长 | WAEventHeartBeat | ghw_heartbeat(SDK已集成,无需调用) |
等级或分数 | WAEventLevelAchieved | ghw_level_achieved |
创建角色 | WAEventUserCreate | ghw_user_create |
用户资料更新 | WAEventUserInfoUpdate | ghw_user_info_update |
玩家任务统计 | WAEventTaskUpdate | ghw_task_update |
货币状况变更 | WAEventGoldUpdate | ghw_gold_update |
导入用户事件 | WAEventUserImport | ghw_user_import |
附表7.3 SDK预定义参数名
参数意义 | 常量名 | 值 | 类型 | 备注 |
---|---|---|---|---|
货币类型 | WAEventParameterNameCurrencyType | currencyType | Stirng | 货币类型:如美元USD,人民币CNY详见货币表 |
现金额 | WAEventParameterNameCurrencyAmount | currencyAmount | Int | |
价钱 | WAEventParameterNamePrice | price | Double | |
道具类型 | WAEventParameterNameContentType | ContentType | String | |
道具ID | WAEventParameterNameContentID | contentId | Stirng | |
搜索内容 | WAEventParameterNameSearchString | searchString | Stirng | |
成功失败 | WAEventParameterNameSuccess | success | Bool | 0表示失败 1表示成功 |
是否可获得 | WAEventParameterNamePaymentInfoAvailable | ghw_payment_info_available | Bool | 1表示可获得 0表示不可获得 |
物品数量 | WAEventParameterNameItemAmount | itemAmount | Int | |
物品id | WAEventParameterNameItemId | itemId | Stirng | 道具id |
物品名称 | WAEventParameterNameItemName | itemName | Stirng | 道具名称 |
等级 | WAEventParameterNameLevel | level | Int | |
等级信息 | WAEventParameterNameLevelInfo | levelInfo | String | |
是否为第一次导入 | WAEventParameterNameIsFirstEnter | isFirstEnter | Int | |
等级类型 | WAEventParameterNameLevelType | levelType | Enum | //levelType typedef enum WALevelType{ // Highest level reached WALevelTypeHighestLevelReached = 1, // Current area level reached WALevelTypeCurrentArea = 2, // Current character level reached WALevelTypeCharacterLevel = 3, // Other sequential level reached WALevelTypeOtherSequential = 4, // Current non sequential level reached WALevelTypeOtherNonsequential = 5 } WALevelType; |
得分 | WAEventParameterNameScore | score | Int | |
描述 | WAEventParameterNameDescription | description | Stirng | |
性别 | WAEventParameterNameGender | gender | string | 性别(string): 0表示女,1表示男,2表示未知,分别有枚举: WAEnumGenderFemale WAEnumGenderMale WAEnumGenderUnknown |
年龄 | WAEventParameterNameAge | age | Int | |
WAEventParameterNameAccountType | accountType | Stirng | ||
设备id | WAEventParameterNameDeviceId | deviceId | Stirng | |
渠道id | WAEventParameterNameChannelId | channelId | Stirng | |
广告标识 | WAEventParameterNameIDFA | idfa | Stirng | |
交易流水号 | WAEventParameterNameTransactionId | transactionId | Stirng | |
支付类型 | WAEventParameterNamePaymentType | paymentType | Int | 0表示google支付,1表示apple支付,2表示赠送,分别有枚举: WAEnumPaymentTypeGoogle WAEnumPaymentTypeApple WAEnumPaymentTypeFree |
虚拟游戏币 | WAEventParameterNameVirtualCoinAmount | virtualCoinAmount | Int | |
道具名称 | WAEventParameterNameIAPName | iapName | Stirng | |
道具数量 | WAEventParameterNameIAPAmount | iapAmount | Stirng | |
道具id | WAEventParameterNameIAPId | iapId | Stirng | |
注册时间 | WAEventParameterNameRegisterTime | registerTime | String | 注册时间戳,单位为毫秒(1970以后) |
任务id | WAEventParameterNameTaskId | taskId | String | |
任务名称 | WAEventParameterNameTaskName | taskName | String | |
任务类型 | WAEventParameterNameTaskType | taskType | String | |
任务状态 | WAEventParameterNameTaskStatus | taskStatus | String | 状态标识: 1、领取任务 2、开始任务 3、待领奖(任务完成) 4、已领奖 |
角色名称 | WAEventParameterNameNickName | nickName | String | |
vip等级 | WAEventParameterNameVip | vip | Int | |
状态 | WAEventParameterNameStatus | status | Int | 状态标识, -1: 锁定 1:未锁定 |
游戏角色Id | WAEventParameterNameGameUserId | gameUserId | String | |
角色类型 | WAEventParameterNameRoleType | roleType | String | |
绑定钻石 | WAEventParameterNameBindGameGold | bindGameGold | Int | |
用户钻石数 | WAEventParameterNameGameGold | gameGold | Int | |
战斗力 | WAEventParameterNameFighting | fighting | Int | |
货币类型 | WAEventParameterNameGoldType | goldType | String | 货币类型(string) 钻石,绑定钻石,金币,军魂等。 预定义有1和2: 1:游戏货币 2:游戏绑定货币 |
变更途径 | WAEventParameterNameApproach | approach | String | |
当前货币数量 | WAEventParameterNameCurrentAmount | currentAmount | Int | 用户变更以后该种货币的数量 |
变更货币数 | WAEventParameterNameAmount | amount | Int |
附表7.4渠道名称表
常量 | 代表渠道 |
---|---|
WA_PLATFORM_APPSFLYER | Appsflyer |
WA_PLATFORM_FACEBOOK | |
WA_PLATFORM_WINGA | WINGSDK |
WA_PLATFORM_CHARTBOOST | ChartBoost |