iOS对接文档

WINGSDK_iOS使用指南(v3.6.2)

wapublisher No Comments

一、简介

1.1 用户模块

提供 UI界面 和 接口调用 两种方式,满足用户不同需求。

1.1.1 登录弹窗

内置登录UI弹窗,内含所有已经集成的登录方式,无需编写界面,一键集成登录功能

1.1.2 匿名登录

WINGSDK匿名登录无需账户密码,根据设备信息新建用户或登录已存在的用户,可以快速登录游戏。

1.1.3 第三方平台登录

第三方平台登录接口可以通过第三方平台账户登录,返回WINGSDK账号信息,使用没有绑定任何WINGSDK账号的第三方平台账号登录,会自动新建一个WINGSDK账号,并且与该平台账号绑定。支持Facebook登录、Google登录、VK登录。

1.1.4 内置账户管理界面

内置账户管理UI界面,无需编写界面和逻辑,即可对账户进行管理,平台账户绑定情况一目了然,绑定、解绑平台账户,新建账号,切换账号,轻松搞定。

1.1.5 账号绑定与解绑

  • 账号绑定接口,可以将WINGSDK账号跟第三方平台的账号绑定,绑定成功后可以使用绑定的平台账号登录,在同一应用中一个平台账号只能绑定一个WINGSDK账号。

  • 账号解绑接口,可以将第三方平台账号与其绑定的WINGSDK账号解绑,解绑成功后,平台账号可以与WINGSDK账号再次绑定。

  • 绑定账号查询接口,能够查询此时登录的账号(WINGSDK)已经绑定的第三方平台账号列表。

1.1.6 账号切换

一键切换账号,迅速切换WINGSDK账号或者第三方账号。

1.2 支付模块

支付模块提供支付充值接口,集成简单,无需理会复杂的支付流程,轻松完成商品的购买(充值)。

1.3 数据收集模块

数据收集模块提供了数据收集的接口,多渠道灵活调用。数据收集包含了丰富的应用内的事件类型,还支持用户自定义事件类型。

1.4 社交模块

社交模块,为游戏提供社交功能支持,一键集成,功能丰富。社交模块包含以下功能:
1、分享接口,支持分享链接、文字、图片、视频、Facebook OpenGraph;
2、应用邀请,一键邀请好友;
3、游戏邀请,邀请还没有玩过该游戏的好友跟自己一起玩这款游戏,邀请好友一起玩游戏,还有丰富的邀请奖励;
4、礼物接口,可以向正在和自己玩同一款游戏的好友赠送礼物或者索要礼物,加强玩家的互动;
5、Game Service,游戏互动更简单;
6、社区,提高玩家的积极性和互动。

1.5 应用墙模块

应用墙模块,提供应用、游戏的推广下载,引导用户安装。

注意:此模块会对苹果应用商店上架造成一定的风险,请酌情使用。

二、快速集成

2.1 环境配置要求

1、系统:Mac OS
2、开发工具:Xcode(8.0及以上)
3、Deployment Target:iOS7.0及以上版本
4、BaseSDK iOS 10.1及以上

2.2 集成SDK到项目

集成SDK需要引用抽象层和实现层。抽象层对接口进行抽象,使用反射机制调用到实现层中具体的代码逻辑。
抽象层主要包括WASdkIntf.framework,以及配置文件wa_sdk_track_config.plistwa_sdk.plist,如下图。
集成SDK到项目
关于wa_sdk_track_config.plist详见2.6.1 配置 (wa_sdk_track_config.plist),关于wa_sdk.plist详见2.2.2 WINGSDK基本配置(wa_sdk.plist)
当调用抽象层接口时候,请导入头文件:
#import <WASdkIntf/WASdkIntf.h>

SDK集成的第三方SDK如下表:

第三方SDK 版本 说明
FACEBOOK 4.18.0
APPSFLYER 4.5.12
CHARTBOOST 6.6.0
VK 1.4.2

2.2.1 库的引用

SDK的抽象层和实现层以framework的形式提供,CP可以使用cocoapods的方式或者自行下载framework拖进xcode项目的方式进行引用。

方式一:使用cocoapods进行引用

CP可以使用Cocospods进行引用更新。

这部分脚本请使用WINGSDK打包配置页面生成,CP可以将生成的脚本代码复制到自己的Podfile中。
WINGSDK打包配置页面地址:https://admin.wingsdk.com/developers/pack_config.do

目前SDK提供的库包括:
抽象层:

  • WASdkIntf——必接

实现层:

  • WASdkImpl(WingSdk)——必接

  • WAAfImpl(Appsflyer)——可选

  • WAApImpl(Apple)——可选

  • WACbImpl(Chartboost)——可选

  • WAFbImpl(Facebook) ——可选

  • WAVkImpl(VK)——可选

  • WAWebPayImpl(WebPay)——可选

提示:使用CocoaPod引用的项目打开项目时需要点击’xcworkspace’而不是’ xcodeproj’

方式二:手动引用

如果手动引用,可以使用WINGSDK打包配置页面https://admin.wingsdk.com/developers/pack_config.do进行各个包的下载,并添加到xcode项目中。
cocoapods手动引用

下载完成后解压,把解压后的文件拖入xcode工程,其中WASdkIntf和WASdkImpl是必接库,其它可选。

2.2.2 WINGSDK基本配置(wa_sdk.plist)

iOS-WINGSDK配置
参数说明:
WaSdkServerUrl:WINGSDK后台url(生产环境:https://api.wingsdk.com/sdkapi/)
appKey:WINGSDK后台appKey
appId:WINGSDK后台appId
os:手机操作系统
channel:发布渠道

2.3 SDK初始化

1、请在AppDelegate的didFinishLaunchingWithOptions 调用下面代码:

2、在AppDelegate的applicationDidEnterBackground调用下面代码:

3、在AppDelegate的applicationWillEnterForeground调用下面代码:

2.4 登录

2.4.1 登录对话框

SDK内置了一个包含所有支持的登录方式的一个对话框,通过调用以下接口打开对话框:

2.4.1.1 实现协议 WALoginViewDelegate

3.4.1.2 调用方法

+(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled;
cacheEnabled是否缓存登录方式。如果缓存登录方式,第二次调用的时候直接按照上次的登录方式进行登录,不会弹出登录选择框。如果想弹出登录选择框,请调用clearLoginCache方法,清除缓存
代码示例:

2.4.1.3 清除登录方式的缓存(重新弹出登录选择框)

+(void)clearLoginCache;
代码示例:

2.4.1.4 隐藏登录选择框

+(void)hide;
代码示例:

2.4.2 用户登录接口

如果CP有自己的登录窗口,可以使用WINGSDK登录接口:

2.4.2.1登录接口

(1)选择登录方式

+(void)loginWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WALoginDelegate>)delegate;
注:extInfo目前主要用于应用内登录等高级登录设置,请参考3.3.2 应用内登录相关章节
代码示例:facebook登录

登录平台请参考5.1.2 平台取值

(2)登录过程的应用间跳转

请在AppDelegate实现以下方法:

2.4.2.2 实现协议WALoginDelegate中定义的方法

说明:关于APPLE登录,用户每次进入APP进行登录操作,Game Center只进行一次授权。假如用户在第一次登录的时候取消了,以后每次进行登录,程序都会执行登录取消的协议方法,除非用户结束应用重新打开。同样的,第一次登录的时候,出现Game Center授权错误,之后程序都会执行登录失败的协议方法,除非用户结束应用重新打开。

2.4.3 用户登出

退出游戏的时候,必须登出操作。用户登出调用以下接口:
[WAUserProxy logout];
注意:调用logout接口后,serverId、gameUseId、level字段值会被重置,如果需要保持相应字段的值不重置,需要重新设置相应字段的值,参考3.1 公共参数设置

2.5 支付

WINGSDK支付流程如下:
支付流程

2.5.1 初始化

使用对应平台的支付服务前必须对其进行初始化,请在AppDelegate的didFinishLaunchingWithOptions方法调用以下方法。
+(void)init4Iap;
代码示例:

2.5.2 查询商品

2.5.2.1 实现协议 WAInventoryDelegate

2.5.2.2 调用方法
查寻库存商品,调用以下接口:
+(void)queryInventoryWithDelegate:(id<WAInventoryDelegate>)delegate;
代码示例:

2.5.3 购买商品

2.5.3.1 实现协议 WAPaymentDelegate

支付结果说明 WAIapResult

字段名 类型 说明 备注
productIdentifier NSString 商品id
resultCode long 支付结果代码 1.支付成功
2.支付失败
3.用户取消
4.支付成功,上报失败
5.商品消耗中
6.创建订单失败

2.5.3.2 调用方法

购买指定平台的商品,调用以下接口:
+(void)payWithProductId:(NSString*)productId extInfo:(NSString*)extInfo delegate:(id<WAPaymentDelegate>)delegate;
代码示例:

参数说明:

参数名 类型 必填 说明 备注
productId String Y 库存商品的id wingsdk平台的商品id
extInfo String N 额外信息,该信息会在支付成功后原样通知到CP服务器,CP用于检验 CP 扩展信息,CP通过客户端SDK 传入,发货通知原样返回,CP可用此字段检验订单信息。如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为JSON,参数名为 deliverUrl,参考格式
{
“deliverUrl”:” http://game.com/deliver.do”,
“otherInfo”:”otherInfo”,
“merId”:””
}
merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。如果是 APPLE支付渠道,merId使用客户端bundleId

2.5.4支付服务是否可用

通过以下接口可以获取支付服务是否可用,返回boolean类型结果,true为可用,false为不可用,只要有一个支付渠道可用即为true:
+(BOOL)isPayServiceAvailableWithPlatform;
代码示例:

2.6 数据收集

使用WINGSDK数据收集接口配合大数据平台,可以轻松统计玩家习惯以及充值等行为,为游戏的市场营销提供数据依据。WINGSDK数据收集使用在游戏的过程中打点的方式,如图所示:
iOS-数据收集流程图

以上流程图中涉及到的几个接口:setServerId、setGameUserId、setLevel、ghw_user_import事件、ghw_user_create事件是有时序要求的,其它的事件如ghw_initiated_purchase、ghw_purchase、ghw_level_achieved、ghw_user_info_update、ghw_gold_update和ghw_task_update事件则需要在事件发生的对应时机调用接口发送。

2.6.1 配置 (wa_sdk_track_config.plist)

对各个平台进行相应的配置(修改wa_sdk_track_config.plist)。注:文件名以及key值不可修改。
iOS-数据收集功能模块
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关,Enable: YES-开,NO-关。
iOS-数据收集功能模块
WINGSDK URL正式环境的地址: https://api.wingsdk.com/data/

2.6.2 调用

2.6.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

2.6.2.2 工程启动时初始化

您需要在第一次启动在应用程序上进行SDK初始化。请保证在发送下面的跟踪事件之前进行SDK初始化。请在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码:
[WACoreProxy initAppEventTracker];

2.6.2.3 调用事件进行追踪

安装和打开游戏事件是内部触发的,另外关于充值事件(WAEventPayment)和点击充值(WAEventInitiatedPayment)的跟踪已经在WINGSDK中自动调用,用户不用自己调用。若不想启用这两个事件的自动跟踪,可在didFinishLaunchingWithOptions进行如下操作:
[WATrackProxy autoTriggerAfterPayment:NO];
调用方法有两种。方法一调用方法简单,但是发送到各个渠道的事件名称(eventName)、参数(params)、累加值(value)是一样的。如果需要自己设置事件名称、参数、累加值,请使用方法二。

2.6.2.3.1 方法一

注:当使用带有小数点的数值时,使用NSDecimalNumber类型,如[NSDecimalNumber decimalNumberWithString:@"8.88"];
调用事件的用法如下:
+(void)trackWithEventName:(NSString *)eventName valueToSum: (double)value params:(NSDictionary *)params;
-eventName:事件名称可在附表中查询
-valueToSum:传入一个double值作为累加值,没有累加值可以传0。
-params:参数字典参数可在附表中查询
例如:

调用购买事件WAEventPayment,
参数:WAEventParameterNameContentType道具类型,
WAEventParameterNameContentID内容ID,
WAEventParameterNameItemAmount购买数量,
WAEventParameterNameCurrencyType货币类型,
WAEventParameterNameCurrencyAmount现金额

2.6.2.3.2 方法二

注:当使用带有小数点的数值时,使用NSDecimalNumber类型,如[NSDecimalNumber decimalNumberWithString:@"8.88"];

2.6.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

2.6.2.3.2.2 关于WAEvent 实例的构建

(1)设置默认的事件名称

设置该事件的事件名称,请参考5.2.1 SDK 预定义事件名
event.defaultEventName = WAEventLevelAchieved;

(2)设置渠道自定义事件名称

注:
1)eventNameDict的key参考附表 2.6.2 渠道名称表
2)AppsFlyer和facebook的应用内事件和WINGSDK的应用内事件已经做了映射(例如: ghw_login <-> af_login,ghw_login<->fb_login,参考下图),用户无需再手动自定义。
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultEventName)。

iOS-各渠道事件映射对应表

各渠道事件映射对应表

(3)设置默认累加值

设置累加值用于统计数字,比如购买的金额等
event.defaultValue = 1;

(4)设置渠道自定义累加值

1)valueDict的key值参考 附表2.6.2 渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。

(5)设置事件默认的参数/值

注:
1)参数名称参考5.2.2 SDK 预定义参数名

(6)设置事件渠道自定义的参数/值

注:
1)渠道名称参考:附表 2.6.2 渠道名称表
2)参数名称参考:5.2.2 SDK 预定义参数名
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultParamValues)

(7)渠道开关设置

注:以上代码会关闭Appsflyer对该事件的收集,而Facebook、WINGSDK、Chartboost是打开的。默认情况下,WINGSDK和Appsflyer是打开的,而Facebook和Chartboost是关闭的。

2.6.3 预定义事件

建议参数属性:(参数对应的静态变量名请看5.2.2 SDK 预定义参数名

2.6.3.1 WAEventUserImport

说明:导入用户事件,用户每次进服事件–通过用户id在后台查找

参数名 类型 说明 必填 备注
isFirstEnter int 是否为第一次导入 Y 否为0,
是为:1。
默认为0。

注意:发送WAEventUserImport事件前需要调用3.1.1 设置服务器ID 接口更新服务器id

2.6.3.2 WAEventInitiatedPurchase

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)
无参数

2.6.3.3 WAEventPurchase

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。
注:valueToSum(或者defaultValue)的值要传,而且值要和price一样。

参数名 类型 说明 必填 备注
itemName String 游戏内虚拟物品的名称/ID Y
itemAmount int 交易的数量 Y
price float 交易的总价 Y

2.6.3.4 WAEventLevelAchieved

说明:统计玩家等级增长事件,达到等级时调用。

参数名 类型 说明 必填 备注
score int 账户分数 N
fighting int 战斗力 N

注意:发送事件前WAEventLevelAchieved需调用3.1.3 设置用户等级level 接口更新用户等级信息。

2.6.3.5 WAEventUserCreate

说明:创建游戏角色

参数名 类型 说明 必填 备注
roleType string 角色类型 N
nickname String 角色名(昵称) Y
gender int 角色性别 N 性别: 0表示女,
1表示男,
2表示未知
registerTime long 创建时间 Y 注册时间戳,单位为毫秒(1970以后)
vip int 等级 N
status int 状态 N 状态标识:
-1: 锁定,
1:未锁定
bindGameGold int 绑定钻石 N
gameGold int 用户钻石数 N
fighting int 战斗力 N

2.6.3.6 WAEventUserInfoUpdate

说明:更新用户资料

参数名 类型 说明 必填 备注
roleType String 角色类型 N
nickname String 昵称 N
vip int 等级 N
status int 状态标识:
-1:锁定,
1:未锁定
N

2.6.3.7 WAEventGoldUpdate

说明:玩家货币状况变更统计

参数名 类型 说明 必填 备注
approach String 变更途径 Y 开通VIP、任务获得、公会贡献、解锁背包等
goldType int 货币类型 Y 钻石,绑定钻石,金币,军魂等。
定义有1和2:
1->游戏货币;
2->游戏绑定货币
amount int 变更货币数 Y 消耗用负数表示,获取用正数表示
currentAmount int 用户变更以后该种货币的数量 Y

2.6.3.8 WAEventTaskUpdate

说明:玩家任务信息统计

参数名 类型 说明 必填 备注
taskId String 任务Id Y
taskName String 任务名称 Y
taskType String 任务类型 Y
taskStatus int 任务状态 Y 状态标识:
1→领取任务,
2→开始任务,
3→待领奖(任务完成),
4→已领奖

2.6.4 自定义事件

事件描述:自定义事件
事件名称:自定义
参数:自定义
有无累计值:自定义

说明:支持自定义事件的统计
自定义

附表 2.6.1 货币标识

名称 标识
人民币 CNY
美元 USD
港币 HKD
欧元 EUR
英镑 GBP
日元 JPY
加元 CAD

详见:https://en.wikipedia.org/wiki/ISO_4217

附表 2.6.2 渠道名称表

常量 代表渠道
WA_PLATFORM_APPSFLYER Appsflyer
WA_PLATFORM_FACEBOOK Facebook
WA_PLATFORM_WINGA WINGSDK
WA_PLATFORM_CHARTBOOST ChartBoost

三、高级功能

3.1 公共参数设置

WINGSDK包括serverId等公共参数,这些参数主要用于数据跟踪和统计。公共参数必须严格按照文档进行配置,在后续的接口中会使用到这些公共的参数,没有按照要求配置会导致部分接口调用失败。

3.1.1 设置服务器ID

当用户的服务器ID发生改变时,需要调用设置服务器ID接口设置新的服务器ID,例如每次进入服务器:
[WACoreProxy setServerId: @"127.0.0.1"];
注意:设置服务器ID的操作在每次选服后都需要进行,必须在调用其他接口前设置。

3.1.2 设置用户gameUserId

用户在选择服务器并且登录之后将用户gameUserId设置到SDK中以便于跟踪。
[WACoreProxy setGameUserId:@"12345"];

3.1.3 设置用户等级level

设置游戏玩家的角色等级,调用接口:
[WACoreProxy setLevel:10];
注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级,必须在调用其他接口前设置。

3.2 调试模式

WINGSDK具备调试模式并提供了Log悬浮按钮调试工具,打开调试模式就会显示Log悬浮按钮,使用这个工具测试人员不需要IDE环境就可以在工具窗口中查看调试信息。开启/关闭调试模式调用以下接口(WINGSDK默认是关闭调试模式的)。
[WACoreProxy setDebugMode:YES];
关闭调试模式:
[WACoreProxy setDebugMode:NO];

3.3 登录高级设置

3.3.1 设置登录流程接口

使用该接口需注意以下两点:
1)一般来说,如果应用登录的时候有登录方式选择界面,就不需要使用此接口,此接口默认是这种方式(取值为1)。

2)这个接口主要是用来满足以下需求:用户第一次登录是以游客方式进行登录,进到应用里面可以切换其它登录方式,下次登录会直接以切换后的账户进行登录(取值为2)。

+(void)setLoginFlowType:(int)flowType;
代码示例:
[WAUserProxy setLoginFlowType:WA_LOGIN_FLOW_TYPE_DEFAULT];
登录流程有两种模式,在WAConstants类中定义,取值如下表:

名称 取值 备注
WA_LOGIN_FLOW_TYPE_DEFAULT 1 适用于有登录界面的场景,登录的时候不会重新绑定设备
WA_LOGIN_FLOW_TYPE_REBIND 2 适用于无登录界面的场景,登录时重新将新账号与当前设备绑定,如在游戏中切换账户,切换以后的匿名登录是以切换后的账户进行登录。

3.3.2 应用内登录

SDK平台应用内登录,是指CP本身有自己登录系统,先登录CP后台拿到用户信息后登录SDK后台,应用内登录调用接口 2.4.2 用户登录接口,将CP后台返回的用户信息按照规定格式(JSON字符串)通过extInfo字段传入。

应用内登录extInfo格式(标准JSON格式字符串)

字段说明:

字段名 类型 说明 必填 备注
appSelfLogin boolean 应用内登录固定值true Y
appUserId String CP用户id Y
appToken String CP用户Token Y
extInfo String 额外信息 N SDK后台会将此字段内容传回CP服务器

3.4 账户管理

3.4.1 使用账户管理页面

SDK内置了账户管理页面,打开这个内置的页面之前必须先登录,通过这个页面可以对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户。

3.4.1.1 实现协议 WAAcctManagerDelegate

3.4.1.2 调用方法

+(void)openAccountManager:(id<WAAcctManagerDelegate>)delegate;

代码示例:

3.4.1.3 关于绑定解绑的通知

账户管理界面没有返回绑定和解绑结果,但是会以通知的方式将结果回调给CP。当绑定有结果之后(无论成功失败),将回传一个WABindingResult实例。当解绑有结果(无论成功失败),将回传一个WAAccount实例。有四个通知,分别是绑定成功、绑定失败、解绑成功、解绑失败,通知的名称分别是以下常量:
WABindDidSucceedNotification;//绑定成功
WABindDidFailNotification;//绑定失败
WAUnbindDidSucceedNotification;//解绑成功
WAUnbindDidFailNotification;//解绑失败

注:关于绑定facebook成功之后,请注意触发邀请奖励。代码如下:

3.4.2 绑定第三方平台账户

3.4.2.1 实现协议WAAccountBindingDelegate

说明:关于APPLE账号的绑定,请参考2.4.2.2 实现协议WALoginDelegate中定义的方法的说明。

3.4.2.2 调用方法

+(void)bindingAccountWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WAAccountBindingDelegate>)delegate;
绑定平台取值:

名称 取值 备注
WA_PLATFORM_FACEBOOK FACEBOOK FACEBOOK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_VK VK VK平台

示例代码:

3.4.3 查询已经绑定的第三方平台账户

通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:
+(void)queryBoundAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block;

示例代码:

3.4.4 解绑第三方平台账户

通过以下接口,可以解绑已经绑定的第三方平台账户:
+(void)unBindAccountWithPlatform:(NSString *const)platform platformUserId:(NSString*)pUserId completeBlock:(void(^)(NSError* error))completeBlock;
有以下情况之一者,不可解绑:
1.解绑的账户为WINGSDK平台的;
2.用户没有绑定第三方平台账户的;
3.用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的。
示例代码:

3.4.5 切换账户

使用以下接口可以快速切换登录的账户
+(void)switchAccountWithPlatform:(NSString *const)platform completeBlock:(void(^)(NSError* error,WALoginResult* result))completeBlock;

3.4.6 新建账户

+(void)createNewAccountWithCompleteBlock:(void(^)(NSError* error,WALoginResult* result))completeBlock;

新建账户后,新的账户会跟当前设备绑定,如果之前的账户没有绑定第三方平台账户,数据将会丢失。
代码示例:

3.4.7获取账户信息

SDK提供了获取指定平台的账户信息,可以通过以下接口获取:

+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;

示例代码:

3.5 应用墙模块功能

3.5.1 应用墙使用

WINGSDK应用墙包含了应用推荐等功能。

3.5.2显示应用墙入口悬浮按钮

[WAApwProxy showEntryFlowIcon];

3.5.3隐藏应用墙入口悬浮按钮

[WAApwProxy hideEntryFlowIcon];

3.6 社交

3.6.1 分享

3.6.1.1 实现协议 WASharingDelegate

3.6.1.2 调用方法

分享调用以下接口,支持分享链接、图片、视频、Facebook OpenGraph:
+(void)shareWithPlatform:( NSString *const)platform shareContent:(NSObject<WASharingContent>*)shareContent shareWithUI:(BOOL)shareWithUI delegate:(NSObject<WASharingDelegate>*)delegate;
示例代码:

参数说明:

参数名 类型 必填 说明 备注
shareContent NSObject* Y 分享内容
shareWithUI BOOL Y 是否通过UI分享 设置为YES时直接通过UI分享,有界面。设置为NO时通过API分享,没有界面。
delegate NSObject* N 委托

3.6.1.3 实体说明

3.6.1.3.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 配图

3.6.1.3.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 图片描述

3.6.1.3.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

3.6.2 应用邀请

使用应用邀请必须先在facebook后台配置,请参考第三方后台配置—iOS版 2.3 Facebook应用邀请配置

3.6.2.1 实现协议 WAAppInviteDialogDelegate

3.6.2.2 调用方法

+(void)appInviteWithPlatform:(NSString *const)platform Content:(WAAppInviteContent*)content delegate:(NSObject<WAAppInviteDialogDelegate>*)delegate;
代码示例:

WAAppInviteContent实体说明:

参数名 类型 必填 说明 备注
appLinkURL NSURL Y 分享链接
appInvitePreviewImageURL NSURL Y 预览图片url地址

3.6.3 发送请求接口

发送请求接口向平台好友发送请求,请求包括普通请求、游戏邀请(详见3.6.4 游戏邀请)、赠送礼物、索要礼物(礼物详见3.6.5 礼物)等,发送请求调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
platform NSString Y 平台类型 平台类型在WAConstants类中定义,目前支持VK以及FACEBOOK
requestType NSString Y 请求类型 请求类型默认的在WAConstants下有定义,请参考5.1.3 请求类型说明
title NSString Y 标题 部分平台需要显示
message NSString Y 说明文字 部分平台需要显示
objectId NSString N 对象id 部分请求类型必填,比如发送礼物,为礼物对象id
receiptIds NSArray Y 接收者id 根据平台而定,有些平台支持一次发送请求给多个用户,有些平台一次只能发送给一个用户。VK平台一次只能发送一个用户
delegate NSObject N 代理

示例代码:

3.6.4 游戏邀请

3.6.4.1 查询可邀请好友列表

游戏邀请只能邀请没有玩过当前游戏的好友,称为可邀请好友,查询可邀请的好友调用以下接口:
+(void)queryInvitableFriendsWithDuration:(float)duration completeBlock:(void(^)(NSArray* friends,NSError *error))block;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
block String Y 回调
duration long Y 过滤时间间隔 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友

3.6.4.2 游戏邀请(@since v3.5.2 使用发送请求接口代替)

3.6.4.2.1 实现协议 WAGameRequestDialogDelegate

3.6.4.2.2 调用方法

发送游戏邀请请求调用以下接口(注:VK平台一次只能发一次邀请给一个好友):
+(void)gameInviteWithPlatform:(NSString *const)platform Content:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
代码示例:

注:如果是VK平台 actionType必须赋值(gameRequestContent.actionType = WAGameRequestActionRequest) VK平台有两个actionType: WAGameRequestActionInvite, WAGameRequestActionRequest。在游戏的测试阶段,请用WAGameRequestActionRequest进行测试。正式上线的时候修改为WAGameRequestActionInvite,参照下图。
vk上线流程图

3.6.4.3 邀请成功记录

成功邀请好友后,在协议方法-gameRequestDialog:platform:didCompleteWithResults:中调用以下接口向服务器记录邀请信息:
+(void)createInviteInfoWithPlatform:(NSString *const)platform results:(NSDictionary*)results handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
示例代码:

3.6.4.4 邀请安装奖励

通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,必须在玩家进行登录成功或者绑定成功之后时候调用
+(void)inviteInstallRewardPlatform:(NSString *const)platform TokenString:(NSString*)tokenString handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
示例代码:

3.6.4.5 邀请事件奖励

通过邀请安装使用的用户,在触发定义的特定事件,需要通知服务器奖励邀请人,比如等级达成、充值等,调用以下接口:
+(void)inviteEventRewardWithPlatform:(NSString *const)platform eventName:(NSString*)eventName handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;

代码示例:

3.6.5 礼物

3.6.5.1 查询好友

查询指定平台正在玩游戏的好友列表,调用以下接口:
+(void)queryFriendsWithCompleteBlock:(void(^)(NSArray<WAAppUser *>* friends,NSError *error))block;

示例代码:

3.6.5.2 查询Facebook Graph Object

Facebook的礼物就是在Facebook控制台创建的Graph Object,查询礼物列表的时候调用这个接口,这个接口只针对Facebook平台。

+(void)queryFBGraphObjectsWithObjectType:(NSString*)objectType completeBlock:(void(^)(NSArray<WAFBObject*>* objects,NSError *error))block;

代码示例:
objectType 必须赋值 请参考第三方后台配置—iOS版 2.4 Facebook后台新建礼物

3.6.5.3 Facebook赠送礼物(@since v3.5.2 使用发送请求接口 代替)

使用facebook礼物功能,请先在facebook后台配置相关信息,详情请参考第三方后台配置—iOS版2.4 Facebook后台新建礼物
Facebook用户向游戏内的好友赠送礼物。

3.6.5.3.1 实现协议 WAGameRequestDialogDelegate

3.6.4.2.1 实现协议 WAGameRequestDialogDelegate

3.6.5.3.2 调用方法

+(void)fbSendGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:

3.6.5.4 Facebook索要礼物(@since v3.5.2 使用发送请求接口 代替)

Facebook用户向游戏内的好友发出索要礼物的请求。

3.6.5.4.1 实现协议 WAGameRequestDialogDelegate

3.6.4.2.1 实现协议 WAGameRequestDialogDelegate

3.6.5.4.2 调用方法

+(void)fbAskForGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:

3.6.5.5 Facebook查询收到的礼物

Facebook用户查询好友赠送给自己的礼物,调用以下接口:

+(void)fbQueryReceivedGiftsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* gifts,NSError *error))block;

示例代码:

3.6.5.6 Facebook查询向自己索要礼物的请求

Facebook用户查询好友向自己索要礼物的请求,调用以下接口:
+(void)fbQueryAskForGiftRequestsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* requests,NSError *error))block;
示例代码:

3.6.5.7 删除请求

Facebook中用户收到的礼物,好友向自己索要礼物的请求都是一个Facebook的请求,收取礼物和拒绝赠送礼物的时候,需要删除掉对应的请求。删除请求调用以下接口:

+(void)fbDeleteRequestWithRequestId:(NSString*)requestId completeBlock:(void(^)(id result,NSError *error))block;

示例代码:

3.6.6 社区

3.6.6.1 通过Group id查询Group详情

通过Group id查询Group详情,调用以下接口:
+(void)getGroupWithPlatform:(NSString *const)platform groupIds:(NSArray*)groupIds extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

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 跳转到浏览器对应的页面

3.6.6.2 查询当前应用关联的Group

一个应用只能关联一个Group,通过以下接口可以查询当前应用关联的Group详细信息:
+(void)getCurrentAppLinkedGroupWithPlatfrom:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

3.6.6.3 查询当前用户已加入的Group

查询当前用户加入的Group详细信息调用以下接口:
+(void)getCurrentUserGroupWithPlatfrom:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

3.6.6.4 查询当前应用推荐的所有Group

这是3.6.6.2 查询当前应用关联的Group3.6.6.3 查询当前用户已加入的Group查询到的Group的汇总,调用以下接口:

+(void)getGroupsWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

3.6.6.5 加入Group

加入指定的某个Group,调用以下接口:

+(void)joinGroupWithPlatform:(NSString *const)platform groupId:(NSString*)groupId extInfo:(NSString *const)extInfo completeBlock:(void(^)(NSError* error))block;

示例代码:

3.6.6.6 进入Group详情页

进入Group的详情页面,调用以下接口:

+(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 额外数据信息 扩展字段,根据各个平台需要定义

示例代码:

四、第三方配置

4.1 Facebook相关配置

4.1.1 Facebook基本配置

如果不需要Facebook渠道,请忽略此章节
具体配置请参考第三方后台配置—iOS版 二、Facebook第三方登录后台配置
1、在facebook开发者平台创建一个Facebook应用,创建完之后会生成App ID和App Secret
这里的App ID要配置在项目当中,作为客户端与后台服务器连接的标识
iOS-Facebook基本配置
iOS-Facebook基本配置
2、在Xcode中配置相应的信息,主要是在info.plist文件中配置URL Schemes、FacebookAppID、FacebookDisplayName。注意一定要对应到facebook后台该App的App ID和Display Name。参考步骤1的截图。

3、针对iOS9做的一些配置
(1)Whitelist Facebook Servers for Network Requests
在info.plist增加下面配置

(2)Whitelist Facebook Apps

4.1.2 Facebook登录权限对照表

权限 类型 权限取值 说明
读取用户配置 string public_profile
读取好友列表 string user_friends
发布权限 string publish_actions 通过api层分享需要这个权限

4.1.3 Facebook后台新建Graph Object

具体配置请参考第三方后台配置—iOS版2.4 Facebook后台新建礼物

WAFBGraphObject 中的字段与新建Object字段对照(“-”标识系统自动生成)

WAFBGraphObject 新建Object
id
title og:title
type
isScraped
createdTime
description og:description
imageUrl og:image
data 所有自定义的的字段Map,key为字段名,不包含namespace,比如新建com_ghw_sdk:gift_type字段,在data Map中namespace 为com_ghw_sdk,key为gift_type。

4.2 APPLE相关配置

如果不需要APPLE渠道,请忽略此章节
具体配置请参考第三方后台配置—iOS版 一、Apple后台应用配置

4.3 Appsflyers 相关配置

如果不需要Appsflyers渠道,请忽略此章节
1.数据收集配置:详见2.6.1 配置 (wa_sdk_track_config.plist)

4.4 Chartboost 相关配置

如果不需要Chartboost渠道,请忽略此章节
1.数据收集配置:详见2.6.1 配置 (wa_sdk_track_config.plist)

4.5 VK相关配置

在xcode配置URL Schemes:
在VKapp管理后台https://vk.com/apps?act=manage找到对应App的配置信息。将下图中Application ID(标注1)填到Xcode中的URL Schemes(标注2)。注意加上前缀vk。
iOS-VK配置1
iOS-VK配置2

五、附录

5.1 代码说明

5.1.1 状态码说明

SDK所有的状态码都定义在枚举WACode中,详见下表:

枚举名称 取值 说明
WACodeSuccess 200 成功
WACodeError 400 错误
WACodeUnautherized 401 请求未认证:访问受限资源是缺少认证信息,或者认证未通过
WACodeForbiden 403 禁止访问:由于应用上下文原因或请求端上下文的原因被禁止访问资源,例如IP限制等
WACodeNotFound 404 找不到被访问资源:接口不存在、页面不存在或对应的业务实体找不到
WACodeServerError 500 服务器内部故障
WACodeApiInvalid 501 所请求接口或页面未实现
WACodeSdkAppIdInvalid 4010 无效appId: appId不存在或未开启
WACodeSignError 4011 无效osign:osign校验失败
WACodeRequestTimeOut 4012 请求已过期:ots校验失败
WACodeAccountVerifyError 4013 第三方平台验证失败
WACodeAccountVerifyError 4014 访客登录验证失败,登录验证失败
WACodePlatformBoundAlready 4015 用户已经绑定了这个平台的其他账户
WACodePrePlatformVerifyError 4016 prePlatform验证失败
WACodeUserNotFound 4017 用户不存在(没有找到)
WACodeAccountBoundByOthers 4018 账户已经被其他用户绑定
WACodeOrderIdInvalid 4019 无效orderId
WACodeOrderVerifyError 4020 订单验证失败
WACodeRewardNotFound 4021 FB邀请奖励事件未找到奖励政策
WACodeRepeatCrashReport 4022 闪退发送报告重复
WACodeChannelNotFound 4023 未找到渠道信息
WACodeCanNotUnbind 4024 不可以执行解绑操作
WACodeExchangeRateConversionFailure 4025 汇率转换失败
WACodePayPlatformClosed 4026 支付渠道已关闭
WACodeLoginPlatformClosed 4029 登录渠道已关闭
WACodeCanNotSwitchToAnonymous 5001 切换到匿名
WACodeFbObjectType 5002 facebook的objectType不能为空
WACodeFbGiftListRequestPrameterLack 5003 请求gift列表缺少appid,appSecret,objectType参数
WACodeFbTokenNull 5004 facebook token为空
WACodeCanNotMakePayment 5005 该设备不能支付或者不允许支付
WACodePaymentError 5006 支付过程中出错
WACodeCancelled -100 取消操作
WACodeSdkUninitialized -200 SDK没有初始化
WACodeContentCanNotBeShared -201 内容不可分享,一般是传入的内容为空,或者其他
WACodeNotLogin -202 没有登录
WACodeLoginFailure -203 登录失败
WACodeNoPermission -204 登录没有获取到相应的权限
WACodeFileSizeLimit -206 文件大小超出限制
WACodeCurrentIDNotMatch -211 登录的平台账户和当前用户不匹配
WACodeDeviceNotSupported -401 设备不支持
WACodeNetworkUnavailable -402 网络不可用
WACodePayReOrderTimeLimit -509 支付:订单时间间隔限制(在特定的时间内重复下订单)

5.1.2 平台取值

常量 取值 备注
WA_PLATFORM_WINGA WINGA WA平台,分匿名登录和应用内登录
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_FACEBOOK FACEBOOK Facebook平台
WA_PLATFORM_VK VK VK平台

5.1.3 请求类型说明

取值值 说明 备注
INVITE 邀请
REQUEST 普通请求
SEND 发送礼物 objectId不能为空
ASKFOR 索要礼物 objectId不能为空

注:vk平台测试游戏邀请功能需要申请权限,可以把请求类型设置成WA_REQUEST_TYPE_REQUEST来测试普通邀请,带申请权限通过后改成WA_REQUEST_TYPE_INVITE来测试。关于vk邀请功能的业务流程图如下:
vk上线流程图

5.2 事件说明

5.2.1 SDK 预定义事件名

静态变量名称 事件名称 说明
WAEventInitiatedPurchase ghw_initiated_purchase 点击购买
WAEventPurchase ghw_purchase 购买完成
WAEventUserCreate ghw_user_create 创建角色
WAEventUserInfoUpdate ghw_user_info_update 更新用户信息
WAEventUserImport ghw_user_import 导入用户
WAEventGoldUpdate ghw_gold_update 消耗游戏币
WAEventTaskUpdate ghw_task_update 玩家任务统计
WAEventLevelAchieved ghw_level_achieved 等级或分数

5.2.2 SDK 预定义参数名

参数意义 类型 备注
货币类型 currencyType Stirng 货币类型:如美元USD,人民币CNY详见货币表
现金额 currencyAmount Int
价钱 price Double
道具类型 ContentType String
道具ID contentId Stirng
搜索内容 searchString Stirng
成功失败 success Bool 0表示失败
1表示成功
是否可获得 ghw_payment_info_available Bool 1表示可获得,
0表示不可获得
物品数量 itemAmount Int
物品id itemId Stirng 道具id
物品名称 itemName Stirng 道具名称
是否为第一次导入 isFirstEnter Int
得分 score Int
描述 description Stirng
性别 gender int 性别(int):
0表示女,
1表示男,
2表示未知
年龄 age Int
账户类型 accountType Stirng
设备id deviceId Stirng
渠道id channelId Stirng
广告标识 idfa Stirng
交易流水号 transactionId Stirng
支付类型 paymentType Int 0表示google支付,
1表示apple支付,
2表示赠送
虚拟游戏币 virtualCoinAmount Int
道具名称 iapName Stirng
道具数量 iapAmount Stirng
道具id iapId Stirng
注册时间 registerTime String 时间戳(从1970年开始)
任务id taskId String
任务名称 taskName String
任务类型 taskType String
任务状态 taskStatus String 状态标识:
1->领取任务,
2->开始任务,
3->待领奖(任务完成),
4->已领奖
角色名称 nickName String
vip等级 vip Int
状态 status Int 状态标识,-1: 锁定,1:未锁定
游戏角色Id gameUserId String
角色类型 roleType String
绑定钻石 bindGameGold Int
用户钻石数 gameGold Int
战斗力 fighting Int
货币类型 goldType String 货币类型(string) 钻石,绑定钻石,金币,军魂等。预定义有1和2:
1:游戏货币;
2:游戏绑定货币
变更途径 approach String
当前货币数量 currentAmount Int 用户变更以后该种货币的数量
变更货币数 amount Int

WINGSDK_iOS使用指南(v3.6.1)

wapublisher No Comments

一、简介

1.1 用户模块

提供 UI界面 和 接口调用 两种方式,满足用户不同需求。

1.1.1 登录弹窗

内置登录UI弹窗,内含所有已经集成的登录方式,无需编写界面,一键集成登录功能

1.1.2 匿名登录

WINGSDK匿名登录无需账户密码,根据设备信息新建用户或登录已存在的用户,可以快速登录游戏。

1.1.3 第三方平台登录

第三方平台登录接口可以通过第三方平台账户登录,返回WINGSDK账号信息,使用没有绑定任何WINGSDK账号的第三方平台账号登录,会自动新建一个WINGSDK账号,并且与该平台账号绑定。支持Facebook登录、Google登录、VK登录。

1.1.4 内置账户管理界面

内置账户管理UI界面,无需编写界面和逻辑,即可对账户进行管理,平台账户绑定情况一目了然,绑定、解绑平台账户,新建账号,切换账号,轻松搞定。

1.1.5 账号绑定与解绑

  • 账号绑定接口,可以将WINGSDK账号跟第三方平台的账号绑定,绑定成功后可以使用绑定的平台账号登录,在同一应用中一个平台账号只能绑定一个WINGSDK账号。

  • 账号解绑接口,可以将第三方平台账号与其绑定的WINGSDK账号解绑,解绑成功后,平台账号可以与WINGSDK账号再次绑定。

  • 绑定账号查询接口,能够查询此时登录的账号(WINGSDK)已经绑定的第三方平台账号列表。

1.1.6 账号切换

一键切换账号,迅速切换WINGSDK账号或者第三方账号。

1.2 支付模块

支付模块提供支付充值接口,集成简单,无需理会复杂的支付流程,轻松完成商品的购买(充值)。

1.3 数据收集模块

数据收集模块提供了数据收集的接口,多渠道灵活调用。数据收集包含了丰富的应用内的事件类型,还支持用户自定义事件类型。

1.4 社交模块

社交模块,为游戏提供社交功能支持,一键集成,功能丰富。社交模块包含以下功能:
1、分享接口,支持分享链接、文字、图片、视频、Facebook OpenGraph;
2、应用邀请,一键邀请好友;
3、游戏邀请,邀请还没有玩过该游戏的好友跟自己一起玩这款游戏,邀请好友一起玩游戏,还有丰富的邀请奖励;
4、礼物接口,可以向正在和自己玩同一款游戏的好友赠送礼物或者索要礼物,加强玩家的互动;
5、Game Service,游戏互动更简单;
6、社区,提高玩家的积极性和互动。

二、快速集成

2.1 环境配置要求

1、系统:Mac OS
2、开发工具:Xcode(8.0及以上)
3、Deployment Target:iOS7.0及以上版本
4、BaseSDK iOS 10.1及以上

2.2 集成SDK到项目

集成SDK需要引用抽象层和实现层。抽象层对接口进行抽象,使用反射机制调用到实现层中具体的代码逻辑。
抽象层主要包括WASdkIntf.framework,以及配置文件wa_sdk_track_config.plistwa_sdk.plist,如下图。
集成SDK到项目
关于wa_sdk_track_config.plist详见2.6.1 配置 (wa_sdk_track_config.plist),关于wa_sdk.plist详见2.2.2 WINGSDK基本配置(wa_sdk.plist)
当调用抽象层接口时候,请导入头文件:
#import <WASdkIntf/WASdkIntf.h>

SDK集成的第三方SDK如下表:

第三方SDK 版本 说明
FACEBOOK 4.18.0
APPSFLYER 4.5.12
CHARTBOOST 6.6.0
VK 1.4.2

2.2.1 库的引用

SDK的抽象层和实现层以framework的形式提供,CP可以使用cocoapods的方式或者自行下载framework拖进xcode项目的方式进行引用。

方式一:使用cocoapods进行引用

CP可以使用Cocospods进行引用更新。

这部分脚本请使用WINGSDK打包配置页面生成,CP可以将生成的脚本代码复制到自己的Podfile中。
WINGSDK打包配置页面地址:https://admin.wingsdk.com/developers/pack_config.do

目前SDK提供的库包括:
抽象层:

  • WASdkIntf——必接

实现层:

  • WASdkImpl(WingSdk)——必接

  • WAAfImpl(Appsflyer)——可选

  • WAApImpl(Apple)——可选

  • WACbImpl(Chartboost)——可选

  • WAFbImpl(Facebook) ——可选

  • WAVkImpl(VK)——可选

  • WAWebPayImpl(WebPay)——可选

提示:使用CocoaPod引用的项目打开项目时需要点击’xcworkspace’而不是’ xcodeproj’

方式二:手动引用

如果手动引用,可以使用WINGSDK打包配置页面https://admin.wingsdk.com/developers/pack_config.do进行各个包的下载,并添加到xcode项目中。
cocoapods手动引用

下载完成后解压,把解压后的文件拖入xcode工程,其中WASdkIntf和WASdkImpl是必接库,其它可选。

2.2.2 WINGSDK基本配置(wa_sdk.plist)

iOS-WINGSDK配置
参数说明:
WaSdkServerUrl:WINGSDK后台url(生产环境:https://api.wingsdk.com/sdkapi/)
appKey:WINGSDK后台appKey
appId:WINGSDK后台appId
os:手机操作系统
channel:发布渠道

2.3 SDK初始化

1、请在AppDelegate的didFinishLaunchingWithOptions 调用下面代码:

2、在AppDelegate的applicationDidEnterBackground调用下面代码:

3、在AppDelegate的applicationWillEnterForeground调用下面代码:

2.4 登录

2.4.1 登录对话框

SDK内置了一个包含所有支持的登录方式的一个对话框,通过调用以下接口打开对话框:

2.4.1.1 实现协议 WALoginViewDelegate

3.4.1.2 调用方法

+(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled;
cacheEnabled是否缓存登录方式。如果缓存登录方式,第二次调用的时候直接按照上次的登录方式进行登录,不会弹出登录选择框。如果想弹出登录选择框,请调用clearLoginCache方法,清除缓存
代码示例:

2.4.1.3 清除登录方式的缓存(重新弹出登录选择框)

+(void)clearLoginCache;
代码示例:

2.4.1.4 隐藏登录选择框

+(void)hide;
代码示例:

2.4.2 用户登录接口

如果CP有自己的登录窗口,可以使用WINGSDK登录接口:

2.4.2.1登录接口

(1)选择登录方式

+(void)loginWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WALoginDelegate>)delegate;
注:extInfo目前主要用于应用内登录等高级登录设置,请参考3.3.2 应用内登录相关章节
代码示例:facebook登录

登录平台请参考5.1.2 平台取值

(2)登录过程的应用间跳转

请在AppDelegate实现以下方法:

2.4.2.2 实现协议WALoginDelegate中定义的方法

说明:关于APPLE登录,用户每次进入APP进行登录操作,Game Center只进行一次授权。假如用户在第一次登录的时候取消了,以后每次进行登录,程序都会执行登录取消的协议方法,除非用户结束应用重新打开。同样的,第一次登录的时候,出现Game Center授权错误,之后程序都会执行登录失败的协议方法,除非用户结束应用重新打开。

2.4.3 用户登出

退出游戏的时候,必须登出操作。用户登出调用以下接口:
[WAUserProxy logout];
注意:调用logout接口后,serverId、gameUseId、level字段值会被重置,如果需要保持相应字段的值不重置,需要重新设置相应字段的值,参考3.1 公共参数设置

2.5 支付

WINGSDK支付流程如下:
支付流程

2.5.1 初始化

使用对应平台的支付服务前必须对其进行初始化,请在AppDelegate的didFinishLaunchingWithOptions方法调用以下方法。
+(void)init4Iap;
代码示例:

2.5.2 查询商品

2.5.2.1 实现协议 WAInventoryDelegate

2.5.2.2 调用方法
查寻库存商品,调用以下接口:
+(void)queryInventoryWithDelegate:(id<WAInventoryDelegate>)delegate;
代码示例:

2.5.3 购买商品

2.5.3.1 实现协议 WAPaymentDelegate

支付结果说明 WAIapResult

字段名 类型 说明 备注
productIdentifier NSString 商品id
resultCode long 支付结果代码 1.支付成功
2.支付失败
3.用户取消
4.支付成功,上报失败
5.商品消耗中
6.创建订单失败

2.5.3.2 调用方法

购买指定平台的商品,调用以下接口:
+(void)payWithProductId:(NSString*)productId extInfo:(NSString*)extInfo delegate:(id<WAPaymentDelegate>)delegate;
代码示例:

参数说明:

参数名 类型 必填 说明 备注
productId String Y 库存商品的id wingsdk平台的商品id
extInfo String N 额外信息,该信息会在支付成功后原样通知到CP服务器,CP用于检验 CP 扩展信息,CP通过客户端SDK 传入,发货通知原样返回,CP可用此字段检验订单信息。如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为JSON,参数名为 deliverUrl,参考格式
{
“deliverUrl”:” http://game.com/deliver.do”,
“otherInfo”:”otherInfo”,
“merId”:””
}
merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。如果是 APPLE支付渠道,merId使用客户端bundleId

2.5.4支付服务是否可用

通过以下接口可以获取支付服务是否可用,返回boolean类型结果,true为可用,false为不可用,只要有一个支付渠道可用即为true:
+(BOOL)isPayServiceAvailableWithPlatform:(NSString *const)platform;
代码示例:

参数说明:

名称 取值 备注
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_BOACOMPRA BOACOMPRA BOACOMPRA平台

2.6 数据收集

使用WINGSDK数据收集接口配合大数据平台,可以轻松统计玩家习惯以及充值等行为,为游戏的市场营销提供数据依据。WINGSDK数据收集使用在游戏的过程中打点的方式,如图所示:
iOS-数据收集流程图

以上流程图中涉及到的几个接口:setServerId、setGameUserId、setLevel、ghw_user_import事件、ghw_user_create事件是有时序要求的,其它的事件如ghw_initiated_purchase、ghw_purchase、ghw_level_achieved、ghw_user_info_update、ghw_gold_update和ghw_task_update事件则需要在事件发生的对应时机调用接口发送。

2.6.1 配置 (wa_sdk_track_config.plist)

对各个平台进行相应的配置(修改wa_sdk_track_config.plist)。注:文件名以及key值不可修改。
iOS-数据收集功能模块
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关,Enable: YES-开,NO-关。
iOS-数据收集功能模块
WINGSDK URL正式环境的地址: https://api.wingsdk.com/data/

2.6.2 调用

2.6.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

2.6.2.2 工程启动时初始化

您需要在第一次启动在应用程序上进行SDK初始化。请保证在发送下面的跟踪事件之前进行SDK初始化。请在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码:
[WACoreProxy initAppEventTracker];

2.6.2.3 调用事件进行追踪

安装和打开游戏事件是内部触发的,另外关于充值事件(WAEventPayment)和点击充值(WAEventInitiatedPayment)的跟踪已经在WINGSDK中自动调用,用户不用自己调用。若不想启用这两个事件的自动跟踪,可在didFinishLaunchingWithOptions进行如下操作:
[WATrackProxy autoTriggerAfterPayment:NO];
调用方法有两种。方法一调用方法简单,但是发送到各个渠道的事件名称(eventName)、参数(params)、累加值(value)是一样的。如果需要自己设置事件名称、参数、累加值,请使用方法二。

2.6.2.3.1 方法一

注:当使用带有小数点的数值时,使用NSDecimalNumber类型,如[NSDecimalNumber decimalNumberWithString:@"8.88"];
调用事件的用法如下:
+(void)trackWithEventName:(NSString *)eventName valueToSum: (double)value params:(NSDictionary *)params;
-eventName:事件名称可在附表中查询
-valueToSum:传入一个double值作为累加值,没有累加值可以传0。
-params:参数字典参数可在附表中查询
例如:

调用购买事件WAEventPayment,
参数:WAEventParameterNameContentType道具类型,
WAEventParameterNameContentID内容ID,
WAEventParameterNameItemAmount购买数量,
WAEventParameterNameCurrencyType货币类型,
WAEventParameterNameCurrencyAmount现金额

2.6.2.3.2 方法二

注:当使用带有小数点的数值时,使用NSDecimalNumber类型,如[NSDecimalNumber decimalNumberWithString:@"8.88"];

2.6.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

2.6.2.3.2.2 关于WAEvent 实例的构建

(1)设置默认的事件名称

设置该事件的事件名称,请参考5.2.1 SDK 预定义事件名
event.defaultEventName = WAEventLevelAchieved;

(2)设置渠道自定义事件名称

注:
1)eventNameDict的key参考附表 2.6.2 渠道名称表
2)AppsFlyer和facebook的应用内事件和WINGSDK的应用内事件已经做了映射(例如: ghw_login <-> af_login,ghw_login<->fb_login,参考下图),用户无需再手动自定义。
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultEventName)。

iOS-各渠道事件映射对应表

各渠道事件映射对应表

(3)设置默认累加值

设置累加值用于统计数字,比如购买的金额等
event.defaultValue = 1;

(4)设置渠道自定义累加值

1)valueDict的key值参考 附表2.6.2 渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。

(5)设置事件默认的参数/值

注:
1)参数名称参考5.2.2 SDK 预定义参数名

(6)设置事件渠道自定义的参数/值

注:
1)渠道名称参考:附表 2.6.2 渠道名称表
2)参数名称参考:5.2.2 SDK 预定义参数名
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultParamValues)

(7)渠道开关设置

注:以上代码会关闭Appsflyer对该事件的收集,而Facebook、WINGSDK、Chartboost是打开的。默认情况下,WINGSDK和Appsflyer是打开的,而Facebook和Chartboost是关闭的。

2.6.3 预定义事件

建议参数属性:(参数对应的静态变量名请看5.2.2 SDK 预定义参数名

2.6.3.1 WAEventUserImport

说明:导入用户事件,用户每次进服事件–通过用户id在后台查找

参数名 类型 说明 必填 备注
isFirstEnter int 是否为第一次导入 Y 否为0,
是为:1。
默认为0。

注意:发送WAEventUserImport事件前需要调用3.1.1 设置服务器ID 接口更新服务器id

2.6.3.2 WAEventInitiatedPurchase

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)
无参数

2.6.3.3 WAEventPurchase

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。
注:valueToSum(或者defaultValue)的值要传,而且值要和price一样。

参数名 类型 说明 必填 备注
itemName String 游戏内虚拟物品的名称/ID Y
itemAmount int 交易的数量 Y
price float 交易的总价 Y

2.6.3.4 WAEventLevelAchieved

说明:统计玩家等级增长事件,达到等级时调用。

参数名 类型 说明 必填 备注
score int 账户分数 N
fighting int 战斗力 N

注意:发送事件前WAEventLevelAchieved需调用3.1.3 设置用户等级level 接口更新用户等级信息。

2.6.3.5 WAEventUserCreate

说明:创建游戏角色

参数名 类型 说明 必填 备注
roleType string 角色类型 N
nickname String 角色名(昵称) Y
gender int 角色性别 N 性别: 0表示女,
1表示男,
2表示未知
registerTime long 创建时间 Y 注册时间戳,单位为毫秒(1970以后)
vip int 等级 N
status int 状态 N 状态标识:
-1: 锁定,
1:未锁定
bindGameGold int 绑定钻石 N
gameGold int 用户钻石数 N
fighting int 战斗力 N

2.6.3.6 WAEventUserInfoUpdate

说明:更新用户资料

参数名 类型 说明 必填 备注
roleType String 角色类型 N
nickname String 昵称 N
vip int 等级 N
status int 状态标识:
-1:锁定,
1:未锁定
N

2.6.3.7 WAEventGoldUpdate

说明:玩家货币状况变更统计

参数名 类型 说明 必填 备注
approach String 变更途径 Y 开通VIP、任务获得、公会贡献、解锁背包等
goldType int 货币类型 Y 钻石,绑定钻石,金币,军魂等。
定义有1和2:
1->游戏货币;
2->游戏绑定货币
amount int 变更货币数 Y 消耗用负数表示,获取用正数表示
currentAmount int 用户变更以后该种货币的数量 Y

2.6.3.8 WAEventTaskUpdate

说明:玩家任务信息统计

参数名 类型 说明 必填 备注
taskId String 任务Id Y
taskName String 任务名称 Y
taskType String 任务类型 Y
taskStatus int 任务状态 Y 状态标识:
1→领取任务,
2→开始任务,
3→待领奖(任务完成),
4→已领奖

2.6.4 自定义事件

事件描述:自定义事件
事件名称:自定义
参数:自定义
有无累计值:自定义

说明:支持自定义事件的统计
自定义

附表 2.6.1 货币标识

名称 标识
人民币 CNY
美元 USD
港币 HKD
欧元 EUR
英镑 GBP
日元 JPY
加元 CAD

详见:https://en.wikipedia.org/wiki/ISO_4217

附表 2.6.2 渠道名称表

常量 代表渠道
WA_PLATFORM_APPSFLYER Appsflyer
WA_PLATFORM_FACEBOOK Facebook
WA_PLATFORM_WINGA WINGSDK
WA_PLATFORM_CHARTBOOST ChartBoost

三、高级功能

3.1 公共参数设置

WINGSDK包括serverId等公共参数,这些参数主要用于数据跟踪和统计。公共参数必须严格按照文档进行配置,在后续的接口中会使用到这些公共的参数,没有按照要求配置会导致部分接口调用失败。

3.1.1 设置服务器ID

当用户的服务器ID发生改变时,需要调用设置服务器ID接口设置新的服务器ID,例如每次进入服务器:
[WACoreProxy setServerId: @"127.0.0.1"];
注意:设置服务器ID的操作在每次选服后都需要进行,必须在调用其他接口前设置。

3.1.2 设置用户gameUserId

用户在选择服务器并且登录之后将用户gameUserId设置到SDK中以便于跟踪。
[WACoreProxy setGameUserId:@"12345"];

3.1.3 设置用户等级level

设置游戏玩家的角色等级,调用接口:
[WACoreProxy setLevel:10];
注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级,必须在调用其他接口前设置。

3.1.4 设置cleintId

SDK内部有自己的ClientId生成机制,如果CP需要自定义ClientId,可调用接口进行设置
[WACoreProxy setClientId:@"clientId_xxxx"];
注意:必须在SDK初始化之前调用,一旦调用这个接口进行修改ClientId,以后SDK的ClientId将会保持这个不变。

3.2 调试模式

WINGSDK具备调试模式并提供了Log悬浮按钮调试工具,打开调试模式就会显示Log悬浮按钮,使用这个工具测试人员不需要IDE环境就可以在工具窗口中查看调试信息。开启/关闭调试模式调用以下接口(WINGSDK默认是关闭调试模式的)。
[WACoreProxy setDebugMode:YES];
关闭调试模式:
[WACoreProxy setDebugMode:NO];

3.3 登录高级设置

3.3.1 设置登录流程接口

使用该接口需注意以下两点:
1)一般来说,如果应用登录的时候有登录方式选择界面,就不需要使用此接口,此接口默认是这种方式(取值为1)。

2)这个接口主要是用来满足以下需求:用户第一次登录是以游客方式进行登录,进到应用里面可以切换其它登录方式,下次登录会直接以切换后的账户进行登录(取值为2)。

+(void)setLoginFlowType:(int)flowType;
代码示例:
[WAUserProxy setLoginFlowType:WA_LOGIN_FLOW_TYPE_DEFAULT];
登录流程有两种模式,在WAConstants类中定义,取值如下表:

名称 取值 备注
WA_LOGIN_FLOW_TYPE_DEFAULT 1 适用于有登录界面的场景,登录的时候不会重新绑定设备
WA_LOGIN_FLOW_TYPE_REBIND 2 适用于无登录界面的场景,登录时重新将新账号与当前设备绑定,如在游戏中切换账户,切换以后的匿名登录是以切换后的账户进行登录。

3.3.2 应用内登录

SDK平台应用内登录,是指CP本身有自己登录系统,先登录CP后台拿到用户信息后登录SDK后台,应用内登录调用接口 2.4.2 用户登录接口,将CP后台返回的用户信息按照规定格式(JSON字符串)通过extInfo字段传入。

应用内登录extInfo格式(标准JSON格式字符串)

字段说明:

字段名 类型 说明 必填 备注
appSelfLogin boolean 应用内登录固定值true Y
appUserId String CP用户id Y
appToken String CP用户Token Y
extInfo String 额外信息 N SDK后台会将此字段内容传回CP服务器

3.4 账户管理

3.4.1 使用账户管理页面

SDK内置了账户管理页面,打开这个内置的页面之前必须先登录,通过这个页面可以对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户。

3.4.1.1 实现协议 WAAcctManagerDelegate

3.4.1.2 调用方法

+(void)openAccountManager:(id<WAAcctManagerDelegate>)delegate;

代码示例:

3.4.1.3 关于绑定解绑的通知

账户管理界面没有返回绑定和解绑结果,但是会以通知的方式将结果回调给CP。当绑定有结果之后(无论成功失败),将回传一个WABindingResult实例。当解绑有结果(无论成功失败),将回传一个WAAccount实例。有四个通知,分别是绑定成功、绑定失败、解绑成功、解绑失败,通知的名称分别是以下常量:
WABindDidSucceedNotification;//绑定成功
WABindDidFailNotification;//绑定失败
WAUnbindDidSucceedNotification;//解绑成功
WAUnbindDidFailNotification;//解绑失败

注:关于绑定facebook成功之后,请注意触发邀请奖励。代码如下:

3.4.2 绑定第三方平台账户

3.4.2.1 实现协议WAAccountBindingDelegate

说明:关于APPLE账号的绑定,请参考2.4.2.2 实现协议WALoginDelegate中定义的方法的说明。

3.4.2.2 调用方法

+(void)bindingAccountWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WAAccountBindingDelegate>)delegate;
绑定平台取值:

名称 取值 备注
WA_PLATFORM_FACEBOOK FACEBOOK FACEBOOK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_VK VK VK平台

示例代码:

3.4.3 查询已经绑定的第三方平台账户

通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:
+(void)queryBoundAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block;

示例代码:

3.4.4 解绑第三方平台账户

通过以下接口,可以解绑已经绑定的第三方平台账户:
+(void)unBindAccountWithPlatform:(NSString *const)platform platformUserId:(NSString*)pUserId completeBlock:(void(^)(NSError* error))completeBlock;
有以下情况之一者,不可解绑:
1.解绑的账户为WINGSDK平台的;
2.用户没有绑定第三方平台账户的;
3.用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的。
示例代码:

3.4.5 切换账户

使用以下接口可以快速切换登录的账户
+(void)switchAccountWithPlatform:(NSString *const)platform completeBlock:(void(^)(NSError* error,WALoginResult* result))completeBlock;

3.4.6 新建账户

+(void)createNewAccountWithCompleteBlock:(void(^)(NSError* error,WALoginResult* result))completeBlock;

新建账户后,新的账户会跟当前设备绑定,如果之前的账户没有绑定第三方平台账户,数据将会丢失。
代码示例:

3.4.7获取账户信息

SDK提供了获取指定平台的账户信息,可以通过以下接口获取:

+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;

示例代码:

3.5 社交

3.5.1 分享

3.5.1.1 实现协议 WASharingDelegate

3.5.1.2 调用方法

分享调用以下接口,支持分享链接、图片、视频、Facebook OpenGraph:
+(void)shareWithPlatform:( NSString *const)platform shareContent:(NSObject<WASharingContent>*)shareContent shareWithUI:(BOOL)shareWithUI delegate:(NSObject<WASharingDelegate>*)delegate;
示例代码:

参数说明:

参数名 类型 必填 说明 备注
shareContent NSObject* Y 分享内容
shareWithUI BOOL Y 是否通过UI分享 设置为YES时直接通过UI分享,有界面。设置为NO时通过API分享,没有界面。
delegate NSObject* N 委托

3.5.1.3 实体说明

3.5.1.3.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 配图

3.5.1.3.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 图片描述

3.5.1.3.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

3.5.2 应用邀请

使用应用邀请必须先在facebook后台配置,请参考第三方后台配置—iOS版 2.3 Facebook应用邀请配置

3.5.2.1 实现协议 WAAppInviteDialogDelegate

3.5.2.2 调用方法

+(void)appInviteWithPlatform:(NSString *const)platform Content:(WAAppInviteContent*)content delegate:(NSObject<WAAppInviteDialogDelegate>*)delegate;
代码示例:

WAAppInviteContent实体说明:

参数名 类型 必填 说明 备注
appLinkURL NSURL Y 分享链接
appInvitePreviewImageURL NSURL Y 预览图片url地址

3.5.3 发送请求接口

发送请求接口向平台好友发送请求,请求包括普通请求、游戏邀请(详见3.5.4 游戏邀请)、赠送礼物、索要礼物(礼物详见3.5.5 礼物)等,发送请求调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
platform NSString Y 平台类型 平台类型在WAConstants类中定义,目前支持VK以及FACEBOOK
requestType NSString Y 请求类型 请求类型默认的在WAConstants下有定义,请参考5.1.3 请求类型说明
title NSString Y 标题 部分平台需要显示
message NSString Y 说明文字 部分平台需要显示
objectId NSString N 对象id 部分请求类型必填,比如发送礼物,为礼物对象id
receiptIds NSArray Y 接收者id 根据平台而定,有些平台支持一次发送请求给多个用户,有些平台一次只能发送给一个用户。VK平台一次只能发送一个用户
delegate NSObject N 代理

示例代码:

3.5.4 游戏邀请

3.5.4.1 查询可邀请好友列表

游戏邀请只能邀请没有玩过当前游戏的好友,称为可邀请好友,查询可邀请的好友调用以下接口:
+(void)queryInvitableFriendsWithDuration:(float)duration completeBlock:(void(^)(NSArray* friends,NSError *error))block;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
block String Y 回调
duration long Y 过滤时间间隔 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友

3.5.4.2 游戏邀请(@since 3.5.2 使用发送请求接口代替)

3.5.4.2.1 实现协议 WAGameRequestDialogDelegate

3.5.4.2.2 调用方法

发送游戏邀请请求调用以下接口(注:VK平台一次只能发一次邀请给一个好友):
+(void)gameInviteWithPlatform:(NSString *const)platform Content:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
代码示例:

注:如果是VK平台 actionType必须赋值(gameRequestContent.actionType = WAGameRequestActionRequest) VK平台有两个actionType: WAGameRequestActionInvite, WAGameRequestActionRequest。在游戏的测试阶段,请用WAGameRequestActionRequest进行测试。正式上线的时候修改为WAGameRequestActionInvite,参照下图。
vk上线流程图

3.5.4.3 邀请成功记录

成功邀请好友后,在协议方法-gameRequestDialog:platform:didCompleteWithResults:中调用以下接口向服务器记录邀请信息:
+(void)createInviteInfoWithPlatform:(NSString *const)platform results:(NSDictionary*)results handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
示例代码:

3.5.4.4 邀请安装奖励

通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,必须在玩家进行登录成功或者绑定成功之后时候调用
+(void)inviteInstallRewardPlatform:(NSString *const)platform TokenString:(NSString*)tokenString handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
示例代码:

3.5.4.5 邀请事件奖励
通过邀请安装使用的用户,在触发定义的特定事件,需要通知服务器奖励邀请人,比如等级达成、充值等,调用以下接口:
+(void)inviteEventRewardWithPlatform:(NSString *const)platform eventName:(NSString*)eventName handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;

代码示例:

3.5.5 礼物

3.5.5.1 查询好友

查询指定平台正在玩游戏的好友列表,调用以下接口:
+(void)queryFriendsWithCompleteBlock:(void(^)(NSArray<WAAppUser *>* friends,NSError *error))block;

示例代码:

3.5.5.2 查询Facebook Graph Object

Facebook的礼物就是在Facebook控制台创建的Graph Object,查询礼物列表的时候调用这个接口,这个接口只针对Facebook平台。

+(void)queryFBGraphObjectsWithObjectType:(NSString*)objectType completeBlock:(void(^)(NSArray<WAFBObject*>* objects,NSError *error))block;

代码示例:
objectType 必须赋值 请参考第三方后台配置—iOS版 2.4 Facebook后台新建礼物

3.5.5.3 Facebook赠送礼物(@since 3.5.2 使用发送请求接口 代替)

使用facebook礼物功能,请先在facebook后台配置相关信息,详情请参考第三方后台配置—iOS版2.4 Facebook后台新建礼物
Facebook用户向游戏内的好友赠送礼物。

3.5.5.3.1 实现协议 WAGameRequestDialogDelegate

3.5.4.2.1 实现协议 WAGameRequestDialogDelegate

3.5.5.3.2 调用方法

+(void)fbSendGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:

3.5.5.4 Facebook索要礼物(@since 3.5.2 使用发送请求接口 代替)

Facebook用户向游戏内的好友发出索要礼物的请求。

3.5.5.4.1 实现协议 WAGameRequestDialogDelegate

3.5.4.2.1 实现协议 WAGameRequestDialogDelegate

3.5.5.4.2 调用方法

+(void)fbAskForGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:

3.5.5.5 Facebook查询收到的礼物

Facebook用户查询好友赠送给自己的礼物,调用以下接口:

+(void)fbQueryReceivedGiftsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* gifts,NSError *error))block;

示例代码:

3.5.5.6 Facebook查询向自己索要礼物的请求

Facebook用户查询好友向自己索要礼物的请求,调用以下接口:
+(void)fbQueryAskForGiftRequestsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* requests,NSError *error))block;
示例代码:

3.5.5.7 删除请求

Facebook中用户收到的礼物,好友向自己索要礼物的请求都是一个Facebook的请求,收取礼物和拒绝赠送礼物的时候,需要删除掉对应的请求。删除请求调用以下接口:

+(void)fbDeleteRequestWithRequestId:(NSString*)requestId completeBlock:(void(^)(id result,NSError *error))block;

示例代码:

3.5.6 社区

3.5.6.1 通过Group id查询Group详情

通过Group id查询Group详情,调用以下接口:
+(void)getGroupWithPlatform:(NSString *const)platform groupIds:(NSArray*)groupIds extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

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 跳转到浏览器对应的页面

3.5.6.2 查询当前应用关联的Group

一个应用只能关联一个Group,通过以下接口可以查询当前应用关联的Group详细信息:
+(void)getCurrentAppLinkedGroupWithPlatfrom:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

3.5.6.3 查询当前用户已加入的Group

查询当前用户加入的Group详细信息调用以下接口:
+(void)getCurrentUserGroupWithPlatfrom:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

3.5.6.4 查询当前应用推荐的所有Group

这是3.5.6.2 查询当前应用关联的Group3.5.6.3 查询当前用户已加入的Group查询到的Group的汇总,调用以下接口:

+(void)getGroupsWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;

示例代码:

3.5.6.5 加入Group

加入指定的某个Group,调用以下接口:

+(void)joinGroupWithPlatform:(NSString *const)platform groupId:(NSString*)groupId extInfo:(NSString *const)extInfo completeBlock:(void(^)(NSError* error))block;

示例代码:

3.5.6.6 进入Group详情页

进入Group的详情页面,调用以下接口:

+(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 额外数据信息 扩展字段,根据各个平台需要定义

示例代码:

四、第三方配置

4.1 Facebook相关配置

4.1.1 Facebook基本配置

如果不需要Facebook渠道,请忽略此章节
具体配置请参考第三方后台配置—iOS版 二、Facebook第三方登录后台配置
1、在facebook开发者平台创建一个Facebook应用,创建完之后会生成App ID和App Secret
这里的App ID要配置在项目当中,作为客户端与后台服务器连接的标识
iOS-Facebook基本配置
iOS-Facebook基本配置
2、在Xcode中配置相应的信息,主要是在info.plist文件中配置URL Schemes、FacebookAppID、FacebookDisplayName。注意一定要对应到facebook后台该App的App ID和Display Name。参考步骤1的截图。

3、针对iOS9做的一些配置
(1)Whitelist Facebook Servers for Network Requests
在info.plist增加下面配置

(2)Whitelist Facebook Apps

4.1.2 Facebook登录权限对照表

权限 类型 权限取值 说明
读取用户配置 string public_profile
读取好友列表 string user_friends
发布权限 string publish_actions 通过api层分享需要这个权限

4.1.3 Facebook后台新建Graph Object

具体配置请参考第三方后台配置—iOS版2.4 Facebook后台新建礼物

WAFBGraphObject 中的字段与新建Object字段对照(“-”标识系统自动生成)

WAFBGraphObject 新建Object
id
title og:title
type
isScraped
createdTime
description og:description
imageUrl og:image
data 所有自定义的的字段Map,key为字段名,不包含namespace,比如新建com_ghw_sdk:gift_type字段,在data Map中namespace 为com_ghw_sdk,key为gift_type。

4.2 APPLE相关配置

如果不需要APPLE渠道,请忽略此章节
具体配置请参考第三方后台配置—iOS版 一、Apple后台应用配置

4.3 Appsflyers 相关配置

如果不需要Appsflyers渠道,请忽略此章节
1.数据收集配置:详见2.6.1 配置 (wa_sdk_track_config.plist)

4.4 Chartboost 相关配置

如果不需要Chartboost渠道,请忽略此章节
1.数据收集配置:详见2.6.1 配置 (wa_sdk_track_config.plist)

4.5 VK相关配置

在xcode配置URL Schemes:
在VKapp管理后台https://vk.com/apps?act=manage找到对应App的配置信息。将下图中Application ID(标注1)填到Xcode中的URL Schemes(标注2)。注意加上前缀vk。
iOS-VK配置1
iOS-VK配置2

五、附录

5.1 代码说明

5.1.1 状态码说明

SDK所有的状态码都定义在枚举WACode中,详见下表:

枚举名称 取值 说明
WACodeSuccess 200 成功
WACodeError 400 错误
WACodeUnautherized 401 请求未认证:访问受限资源是缺少认证信息,或者认证未通过
WACodeForbiden 403 禁止访问:由于应用上下文原因或请求端上下文的原因被禁止访问资源,例如IP限制等
WACodeNotFound 404 找不到被访问资源:接口不存在、页面不存在或对应的业务实体找不到
WACodeServerError 500 服务器内部故障
WACodeApiInvalid 501 所请求接口或页面未实现
WACodeSdkAppIdInvalid 4010 无效appId: appId不存在或未开启
WACodeSignError 4011 无效osign:osign校验失败
WACodeRequestTimeOut 4012 请求已过期:ots校验失败
WACodeAccountVerifyError 4013 第三方平台验证失败
WACodeAccountVerifyError 4014 访客登录验证失败,登录验证失败
WACodePlatformBoundAlready 4015 用户已经绑定了这个平台的其他账户
WACodePrePlatformVerifyError 4016 prePlatform验证失败
WACodeUserNotFound 4017 用户不存在(没有找到)
WACodeAccountBoundByOthers 4018 账户已经被其他用户绑定
WACodeOrderIdInvalid 4019 无效orderId
WACodeOrderVerifyError 4020 订单验证失败
WACodeRewardNotFound 4021 FB邀请奖励事件未找到奖励政策
WACodeRepeatCrashReport 4022 闪退发送报告重复
WACodeChannelNotFound 4023 未找到渠道信息
WACodeCanNotUnbind 4024 不可以执行解绑操作
WACodeExchangeRateConversionFailure 4025 汇率转换失败
WACodePayPlatformClosed 4026 支付渠道已关闭
WACodeLoginPlatformClosed 4029 登录渠道已关闭
WACodeCanNotSwitchToAnonymous 5001 切换到匿名
WACodeFbObjectType 5002 facebook的objectType不能为空
WACodeFbGiftListRequestPrameterLack 5003 请求gift列表缺少appid,appSecret,objectType参数
WACodeFbTokenNull 5004 facebook token为空
WACodeCanNotMakePayment 5005 该设备不能支付或者不允许支付
WACodePaymentError 5006 支付过程中出错
WACodeCancelled -100 取消操作
WACodeSdkUninitialized -200 SDK没有初始化
WACodeContentCanNotBeShared -201 内容不可分享,一般是传入的内容为空,或者其他
WACodeNotLogin -202 没有登录
WACodeLoginFailure -203 登录失败
WACodeNoPermission -204 登录没有获取到相应的权限
WACodeFileSizeLimit -206 文件大小超出限制
WACodeCurrentIDNotMatch -211 登录的平台账户和当前用户不匹配
WACodeDeviceNotSupported -401 设备不支持
WACodeNetworkUnavailable -402 网络不可用
WACodePayReOrderTimeLimit -509 支付:订单时间间隔限制(在特定的时间内重复下订单)

5.1.2 平台取值

常量 取值 备注
WA_PLATFORM_WINGA WINGA WA平台,分匿名登录和应用内登录
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_FACEBOOK FACEBOOK Facebook平台
WA_PLATFORM_VK VK VK平台

5.1.3 请求类型说明

取值值 说明 备注
INVITE 邀请
REQUEST 普通请求
SEND 发送礼物 objectId不能为空
ASKFOR 索要礼物 objectId不能为空

注:vk平台测试游戏邀请功能需要申请权限,可以把请求类型设置成WA_REQUEST_TYPE_REQUEST来测试普通邀请,带申请权限通过后改成WA_REQUEST_TYPE_INVITE来测试。关于vk邀请功能的业务流程图如下:
vk上线流程图

5.2 事件说明

5.2.1 SDK 预定义事件名

静态变量名称 事件名称 说明
WAEventInitiatedPurchase ghw_initiated_purchase 点击购买
WAEventPurchase ghw_purchase 购买完成
WAEventUserCreate ghw_user_create 创建角色
WAEventUserInfoUpdate ghw_user_info_update 更新用户信息
WAEventUserImport ghw_user_import 导入用户
WAEventGoldUpdate ghw_gold_update 消耗游戏币
WAEventTaskUpdate ghw_task_update 玩家任务统计
WAEventLevelAchieved ghw_level_achieved 等级或分数

5.2.2 SDK 预定义参数名

参数意义 类型 备注
货币类型 currencyType Stirng 货币类型:如美元USD,人民币CNY详见货币表
现金额 currencyAmount Int
价钱 price Double
道具类型 ContentType String
道具ID contentId Stirng
搜索内容 searchString Stirng
成功失败 success Bool 0表示失败
1表示成功
是否可获得 ghw_payment_info_available Bool 1表示可获得,
0表示不可获得
物品数量 itemAmount Int
物品id itemId Stirng 道具id
物品名称 itemName Stirng 道具名称
是否为第一次导入 isFirstEnter Int
得分 score Int
描述 description Stirng
性别 gender int 性别(int):
0表示女,
1表示男,
2表示未知
年龄 age Int
账户类型 accountType Stirng
设备id deviceId Stirng
渠道id channelId Stirng
广告标识 idfa Stirng
交易流水号 transactionId Stirng
支付类型 paymentType Int 0表示google支付,
1表示apple支付,
2表示赠送
虚拟游戏币 virtualCoinAmount Int
道具名称 iapName Stirng
道具数量 iapAmount Stirng
道具id iapId Stirng
注册时间 registerTime String 时间戳(从1970年开始)
任务id taskId String
任务名称 taskName String
任务类型 taskType String
任务状态 taskStatus String 状态标识:
1->领取任务,
2->开始任务,
3->待领奖(任务完成),
4->已领奖
角色名称 nickName String
vip等级 vip Int
状态 status Int 状态标识,-1: 锁定,1:未锁定
游戏角色Id gameUserId String
角色类型 roleType String
绑定钻石 bindGameGold Int
用户钻石数 gameGold Int
战斗力 fighting Int
货币类型 goldType String 货币类型(string) 钻石,绑定钻石,金币,军魂等。预定义有1和2:
1:游戏货币;
2:游戏绑定货币
变更途径 approach String
当前货币数量 currentAmount Int 用户变更以后该种货币的数量
变更货币数 amount Int

WINGSDK_iOS使用指南(v3.6)

wapublisher No Comments

一、集成SDK到项目

集成要求:iOS7.0及以上版本。

1.1 集成SDK

集成SDK需要引用抽象层和实现层。抽象层对接口进行抽象,使用反射机制调用到实现层中具体的代码逻辑。
抽象层主要包括WASdkIntf.framework,以及配置文件wa_sdk_track_config.plistwa_sdk.plist如下图。
关于wa_sdk_track_config.plist详见7.1.1 配置,关于wa_sdk.plist详见1.2.1 WINGSDK基本配置(wa_sdk.plist)
当调用抽象层接口时候,请导入头文件:
#import <WASdkIntf/WASdkIntf.h>
集成SDK到项目

1.1.1 库的引用

SDK的抽象层和实现层以framework的形式提供,CP可以使用cocoapods的方式或者自行下载framework拖进xcode项目的方式进行引用。

方式一:使用cocoapods进行引用

CP可以使用Cocospods进行引用更新。

这部分脚本请使用WINGSDK打包配置页面生成,CP可以将生成的脚本代码复制到自己的Podfile中。
WINGSDK打包配置页面地址:https://admin.wingsdk.com/developers/pack_config

目前SDK提供的库包括:
抽象层:

  • WASdkIntf——必接

实现层:

  • WASdkImpl(WingSdk)——必接

  • WAAfImpl(Appsflyer)——可选

  • WAApImpl(Apple)——可选

  • WACbImpl(Chartboost)——可选

  • WAFbImpl(Facebook) ——可选

  • WAVkImpl(VK)——可选

  • WAWebPayImpl(WebPay)——可选

提示:使用CocoaPod引用的项目打开项目时需要点击’xcworkspace’而不是’ xcodeproj’

方式二:手动引用

如果手动引用,可以使用WINGSDK打包配置页面进行各个包的下载,并添加到xcode项目中,WINGSDK打包配置页面地址https://admin.wingsdk.com/developers/pack_config,也可以按照以下步骤操作:

1)浏览器打开仓库地址:http://repo.wingsdk.cn:8082/repositories/
2)点击特定库
cocoapods手动引用
3)点击要接入的版本号对应的标签
cocoapods手动引用
4)进入标签页面下载对应版本的zip包
cocoapods手动引用
5)下载完成后解压,把解压后的文件拖入xcode工程。
6)按需要对接的渠道重复步骤1~5,其中WASdkIntf和WASdkImpl是必接库,其它可选。

1.2 WINGSDK配置

1.2.1 WINGSDK基本配置(wa_sdk.plist)

iOS-WINGSDK配置
参数说明:
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 调用下面代码:

2.2 开启/关闭调试模式

WingSDK默认是关闭调试模式的,开启调试模式可以在IDE的Logcat中查看到程序的Log信息,方便调试和测试。开启/关闭调试模式调用以下接口。
打开调试模式:

关闭调试模式:

2.3公共参数配置

公共参数必须严格按照文档进行配置,在后续的接口中会使用到这些公共的参数,没有按照要求配置会导致部分接口调用失败。

2.3.1 设置用户gameUserId

用户在选择服务器并且登录之后将用户gameUserId设置到SDK中以便于跟踪。

2.3.2 设置服务器ID

用户登录选服后,调用接口设置服务器id

注意:设置服务器ID的操作在每次选服后都需要进行。

2.3.3 设置用户等级level

设置游戏玩家的角色等级,调用接口:

注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级。

三、用户模块功能

3.1 登录功能使用

3.1.1设置登陆流程接口:

+(void)setLoginFlowType:(int)flowType;

代码示例:

登录流程有两种模式,在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登录

登录平台取值:

名称 取值 备注
WA_PLATFORM_WINGA GUEST WINGSDK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_FACEBOOK FACEBOOK Facebook平台
WA_PLATFORM_VK VK VK平台

(2)登录过程的应用间跳转
请在AppDelegate实现以下方法:

3.1.2.2 实现协议WALoginDelegate中定义的方法

说明:关于APPLE登录,用户每次进入APP进行登录操作,Game Center只进行一次授权。假如用户在第一次登录的时候取消了,以后每次进行登录,程序都会执行登录取消的协议方法,除非用户重新进入app。同样的,第一次登录的时候,出现Game Center授权错误,之后程序都会执行登录失败的协议方法,除非用户重新进入app。

3.1.3 登录对话框

SDK内置了一个包含所有支持的登录方式的一个对话框,通过调用以下接口打开对话框:

3.1.3.1 实现协议WALoginViewDelegate

3.1.3.2 调用方法

+(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled;

cacheEnabled是否缓存登录方式。如果缓存登录方式,第二次调用的时候直接按照上次的登录方式进行登录,不会弹出登录选择框。如果想弹出登录选择框,请调用clearLoginCache方法,清除缓存
代码示例:

3.1.3.3 清除登录方式的缓存(重新弹出登录选择框)

+(void)clearLoginCache;

代码示例:

3.1.3.4 隐藏登录选择框

+(void)hide;

代码示例:

3.1.4 用户登出

退出游戏的时候,必须登出操作。用户登出调用以下接口:

3.2账户管理的使用

3.2.1 绑定第三方平台账户

3.2.1.1 实现协议WAAccountBindingDelegate

说明:关于APPLE账号的绑定,请参考3.1.2.2 实现协议WALoginDelegate中定义的方法的说明。

3.2.1.2 调用方法

+(void)bindingAccountWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WAAccountBindingDelegate>)delegate;

绑定平台取值:

名称 取值 备注
WA_PLATFORM_FACEBOOK FACEBOOK FACEBOOK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_VK VK VK平台

示例代码:

3.2.2 查询已经绑定的第三方平台账户

通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:

+(void)queryBoundAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block;

示例代码:

3.2.3 解绑第三方平台账户

通过以下接口,可以解绑已经绑定的第三方平台账户:

+(void)unBindAccountWithPlatform:(NSString *const)platform platformUserId:(NSString*)pUserId completeBlock:(void(^)(NSError* error))completeBlock;

有以下情况之一者,不可解绑:
1、解绑的账户为WINGSDK平台的;
2、用户没有绑定的第三方平台账户的;
3、用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的。
示例代码:

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;

新建账户后,新的账户会跟当前设备绑定,如果之前的账户没有绑定第三方平台账户,数据将会丢失。
代码示例:

3.2.6 使用账户管理页面

SDK内置了账户管理页面,打开这个内置的页面之前必须先登录,通过这个页面可以对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户。

3.2.6.1 实现协议WAAcctManagerDelegate

3.2.6.2 调用方法

+(void)openAccountManager:(id<WAAcctManagerDelegate>)delegate;

代码示例:

3.2.6.3 关于绑定解绑的通知

账户管理界面没有返回绑定和解绑的结果的,但是会以通知的方式将结果回调给CP。当绑定有结果之后(无论成功失败),将回传一个WABindingResult实例。当解绑有结果(无论成功失败),将回传一个WAAccount实例。有四个通知,分别是绑定成功、绑定失败、解绑成功、解绑失败,通知的名称分别是以下常量:
WABindDidSucceedNotification;//绑定成功

WABindDidFailNotification;//绑定失败

WAUnbindDidSucceedNotification;//解绑成功

WAUnbindDidFailNotification;//解绑失败

注:关于绑定facebook成功之后,请注意触发邀请奖励。代码如下:

3.2.7 获取账户信息

SDK提供了获取指定平台的账户信息,可以通过以下接口获取:
+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;

示例代码:

附表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),这个数据WINGSDK后台在想应用后台验证的时候,会通过回调接口传递到应用服务器。

四、支付模块功能

4.1 支付服务是否可用

通过以下接口可以获取支付服务是否可用,返回boolean类型结果,true为可用,false为不可用:

+(BOOL)isPayServiceAvailableWithPlatform:(NSString *const)platform;

代码示例:

参数说明:

名称 取值 备注
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_BOACOMPRA BOACOMPRA BOACOMPRA平台

4.2 初始化

4.2.1 初始化接口

使用对应平台的支付服务前必须对其进行初始化,请在AppDelegate的didFinishLaunchingWithOptions方法调用以下方法。
+(void)init4Iap;

代码示例:

支付的初始化在调用Activity的onCreate中初始化,每次只能初始化一个平台。

4.3 查询库存商品

4.3.1 实现协议 WAInventoryDelegate

4.3.2 调用方法

查寻库存商品,调用以下接口:
+(void)queryInventoryWithDelegate:(id<WAInventoryDelegate>)delegate;

代码示例:

4.4 购买支付

4.4.1 实现协议 WAPaymentDelegate

支付结果说明 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;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
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

5.1.2 调用方法

分享调用以下接口,支持分享链接、图片、视频、Facebook OpenGraph:

+(void)shareWithPlatform:( NSString *const)platform shareContent:(NSObject<WASharingContent>*)shareContent shareWithUI:(BOOL)shareWithUI delegate:(NSObject<WASharingDelegate>*)delegate;

示例代码:

参数说明

参数名 类型 必填 说明 备注
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

5.2.2 调用方法

+(void)appInviteWithPlatform:(NSString *const)platform Content:(WAAppInviteContent*)content delegate:(NSObject<WAAppInviteDialogDelegate>*)delegate;

代码示例:

WAAppInviteContent实体说明:

参数名 类型 必填 说明 备注
appLinkURL NSURL Y 分享链接
appInvitePreviewImageURL NSURL Y 预览图片url地址

5.3 游戏邀请功能

5.3.1 查询可邀请好友列表

游戏邀请只能邀请没有玩过当前游戏的好友,称为可邀请好友,查询可邀请的好友调用以下接口:

+(void)queryInvitableFriendsWithDuration:(float)duration completeBlock:(void(^)(NSArray* friends,NSError *error))block;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
block String Y 回调
duration long Y 过滤时间间隔 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友

5.3.2 游戏邀请

WingSDK 3.5.2版本开始,使用6.7 发送请求接口代替

5.3.2.1 实现协议 WAGameRequestDialogDelegate

5.3.2.2 调用方法

发送游戏邀请请求调用以下接口(注:VK平台一次只能发一次邀请给一个好友):

+(void)gameInviteWithPlatform:(NSString *const)platform Content:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;

代码示例:

注:如果是VK平台 actionType必须赋值(gameRequestContent.actionType = WAGameRequestActionRequest) VK平台有两个actionType: WAGameRequestActionInvite, WAGameRequestActionRequest。在游戏的测试阶段,请用WAGameRequestActionRequest进行测试。正式上线的时候修改为WAGameRequestActionInvite,参照下面流程图。
vk上线流程图

5.3.3 邀请成功记录

成功邀请好友后,在协议方法-gameRequestDialog:platform:didCompleteWithResults:中调用以下接口向服务器记录邀请信息:

+(void)createInviteInfoWithPlatform:(NSString *const)platform results:(NSDictionary*)results handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;

示例代码:

5.3.4 邀请安装奖励

通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,
必须在玩家进行登录成功或者绑定成功之后时候调用。

代码示例:
1.在登录成功的协议(-loginDidCompleteWithResults:)方法中调用

2.在绑定成功的协议(-bindingDidCompleteWithResult:)方法中调用

5.3.5 邀请事件奖励

通过邀请安装使用的用户,在触发定义的特定事件,需要通知服务器奖励邀请人,比如等级达成、充值等,调用以下接口:

代码示例:

5.3.6 查询好友

查询指定平台正在玩游戏的好友列表,调用以下接口:

+(void)queryFriendsWithCompleteBlock:(void(^)(NSArray<WAAppUser *>* friends,NSError *error))block;

示例代码:

5.3.7 查询Facebook Graph Object

Facebook的礼物就是在Facebook控制台创建的Graph Object,查询礼物列表的时候调用这个接口,这个接口只针对Facebook平台。

+(void)queryFBGraphObjectsWithObjectType:(NSString*)objectType completeBlock:(void(^)(NSArray<WAFBObject*>* objects,NSError *error))block;

代码示例:

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;

示例代码:

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;

示例代码:

5.3.10 Facebook查询收到的礼物

Facebook用户查询好友赠送给自己的礼物,调用以下接口:

+(void)fbQueryReceivedGiftsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* gifts,NSError *error))block;

示例代码:

5.3.11 Facebook查询向自己索要礼物的请求

Facebook用户查询好友向自己索要礼物的请求,调用以下接口:

+(void)fbQueryAskForGiftRequestsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* requests,NSError *error))block;

示例代码:

5.3.12 删除请求

Facebook中用户收到的礼物,好友向自己索要礼物的请求都是一个Facebook的请求,收取礼物和拒绝赠送礼物的时候,需要删除掉对应的请求。删除请求调用以下接口:

+(void)fbDeleteRequestWithRequestId:(NSString*)requestId completeBlock:(void(^)(id result,NSError *error))block;

示例代码:

六、游戏社区功能

6.1 通过Group id查询Group详情

通过Group id查询Group详情,调用以下接口:

示例代码:

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详细信息:

示例代码:

6.3 查询当前用户已加入的Group

查询当前用户加入的Group详细信息调用以下接口:

示例代码:

6.4 查询当前应用推荐的所有Group

这是6.2和6.3查询到的Group的汇总,调用以下接口:

示例代码:

6.5 加入Group

加入指定的某个Group,调用以下接口:

示例代码:

6.6 进入Group详情页

进入Group的详情页面,调用以下接口

如果客户端已经安装platform指定平台的app客户端,将会进入到app客户端详情页面,如果没有安装,则打开网页详情页。
参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型
groupUri String Y 打开Group的uri VK平台为screen_name字段值
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义

示例代码:

6.7 发送请求接口

该接口从SDK 3.5.2版本开始启用
发送请求接口向平台好友发送请求,请求包括普通请求、游戏邀请、赠送礼物、索要礼物等,发送请求调用以下接口:

参数说明

参数名 类型 必填 说明 备注
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 额外数据信息 扩展字段,根据各个平台需要定义

表6.7.1 请求类型

变量名 取值值 说明 备注
WA_REQUEST_TYPE_INVITE INVITE 邀请
WA_REQUEST_TYPE_REQUEST REQUEST 普通请求
WA_REQUEST_TYPE_SEND SEND 发送礼物 objectId不能为空
WA_REQUEST_TYPE_ASKFOR ASKFOR 索要礼物 objectId不能为空

示例代码:

注:vk平台测试游戏邀请功能需要申请权限,可以把请求类型设置成WA_REQUEST_TYPE_REQUEST来测试普通邀请,带申请权限通过后改成WA_REQUEST_TYPE_INVITE来测试。关于vk邀请功能的业务流程图如下:
vk上线流程图

七、 数据收集功能模块

7.1 配置

7.1.1 配置概览

拿到wa_sdk_track_config.plist,对各个平台进行相应的配置。注:文件名以及key值不可修改。
iOS-数据收集功能模块
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关。
iOS-数据收集功能模块
WA URL正式环境的地址: https://api.wingsdk.com/data/

7.1.2 WINGSDK数据收集的事件映射配置

由于SDK数据收集后台有若干预定义的事件,具体如表所示。

事件 释义 备注
ghw_startup 应用启动事件 无需调用,sdk内部处理
ghw_login 登录事件 无需调用,sdk内部处理
ghw_initiated_payment 点击充值 无需调用,sdk内部处理
ghw_payment 充值完成 无需调用,Sdk已经集成,只用来发送事件到其他平台, 如果不是通过SDK 购买的,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。没有配置的字段,都是按照我们的预定义字段进行操作。
iOS-数据收集功能模块

7.2 调用

7.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

7.2.2 工程启动时初始化

您需要在第一次启动在应用程序上进行SDK初始化。请保证在发送下面的跟踪事件之前进行SDK初始化。请在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码:

7.2.3 调用事件进行追踪

安装和打开游戏事件是内部触发的,另外关于充值事件(WAEventPayment)和点击充值(WAEventInitiatedPayment)的跟踪已经在WINGSDK中自动调用,用户不用自己调用。若不想启用这两个事件的自动跟踪,可在didFinishLaunchingWithOptions进行如下操作:

调用方法有两种。方法一调用方法简单,但是发送到各个渠道的事件名称(eventName)、参数(params)、累加值(value)是一样的。如果需要自己设置事件名称、参数、累加值,请使用方法二。

7.2.3.1 方法一

调用事件的用法如下:

+(void)trackWithEventName:(NSString *)eventName valueToSum: (double)value params:(NSDictionary *)params;

-eventName:事件名称可在附表中查询
-valueToSum:传入一个double值作为累加值,没有累加值可以传0。
-params:参数字典参数可在附表中查询
例如:

调用购买事件WAEventPayment,

参数:WAEventParameterNameContentType 道具类型,

WAEventParameterNameContentID 内容ID,

WAEventParameterNameItemAmount 购买数量,

WAEventParameterNameCurrencyType 货币类型,

WAEventParameterNameCurrencyAmount 现金额

详见参数表。

7.2.3.2 方法二

7.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

7.2.3.2.2 关于WAEvent实例的构建

(1)设置默认的事件名称
设置该事件的事件名称,SDK内置了应用内事件,请参考7.3事件介绍

(2)设置渠道自定义事件名称


注:
1、eventNameDict的key参考附表7.4渠道名称表
2、AppsFlyer和facebook的应用内事件和WINGSDK的应用内事件已经做了映射(例如: ghw_login <-> af_login,ghw_login<->fb_login,参考下图),用户无需再手动自定义。
3、如果不进行设置,所有的渠道将采用设置的默认值(defaultEventName)。

iOS-各渠道事件映射对应表
(3)设置默认累加值
设置事件用于统计数字,比如购买的金额等

(4)设置渠道自定义累加值


1)valueDict的key值参考附表7.4渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。

(5)设置事件默认的参数/值

注:
1)参数名称参考附表7.3SDK预定义参数名

(6)设置事件渠道自定义的参数/值


注:
1)渠道名称参考:附表7.4渠道名称表
2)参数名称参考:附表7.3SDK预定义参数名
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultParamValues)

(7)渠道开关设置

注:以上代码会关闭Appsflyer对该事件的收集,而Facebook、WINGSDK、Chartboost是打开的。默认情况下,各个渠道都是打开的。所以以上代码可以简化为:

7.3事件介绍

建议参数属性:(参数对应的静态变量名请看附表7.3SDK预定义参数名

7.3.1 WAEventLogin

说明:登录游戏后调用
无参数.

7.3.2 WAEventInitiatedPayment

说明:点击充值时后调用。注:无需调用,SDK已经集成。

参数名 类型 说明 必填 备注
revenue double 收益 N

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

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。

参数名 类型 说明 必填 备注
revenue double 收益 N

7.3.5 WAEventPurchase

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。注:valueToSum/defaultValue的值要传,而且值要和price一样。

参数名 类型 说明 必填 备注
itemName String 游戏内虚拟物品的名称/ID Y
itemAmount int 交易的数量 Y
price float 交易的总价 Y
revenue double 收益 N

7.3.6 WAEventLevelAchieved

说明:统计玩家等级增长事件,达到等级时调用。

参数名 类型 说明 必填 备注
score int 账户分数 N
fighting int 战斗力 N
levelInfo String 等级信息 N
levelType int 等级类型 N
description String 描述 N
revenue double 收益 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
revenue double 收益 N

7.3.8 WAEventUserInfoUpdate

说明:更新用户资料

参数名 类型 说明 必填 备注
roleType String 角色类型 N
nickname String 昵称 N
vip int 等级 N
revenue double 收益 N

7.3.9 WAEventGoldUpdate

说明:玩家货币状况变更统计

参数名 类型 说明 必填 备注
approach String 变更途径 Y 开通VIP、任务获得、公会贡献、解锁背包等
goldType int 货币类型 Y 钻石,绑定钻石,金币,军魂等。
定义有1和2:
1、游戏货币;
2、游戏绑定货币
amount int 变更货币数 Y 消耗用负数表示,获取用正数表示
currentAmount int 用户变更以后该种货币的数量 Y
revenue double 收益 N

7.3.10 WAEventTaskUpdate

说明:玩家任务信息统计

参数名 类型 说明 必填 备注
taskId String 任务Id Y
taskName String 任务名称 Y
taskType String 任务类型 Y
taskStatus int 任务状态 Y 状态标识:
1、领取任务
2、开始任务
3、待领奖(任务完成)
4、已领奖
revenue double 收益 N

7.3.11 WAEventUserImport

说明:导入用户事件

参数名 类型 说明 必填 备注
serverId string 服务器ip Y
isFirstEnter int 是否为第一次导入 Y 否为0,是为:1。默认为0。
revenue double 收益 N

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预定义事件名

事件 常量名
打开游戏 WAEventStartUp ghw_startup(SDK已集成,无需调用)
登录游戏 WAEventLogin ghw_login(SDK已集成,无需调用)
点击充值 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
收益 WAEventParameterNameRevenue revenue 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
服务器id WAEventParameterNameServerId serverId String 服务器ID

附表7.4渠道名称表

常量 代表渠道
WA_PLATFORM_APPSFLYER Appsflyer
WA_PLATFORM_FACEBOOK Facebook
WA_PLATFORM_WINGA WINGSDK
WA_PLATFORM_CHARTBOOST ChartBoost

附:状态码说明

WINGSDK_iOS使用指南(v3.5.2)

wapublisher No Comments

一、集成SDK到项目

集成要求:iOS7.0及以上版本。
WINGSDK进行了抽象层与实现层的分离,整体流程如下图所示:
iOS—集成SDK到项目

1.1 导入抽象层

将提供给CP的抽象层WASdkIntf.framework,以及配置文件wa_sdk_intf_config.xmlwa_sdk_track_config.plistwa_sdk.plist导入到工程中,如下图。注:请将文件夹wasdk放置在工程的.xcodeproj的同一级目录下。
当调用抽象层接口时候,请导入头文件:

#import<WASdkIntf/WASdkIntf.h>

iOS-导入抽象层
iOS-导入抽象层

1.2 WINGSDK配置

1.2.1 WINGSDK基本配置(wa_sdk.plist)

iOS-WINGSDK配置
参数说明:
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 调用下面代码:

2.2 开启/关闭调试模式

WingSDK默认是打开调试模式的,开启调试模式可以在IDE的Logcat中查看到程序的Log信息,方便调试和测试。开启/关闭调试模式调用以下接口。
打开调试模式:

关闭调试模式:

2.3公共参数配置

公共参数必须严格按照文档进行配置,在后续的接口中会使用到这些公共的参数,没有按照要求配置会导致部分接口调用失败。

2.3.1 设置用户gameUserId

用户在选择服务器并且登录之后将用户gameUserId设置到SDK中以便于跟踪。

2.3.2 设置服务器ID

用户登录选服后,调用接口设置服务器id

注意:设置服务器ID的操作在每次选服后都需要进行。

2.3.3 设置用户等级level

设置游戏玩家的角色等级,调用接口:

注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级。

三、用户模块功能

3.1 登录功能使用

3.1.1设置登陆流程接口:

+(void)setLoginFlowType:(int)flowType;

代码示例:

登录流程有两种模式,在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登录

登录平台取值:

名称 取值 备注
WA_PLATFORM_WINGA GUEST WINGSDK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_FACEBOOK FACEBOOK Facebook平台
WA_PLATFORM_VK VK VK平台

(2)登录过程的应用间跳转
请在AppDelegate实现以下方法:

3.1.2.2 实现协议WALoginDelegate中定义的方法

说明:关于APPLE登录,用户每次进入APP进行登录操作,Game Center只进行一次授权。假如用户在第一次登录的时候取消了,以后每次进行登录,程序都会执行登录取消的协议方法,除非用户重新进入app。同样的,第一次登录的时候,出现Game Center授权错误,之后程序都会执行登录失败的协议方法,除非用户重新进入app。

3.1.3 登录对话框

SDK内置了一个包含所有支持的登录方式的一个对话框,通过调用以下接口打开对话框:

3.1.3.1 实现协议WALoginViewDelegate

3.1.3.2 调用方法

+(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled;

cacheEnabled是否缓存登录方式。如果缓存登录方式,第二次调用的时候直接按照上次的登录方式进行登录,不会弹出登录选择框。如果想弹出登录选择框,请调用clearLoginCache方法,清除缓存
代码示例:

3.1.3.3 清除登录方式的缓存(重新弹出登录选择框)

+(void)clearLoginCache;

代码示例:

3.1.3.4 隐藏登录选择框

+(void)hide;

代码示例:

3.1.4 用户登出

退出游戏的时候,必须登出操作。用户登出调用以下接口:

3.2账户管理的使用

3.2.1 绑定第三方平台账户

3.2.1.1 实现协议WAAccountBindingDelegate

说明:关于APPLE账号的绑定,请参考3.1.2.2 实现协议WALoginDelegate中定义的方法的说明。

3.2.1.2 调用方法

+(void)bindingAccountWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WAAccountBindingDelegate>)delegate;

绑定平台取值:

名称 取值 备注
WA_PLATFORM_FACEBOOK FACEBOOK FACEBOOK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_VK VK VK平台

示例代码:

3.2.2 查询已经绑定的第三方平台账户

通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:

+(void)queryBoundAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block;

示例代码:

3.2.3 解绑第三方平台账户

通过以下接口,可以解绑已经绑定的第三方平台账户:

+(void)unBindAccountWithPlatform:(NSString *const)platform platformUserId:(NSString*)pUserId completeBlock:(void(^)(NSError* error))completeBlock;

有以下情况之一者,不可解绑:
1、解绑的账户为WINGSDK平台的;
2、用户没有绑定的第三方平台账户的;
3、用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的。
示例代码:

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;

新建账户后,新的账户会跟当前设备绑定,如果之前的账户没有绑定第三方平台账户,数据将会丢失。
代码示例:

3.2.6 使用账户管理页面

SDK内置了账户管理页面,打开这个内置的页面之前必须先登录,通过这个页面可以对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户。

3.2.6.1 实现协议WAAcctManagerDelegate

3.2.6.2 调用方法

+(void)openAccountManager:(id<WAAcctManagerDelegate>)delegate;

代码示例:

3.2.6.3 关于绑定解绑的通知

账户管理界面没有返回绑定和解绑的结果的,但是会以通知的方式将结果回调给CP。当绑定有结果之后(无论成功失败),将回传一个WABindingResult实例。当解绑有结果(无论成功失败),将回传一个WAAccount实例。有四个通知,分别是绑定成功、绑定失败、解绑成功、解绑失败,通知的名称分别是以下常量:
WABindDidSucceedNotification;//绑定成功

WABindDidFailNotification;//绑定失败

WAUnbindDidSucceedNotification;//解绑成功

WAUnbindDidFailNotification;//解绑失败

注:关于绑定facebook成功之后,请注意触发邀请奖励。代码如下:

3.2.7 获取账户信息

SDK提供了获取指定平台的账户信息,可以通过以下接口获取:
+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;

示例代码:

附表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;

代码示例:

参数说明:

名称 取值 备注
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_BOACOMPRA BOACOMPRA BOACOMPRA平台

4.2 初始化

4.2.1 初始化接口

使用对应平台的支付服务前必须对其进行初始化,请在AppDelegate的didFinishLaunchingWithOptions方法调用以下方法。
+(void)init4Iap;

代码示例:

支付的初始化在调用Activity的onCreate中初始化,每次只能初始化一个平台。

4.3 查询库存商品

4.3.1 实现协议 WAInventoryDelegate

4.3.2 调用方法

查寻库存商品,调用以下接口:
+(void)queryInventoryWithDelegate:(id<WAInventoryDelegate>)delegate;

代码示例:

4.4 购买支付

4.4.1 实现协议 WAPaymentDelegate

支付结果说明 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;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
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

5.1.2 调用方法

分享调用以下接口,支持分享链接、图片、视频、Facebook OpenGraph:

+(void)shareWithPlatform:( NSString *const)platform shareContent:(NSObject<WASharingContent>*)shareContent shareWithUI:(BOOL)shareWithUI delegate:(NSObject<WASharingDelegate>*)delegate;

示例代码:

参数说明

参数名 类型 必填 说明 备注
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

5.2.2 调用方法

+(void)appInviteWithPlatform:(NSString *const)platform Content:(WAAppInviteContent*)content delegate:(NSObject<WAAppInviteDialogDelegate>*)delegate;

代码示例:

WAAppInviteContent实体说明:

参数名 类型 必填 说明 备注
appLinkURL NSURL Y 分享链接
appInvitePreviewImageURL NSURL Y 预览图片url地址

5.3 游戏邀请功能

5.3.1 查询可邀请好友列表

游戏邀请只能邀请没有玩过当前游戏的好友,称为可邀请好友,查询可邀请的好友调用以下接口:

+(void)queryInvitableFriendsWithDuration:(float)duration completeBlock:(void(^)(NSArray* friends,NSError *error))block;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
block String Y 回调
duration long Y 过滤时间间隔 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友

5.3.2 游戏邀请

WingSDK 3.5.2版本开始,使用6.7 发送请求接口代替

5.3.2.1 实现协议 WAGameRequestDialogDelegate

5.3.2.2 调用方法

发送游戏邀请请求调用以下接口(注:VK平台一次只能发一次邀请给一个好友):

+(void)gameInviteWithPlatform:(NSString *const)platform Content:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;

代码示例:

注:如果是VK平台 actionType必须赋值(gameRequestContent.actionType = WAGameRequestActionRequest) VK平台有两个actionType: WAGameRequestActionInvite, WAGameRequestActionRequest。在游戏的测试阶段,请用WAGameRequestActionRequest进行测试。正式上线的时候修改为WAGameRequestActionInvite,参照下面流程图。
vk上线流程图

5.3.3 邀请成功记录

成功邀请好友后,在协议方法-gameRequestDialog:platform:didCompleteWithResults:中调用以下接口向服务器记录邀请信息:

+(void)createInviteInfoWithPlatform:(NSString *const)platform results:(NSDictionary*)results handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;

示例代码:

5.3.4 邀请安装奖励

通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,
必须在玩家进行登录成功或者绑定成功之后时候调用。

代码示例:
1.在登录成功的协议(-loginDidCompleteWithResults:)方法中调用

2.在绑定成功的协议(-bindingDidCompleteWithResult:)方法中调用

5.3.5 邀请事件奖励

通过邀请安装使用的用户,在触发定义的特定事件,需要通知服务器奖励邀请人,比如等级达成、充值等,调用以下接口:

代码示例:

5.3.6 查询好友

查询指定平台正在玩游戏的好友列表,调用以下接口:

+(void)queryFriendsWithCompleteBlock:(void(^)(NSArray<WAAppUser *>* friends,NSError *error))block;

示例代码:

5.3.7 查询Facebook Graph Object

Facebook的礼物就是在Facebook控制台创建的Graph Object,查询礼物列表的时候调用这个接口,这个接口只针对Facebook平台。

+(void)queryFBGraphObjectsWithObjectType:(NSString*)objectType completeBlock:(void(^)(NSArray<WAFBObject*>* objects,NSError *error))block;

代码示例:

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;

示例代码:

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;

示例代码:

5.3.10 Facebook查询收到的礼物

Facebook用户查询好友赠送给自己的礼物,调用以下接口:

+(void)fbQueryReceivedGiftsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* gifts,NSError *error))block;

示例代码:

5.3.11 Facebook查询向自己索要礼物的请求

Facebook用户查询好友向自己索要礼物的请求,调用以下接口:

+(void)fbQueryAskForGiftRequestsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* requests,NSError *error))block;

示例代码:

5.3.12 删除请求

Facebook中用户收到的礼物,好友向自己索要礼物的请求都是一个Facebook的请求,收取礼物和拒绝赠送礼物的时候,需要删除掉对应的请求。删除请求调用以下接口:

+(void)fbDeleteRequestWithRequestId:(NSString*)requestId completeBlock:(void(^)(id result,NSError *error))block;

示例代码:

六、游戏社区功能

6.1 通过Group id查询Group详情

通过Group id查询Group详情,调用以下接口:

示例代码:

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详细信息:

示例代码:

6.3 查询当前用户已加入的Group

查询当前用户加入的Group详细信息调用以下接口:

示例代码:

6.4 查询当前应用推荐的所有Group

这是6.2和6.3查询到的Group的汇总,调用以下接口:

示例代码:

6.5 加入Group

加入指定的某个Group,调用以下接口:

示例代码:

6.6 进入Group详情页

进入Group的详情页面,调用以下接口

如果客户端已经安装platform指定平台的app客户端,将会进入到app客户端详情页面,如果没有安装,则打开网页详情页。
参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型
groupUri String Y 打开Group的uri VK平台为screen_name字段值
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义

示例代码:

6.7 发送请求接口

该接口从SDK 3.5.2版本开始启用
发送请求接口向平台好友发送请求,请求包括普通请求、游戏邀请、赠送礼物、索要礼物等,发送请求调用以下接口:

参数说明

参数名 类型 必填 说明 备注
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 额外数据信息 扩展字段,根据各个平台需要定义

表6.7.1 请求类型

变量名 取值值 说明 备注
WA_REQUEST_TYPE_INVITE INVITE 邀请
WA_REQUEST_TYPE_REQUEST REQUEST 普通请求
WA_REQUEST_TYPE_SEND SEND 发送礼物 objectId不能为空
WA_REQUEST_TYPE_ASKFOR ASKFOR 索要礼物 objectId不能为空

示例代码:

注:vk平台测试游戏邀请功能需要申请权限,可以把请求类型设置成WA_REQUEST_TYPE_REQUEST来测试普通邀请,带申请权限通过后改成WA_REQUEST_TYPE_INVITE来测试。关于vk邀请功能的业务流程图如下:
vk上线流程图

七、 数据收集功能模块

7.1 配置

7.1.1 配置概览

拿到wa_sdk_track_config.plist,对各个平台进行相应的配置。注:文件名以及key值不可修改。
iOS-数据收集功能模块
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关。
iOS-数据收集功能模块
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。没有配置的字段,都是按照我们的预定义字段进行操作。
iOS-数据收集功能模块

7.2 调用

7.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

7.2.2 工程启动时初始化

您需要在第一次启动在应用程序上进行SDK初始化。请保证在发送下面的跟踪事件之前进行SDK初始化。请在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码:

7.2.3 调用事件进行追踪

安装和打开游戏事件是内部触发的,另外关于充值事件(WAEventPayment)和点击充值(WAEventInitiatedPayment)的跟踪已经在WINGSDK中自动调用,用户不用自己调用。若不想启用这两个事件的自动跟踪,可在didFinishLaunchingWithOptions进行如下操作:

调用方法有两种。方法一调用方法简单,但是发送到各个渠道的事件名称(eventName)、参数(params)、累加值(value)是一样的。如果需要自己设置事件名称、参数、累加值,请使用方法二。

7.2.3.1 方法一

调用事件的用法如下:

+(void)trackWithEventName:(NSString *)eventName valueToSum: (double)value params:(NSDictionary *)params;

-eventName:事件名称可在附表中查询
-valueToSum:传入一个double值作为累加值,没有累加值可以传0。
-params:参数字典参数可在附表中查询
例如:

调用购买事件WAEventPayment,

参数:WAEventParameterNameContentType 道具类型,

WAEventParameterNameContentID 内容ID,

WAEventParameterNameItemAmount 购买数量,

WAEventParameterNameCurrencyType 货币类型,

WAEventParameterNameCurrencyAmount 现金额

详见参数表。

7.2.3.2 方法二

7.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

7.2.3.2.2 关于WAEvent实例的构建

(1)设置默认的事件名称
设置该事件的事件名称,SDK内置了应用内事件,请参考7.3事件介绍

(2)设置渠道自定义事件名称


注:
1、eventNameDict的key参考附表7.4渠道名称表
2、AppsFlyer和facebook的应用内事件和WINGSDK的应用内事件已经做了映射(例如: ghw_login <-> af_login,ghw_login<->fb_login,参考下图),用户无需再手动自定义。
3、如果不进行设置,所有的渠道将采用设置的默认值(defaultEventName)。

iOS-各渠道事件映射对应表
(3)设置默认累加值
设置事件用于统计数字,比如购买的金额等

(4)设置渠道自定义累加值


1)valueDict的key值参考附表7.4渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。

(5)设置事件默认的参数/值

注:
1)参数名称参考附表7.3SDK预定义参数名

(6)设置事件渠道自定义的参数/值


注:
1)渠道名称参考:附表7.4渠道名称表
2)参数名称参考:附表7.3SDK预定义参数名
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultParamValues)

(7)渠道开关设置

注:以上代码会关闭Appsflyer对该事件的收集,而Facebook、WINGSDK、Chartboost是打开的。默认情况下,各个渠道都是打开的。所以以上代码可以简化为:

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 Facebook
WA_PLATFORM_WINGA WINGSDK
WA_PLATFORM_CHARTBOOST ChartBoost

附:状态码说明

WINGSDK_iOS使用指南(v3.5.1)

wapublisher No Comments

一、集成SDK到项目

WINGSDK进行了抽象层与实现层的分离,整体流程如下图所示:
iOS—集成SDK到项目

1.1 导入抽象层

将提供给CP的抽象层WASdkIntf.framework,以及配置文件wa_sdk_intf_config.xmlwa_sdk_track_config.plistwa_sdk.plist导入到工程中,如下图。注:请将文件夹wasdk放置在工程的.xcodeproj的同一级目录下。
当调用抽象层接口时候,请导入头文件:

#import<WASdkIntf/WASdkIntf.h>

iOS-导入抽象层
iOS-导入抽象层

1.2 WINGSDK配置

1.2.1 WINGSDK基本配置(wa_sdk.plist)

iOS-WINGSDK配置
参数说明:
WaSdkServerUrl:WINGSDK后台url
生产环境的url:https://api.wingsdk.com/sdkapi/
appKey:WINGSDK后台appKey
appId:WINGSDK后台appId
os:手机操作系统
channel:发布渠道

1.2.2 Facebook相关配置

如果不需要Facebook,请忽略此章节
1、登录配置:详见Facebook公共配置
2、Facebook添加发布权限:详见Facebook添加发布权限
3、Facebook应用邀请配置:详见Facebook应用邀请配置
4、Facebook后台新建礼物:详见Facebook后台新建礼物

1.2.3 APPLE相关配置

如果不需要APPLE,请忽略此章节
1、登录配置:详见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 调用下面代码:

2.2 开启/关闭调试模式

WingSDK默认是打开调试模式的,开启调试模式可以在IDE的Logcat中查看到程序的Log信息,方便调试和测试。开启/关闭调试模式调用以下接口。
打开调试模式:

关闭调试模式:

2.3公共参数配置

公共参数必须严格按照文档进行配置,在后续的接口中会使用到这些公共的参数,没有按照要求配置会导致部分接口调用失败。

2.3.1 设置用户gameUserId

用户在选择服务器并且登录之后将用户gameUserId设置到SDK中以便于跟踪。

2.3.2 设置服务器ID

用户登录选服后,调用接口设置服务器id

注意:设置服务器ID的操作在每次选服后都需要进行。

2.3.3 设置用户等级level

设置游戏玩家的角色等级,调用接口:

注意:第一次进服获取玩家等级或玩家等级变更后,需要及时调用这个接口设置玩家等级。

三、用户模块功能

3.1 登录功能使用

3.1.1设置登陆流程接口:

+(void)setLoginFlowType:(int)flowType;

代码示例:

登录流程有两种模式,在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登录

登录平台取值:

名称 取值 备注
WA_PLATFORM_WINGA GUEST WINGSDK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_FACEBOOK FACEBOOK Facebook平台
WA_PLATFORM_VK VK VK平台

(2)登录过程的应用间跳转
请在AppDelegate实现以下方法:

3.1.2.2 实现协议WALoginDelegate中定义的方法

说明:关于APPLE登录,用户每次进入APP进行登录操作,Game Center只进行一次授权。假如用户在第一次登录的时候取消了,以后每次进行登录,程序都会执行登录取消的协议方法,除非用户重新进入app。同样的,第一次登录的时候,出现Game Center授权错误,之后程序都会执行登录失败的协议方法,除非用户重新进入app。

3.1.3 登录对话框

SDK内置了一个包含所有支持的登录方式的一个对话框,通过调用以下接口打开对话框:

3.1.3.1 实现协议WALoginViewDelegate

3.1.3.2 调用方法

+(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled;

cacheEnabled是否缓存登录方式。如果缓存登录方式,第二次调用的时候直接按照上次的登录方式进行登录,不会弹出登录选择框。如果想弹出登录选择框,请调用clearLoginCache方法,清除缓存
代码示例:

3.1.3.3 清除登录方式的缓存(重新弹出登录选择框)

+(void)clearLoginCache;

代码示例:

3.1.3.4 隐藏登录选择框

+(void)hide;

代码示例:

3.1.4 用户登出

退出游戏的时候,必须登出操作。用户登出调用以下接口:

3.2账户管理的使用

3.2.1 绑定第三方平台账户

3.2.1.1 实现协议WAAccountBindingDelegate

说明:关于APPLE账号的绑定,请参考3.1.2.2 实现协议WALoginDelegate中定义的方法的说明。

3.2.1.2 调用方法

+(void)bindingAccountWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WAAccountBindingDelegate>)delegate;

绑定平台取值:

名称 取值 备注
WA_PLATFORM_FACEBOOK FACEBOOK FACEBOOK平台
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_VK VK VK平台

示例代码:

3.2.2 查询已经绑定的第三方平台账户

通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:

+(void)queryBoundAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block;

示例代码:

3.2.3 解绑第三方平台账户

通过以下接口,可以解绑已经绑定的第三方平台账户:

+(void)unBindAccountWithPlatform:(NSString *const)platform platformUserId:(NSString*)pUserId completeBlock:(void(^)(NSError* error))completeBlock;

有以下情况之一者,不可解绑:
1、解绑的账户为WINGSDK平台的;
2、用户没有绑定的第三方平台账户的;
3、用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的。
示例代码:

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;

新建账户后,新的账户会跟当前设备绑定,如果之前的账户没有绑定第三方平台账户,数据将会丢失。
代码示例:

3.2.6 使用账户管理页面

SDK内置了账户管理页面,打开这个内置的页面之前必须先登录,通过这个页面可以对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户。

3.2.6.1 实现协议WAAcctManagerDelegate

3.2.6.2 调用方法

+(void)openAccountManager:(id<WAAcctManagerDelegate>)delegate;

代码示例:

3.2.6.3 关于绑定解绑的通知

账户管理界面没有返回绑定和解绑的结果的,但是会以通知的方式将结果回调给CP。当绑定有结果之后(无论成功失败),将回传一个WABindingResult实例。当解绑有结果(无论成功失败),将回传一个WAAccount实例。有四个通知,分别是绑定成功、绑定失败、解绑成功、解绑失败,通知的名称分别是以下常量:
WABindDidSucceedNotification;//绑定成功

WABindDidFailNotification;//绑定失败

WAUnbindDidSucceedNotification;//解绑成功

WAUnbindDidFailNotification;//解绑失败

注:关于绑定facebook成功之后,请注意触发邀请奖励。代码如下:

3.2.7 获取账户信息

SDK提供了获取指定平台的账户信息,可以通过以下接口获取:
+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;

示例代码:

附表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;

代码示例:

参数说明:

名称 取值 备注
WA_PLATFORM_APPLE APPLE APPLE平台
WA_PLATFORM_BOACOMPRA BOACOMPRA BOACOMPRA平台

4.2 初始化

4.2.1 初始化接口

使用对应平台的支付服务前必须对其进行初始化,请在AppDelegate的didFinishLaunchingWithOptions方法调用以下方法。
+(void)init4Iap;

代码示例:

支付的初始化在调用Activity的onCreate中初始化,每次只能初始化一个平台。

4.3 查询库存商品

4.3.1 实现协议 WAInventoryDelegate

4.3.2 调用方法

查寻库存商品,调用以下接口:
+(void)queryInventoryWithDelegate:(id<WAInventoryDelegate>)delegate;

代码示例:

4.4 购买支付

4.4.1 实现协议 WAPaymentDelegate

支付结果说明 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;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
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

5.1.2 调用方法

分享调用以下接口,支持分享链接、图片、视频、Facebook OpenGraph:

+(void)shareWithPlatform:( NSString *const)platform shareContent:(NSObject<WASharingContent>*)shareContent shareWithUI:(BOOL)shareWithUI delegate:(NSObject<WASharingDelegate>*)delegate;

示例代码:

参数说明

参数名 类型 必填 说明 备注
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后台配置,请参考Facebook应用邀请配置

5.2.1 实现协议 WAAppInviteDialogDelegate

5.2.2 调用方法

+(void)appInviteWithPlatform:(NSString *const)platform Content:(WAAppInviteContent*)content delegate:(NSObject<WAAppInviteDialogDelegate>*)delegate;

代码示例:

WAAppInviteContent实体说明:

参数名 类型 必填 说明 备注
appLinkURL NSURL Y 分享链接
appInvitePreviewImageURL NSURL Y 预览图片url地址

5.3 游戏邀请功能

5.3.1 查询可邀请好友列表

游戏邀请只能邀请没有玩过当前游戏的好友,称为可邀请好友,查询可邀请的好友调用以下接口:

+(void)queryInvitableFriendsWithDuration:(float)duration completeBlock:(void(^)(NSArray* friends,NSError *error))block;

代码示例:

参数说明:

参数名 类型 必填 说明 备注
block String Y 回调
duration long Y 过滤时间间隔 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友

5.3.2 游戏邀请

5.3.2.1 实现协议 WAGameRequestDialogDelegate

5.3.2.2 调用方法

发送游戏邀请请求调用以下接口(注:VK平台一次只能发一次邀请给一个好友):

+(void)gameInviteWithPlatform:(NSString *const)platform Content:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;

代码示例:

注:如果是VK平台 actionType必须赋值(gameRequestContent.actionType = WAGameRequestActionRequest) VK平台有两个actionType: WAGameRequestActionInvite, WAGameRequestActionRequest。在游戏的测试阶段,请用WAGameRequestActionRequest进行测试。正式上线的时候修改为WAGameRequestActionInvite,参照下面流程图。
vk上线流程图

5.3.3 邀请成功记录

成功邀请好友后,在协议方法-gameRequestDialog:platform:didCompleteWithResults:中调用以下接口向服务器记录邀请信息:

+(void)createInviteInfoWithPlatform:(NSString *const)platform results:(NSDictionary*)results handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;

示例代码:

5.3.4 邀请安装奖励

通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,
必须在玩家进行登录成功或者绑定成功之后时候调用。

代码示例:
1.在登录成功的协议(-loginDidCompleteWithResults:)方法中调用

2.在绑定成功的协议(-bindingDidCompleteWithResult:)方法中调用

5.3.5 邀请事件奖励

通过邀请安装使用的用户,在触发定义的特定事件,需要通知服务器奖励邀请人,比如等级达成、充值等,调用以下接口:

代码示例:

5.3.6 查询好友

查询指定平台正在玩游戏的好友列表,调用以下接口:

+(void)queryFriendsWithCompleteBlock:(void(^)(NSArray<WAAppUser *>* friends,NSError *error))block;

示例代码:

5.3.7 查询Facebook Graph Object

Facebook的礼物就是在Facebook控制台创建的Graph Object,查询礼物列表的时候调用这个接口,这个接口只针对Facebook平台。

+(void)queryFBGraphObjectsWithObjectType:(NSString*)objectType completeBlock:(void(^)(NSArray<WAFBObject*>* objects,NSError *error))block;

代码示例:

5.3.8 Facebook赠送礼物

使用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;

示例代码:

5.3.9 Facebook索要礼物

Facebook用户向游戏内的好友发出索要礼物的请求。

5.3.9.1 实现协议 WAGameRequestDialogDelegate

5.3.2.1 实现协议 WAGameRequestDialogDelegate

5.3.9.2 调用方法

+(void)fbAskForGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;

示例代码:

5.3.10 Facebook查询收到的礼物

Facebook用户查询好友赠送给自己的礼物,调用以下接口:

+(void)fbQueryReceivedGiftsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* gifts,NSError *error))block;

示例代码:

5.3.11 Facebook查询向自己索要礼物的请求

Facebook用户查询好友向自己索要礼物的请求,调用以下接口:

+(void)fbQueryAskForGiftRequestsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* requests,NSError *error))block;

示例代码:

5.3.12 删除请求

Facebook中用户收到的礼物,好友向自己索要礼物的请求都是一个Facebook的请求,收取礼物和拒绝赠送礼物的时候,需要删除掉对应的请求。删除请求调用以下接口:

+(void)fbDeleteRequestWithRequestId:(NSString*)requestId completeBlock:(void(^)(id result,NSError *error))block;

示例代码:

六、游戏社区功能

6.1 通过Group id查询Group详情

通过Group id查询Group详情,调用以下接口:

示例代码:

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详细信息:

示例代码:

6.3 查询当前用户已加入的Group

查询当前用户加入的Group详细信息调用以下接口:

示例代码:

6.4 查询当前应用推荐的所有Group

这是6.2和6.3查询到的Group的汇总,调用以下接口:

示例代码:

6.5 加入Group

加入指定的某个Group,调用以下接口:

示例代码:

6.6 进入Group详情页

进入Group的详情页面,调用以下接口

如果客户端已经安装platform指定平台的app客户端,将会进入到app客户端详情页面,如果没有安装,则打开网页详情页。
参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型
groupUri String Y 打开Group的uri VK平台为screen_name字段值
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义

示例代码:

七、 数据收集功能模块

7.1 配置

7.1.1 配置概览

拿到wa_sdk_track_config.plist,对各个平台进行相应的配置。注:文件名以及key值不可修改。
iOS-数据收集功能模块
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关。
iOS-数据收集功能模块
WA URL正式环境的地址: https://api.wingsdk.com/data/

7.1.2 WINGSDK数据收集的事件映射配置

由于SDK数据收集后台有若干预定义的事件,具体如表所示。

事件 释义 备注
ghw_launch 安装事件 无需调用,sdk内部处理
ghw_startup 应用启动事件 无需调用,sdk内部处理
ghw_complete_registration 注册账号事件
ghw_login 登录事件
ghw_initiated_payment 点击充值 无需调用,sdk内部处理
ghw_payment 充值完成 无需调用,Sdk已经集成
ghw_initiated_purchase 点击购买 注,虚拟交易
ghw_purchase 购买完成 注,虚拟交易
ghw_heartbeat 在线时长 无需调用,sdk内部处理
ghw_level_achieved 升级事件
ghw_add_to_cart 加入购物车
ghw_add_to_wishlist 兴趣标记
ghw_search 搜索内容
ghw_spent_credits 信用点消费
ghw_achievement_unlocked 完成解锁
ghw_content_view 内容查看
ghw_share 分享事件
ghw_invite 邀请时间
ghw_re_engage 重新连接到游戏
ghw_update 更新游戏
ghw_user_create 创建角色
ghw_user_info_init 用户资料初始化
ghw_user_info_update 用户资料更新
ghw_task_update 玩家任务统计
ghw_gold_update 货币状况变更
ghw_opened_from_push_notification 打开推送通知

为了数据收集更通用,我们做了一个映射。作用是将一个自定义字段映射到我们的预定义字段。这个映射是针对7.2.3.1 方法一做的。如果你使用7.2.3.2方法二进行数据收集,可以忽略这个映射。如下图,在配置文件wa_sdk_track_config.plist中,展开文件,可以看到WINGSDK下面有一个Mapping节点,展开Mapping节点,就是我们平台的预定义事件字段。如下所示,字段registration等价于ghw_complete_registration,login等价于ghw_login。没有配置的字段,都是按照我们的预定义字段进行操作。
iOS-数据收集功能模块

7.2 调用

7.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

7.2.2 工程启动时初始化

您需要在第一次启动在应用程序上进行SDK初始化。请保证在发送下面的跟踪事件之前进行SDK初始化。请在AppDelegate中的didFinishLaunchingWithOptions方法中添加以下代码:

7.2.3 调用事件进行追踪

安装和打开游戏事件是内部触发的,另外关于充值事件(WAEventPayment)和点击充值(WAEventInitiatedPayment)的跟踪已经在WINGSDK中自动调用,用户不用自己调用。若不想启用这两个事件的自动跟踪,可在didFinishLaunchingWithOptions进行如下操作:

调用方法有两种。方法一调用方法简单,但是发送到各个渠道的事件名称(eventName)、参数(params)、累加值(value)是一样的。如果需要自己设置事件名称、参数、累加值,请使用方法二。

7.2.3.1 方法一

调用事件的用法如下:

+(void)trackWithEventName:(NSString *)eventName valueToSum: (double)value params:(NSDictionary *)params;

-eventName:事件名称可在附表中查询
-valueToSum:传入一个double值作为累加值,没有累加值可以传0。
-params:参数字典参数可在附表中查询
例如:

调用购买事件WAEventPayment,

参数:WAEventParameterNameContentType 道具类型,

WAEventParameterNameContentID 内容ID,

WAEventParameterNameItemAmount 购买数量,

WAEventParameterNameCurrencyType 货币类型,

WAEventParameterNameCurrencyAmount 现金额

详见参数表。

7.2.3.2 方法二

7.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

7.2.3.2.2 关于WAEvent实例的构建

(1)设置默认的事件名称
设置该事件的事件名称,SDK内置了应用内事件,请参考7.3事件介绍

(2)设置渠道自定义事件名称


注:
1、eventNameDict的key参考附表7.4渠道名称表
2、AppsFlyer和facebook的应用内事件和WA的应用内事件已经做了映射(例如: ghw_login <-> af_login,ghw_login<->fb_login,参考下图),用户无需再手动自定义。
3、如果不进行设置,所有的渠道将采用设置的默认值(defaultEventName)。

iOS-各渠道事件映射对应表
(3)设置默认累加值
设置事件用于统计数字,比如购买的金额等

(4)设置渠道自定义累加值


1)valueDict的key值参考附表7.4渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。

(5)设置事件默认的参数/值

注:
1)参数名称参考附表7.3SDK预定义参数名

(6)设置事件渠道自定义的参数/值


注:
1)渠道名称参考:附表7.4渠道名称表
2)参数名称参考:附表7.3SDK预定义参数名
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultParamValues)

(7)渠道开关设置

注:以上代码会关闭Appsflyer对该事件的收集,而Facebook、WingAnalytics、Chartboost是打开的。默认情况下,各个渠道都是打开的。所以以上代码可以简化为:

7.3事件介绍

建议参数属性:(参数对应的静态变量名请看附表7.3SDK预定义参数名

7.3.1 WAEventCompleteRegistration注册账号

说明:注册帐号完成后调用

参数名 类型 说明 必填 备注
ghw_registration_method String 账户类型 N 注册方式(string):比如facebook邮箱,google邮箱等
gender int 性别 N 性别(string): 0表示女,1表示男,2表示未知,分别有枚举:
WAEnumGenderFemale
WAEnumGenderMale
WAEnumGenderUnknown
age int 年龄 N
success bool 是否成功注册 N

7.3.2 WAEventLogin登录游戏

说明:登录游戏后调用
无参数.

7.3.3 WAEventInitiatedPayment点击充值卡

说明:点击充值时后调用。注:无需调用,SDK已经集成。
无参数.

7.3.4 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.5 WAEventInitiatedPurchase点击购买

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。
无参数。

7.3.6 WAEventPurchase购买完成

说明:点击购买的时候调用(用于游戏内部虚拟交易统计)。注:valueToSum/defaultValue的值要传,而且值要和price一样。

参数名 类型 说明 必填 备注
itemName String 游戏内虚拟物品的名称/ID Y
itemAmount int 交易的数量 Y
price float 交易的总价 Y

7.3.7 WAEventLevelAchieved等级增长

说明:统计玩家等级增长事件,达到等级时调用。

参数名 类型 说明 必填 备注
score int 账户分数 N
fighting int 战斗力 N
levelInfo String 等级信息 N
levelType int 等级类型 N
description String 描述 N

7.3.8 WAEventAddToCart添加到购物车

说明:统计玩家添加到购物车。注:valueToSum的值要传,而且值要和price一样。

参数名 类型 说明 必填 备注
price double 价格 Y
contentType String 道具类型 N
contentId String 道具ID N
currencyType String 货币类型 N
quantity int 数量 N

7.3.9 WAEventAddToWishlist添加到心愿单

说明:统计玩家添加到购物车。注:valueToSum/defaultValue的值要传,而且值要和price一样。

参数名 类型 说明 必填 备注
price double 价格 Y
contentType String 道具类型 N
contentId String 道具ID N
currencyType String 货币类型 N
quantity int 数量 N

7.3.10 WAEventSearch搜索

说明:统计玩家搜索事件。

参数名 类型 说明 必填 备注
contentType String 搜索内容类型 N
searchString String 搜索关键字 Y
success bool 是否搜索成功 Y

7.3.11WAEventSpentCredits使用信用点消费

说明:统计玩家使用信用点消费事件。注:valueToSum/defaultValue的值要传,而且值要和price一样。

参数名 类型 说明 必填 备注
price float 价格 Y
contentType String 物品类型 N
contentId String 物品ID Y

7.3.12 WAEventAchievementUnlocked完成解锁事件

说明:统计玩家解锁事件。

参数名 类型 说明 必填 备注
description String 描述 N

7.3.13 WAEventContentView查看内容

说明:统计玩家查看内容事件。valueToSum/defaultValue的值要传,而且值要和price一样

参数名 类型 说明 必填 备注
price double 价格 Y
contentType String 物品类型 N
contentId String 物品ID Y
currencyType String 货币类型 N

7.3.14 WAEventShare分享事件

说明:统计玩家分享事件。

参数名 类型 说明 必填 备注
description String 描述

7.3.15 WAEventInvite邀请事件

说明:统计玩家邀请事件。

参数名 类型 说明 必填 备注
description String 描述 N

7.3.16 WAEventReEngage重新连接服务器

说明:统计游戏重新连接到服务器事件。(断线重连)

参数名 类型 说明 必填 备注
description String 描述 N

7.3.17 WAEventUpdate更新游戏

说明:统计玩家更新游戏事件。
无参数(待定)

7.3.18 WAEventOpenedFromPushNotification打开推送通知

说明:统计玩家打开推送通知事件。
无参数.

7.3.19 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.20 WAEventUserInfoUpdate更新用户信息

说明:更新用户资料

参数名 类型 说明 必填 备注
roleType String 角色类型 N
nickname String 昵称 N
vip int 等级 N

7.3.21 WAEventGoldUpdate货币状况更新

说明:玩家货币状况变更统计

参数名 类型 说明 必填 备注
approach String 变更途径 Y 开通VIP、任务获得、公会贡献、解锁背包等
goldType String 货币类型 Y 钻石,绑定钻石,金币,军魂等。
预定义有1和2:
1、游戏货币;
2、游戏绑定货币,其他直接传字符串
amount int 变更货币数 Y 消耗用负数表示,获取用正数表示
currentAmount int 用户变更以后该种货币的数量 Y

7.3.22 WAEventTaskUpdate玩家任务统计

说明:玩家任务信息统计

参数名 类型 说明 必填 备注
taskId String 任务Id Y
taskName String 任务名称 Y
taskType String 任务类型 Y
taskStatus int 任务状态 Y 状态标识:
1、领取任务
2、开始任务
3、待领奖(任务完成)
4、已领奖

7.3.23 WAEventUserImport导入用户事件

说明:导入用户事件
无参数。

7.3.24自定义事件

事件描述:自定义事件
事件名称:自定义(必须以”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已集成,无需调用)
注册账号 WAEventCompleteRegistration ghw_complete_registration
登录游戏 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
加入购物车 WAEventAddToCart ghw_add_to_cart
兴趣标记/愿望 WAEventAddToWishlist ghw_add_to_wishlist
搜索内容 WAEventSearch ghw_search
使用信用点消费 WAEventSpentCredits ghw_spent_credits
完成解锁事件 WAEventAchievementUnlocked ghw_achievement_unlocked
内容查看 WAEventContentView ghw_content_view
分享事件 WAEventShare ghw_share
邀请事件 WAEventInvite ghw_invite
重新连接到游戏 WAEventReEngage ghw_re_engage
更新游戏 WAEventUpdate ghw_update
创建角色 WAEventUserCreate ghw_user_create
用户资料初始化 WAEventUserInfoInit ghw_user_info_init
用户资料更新 WAEventUserInfoUpdate ghw_user_info_update
玩家任务统计 WAEventTaskUpdate ghw_task_update
货币状况变更 WAEventGoldUpdate ghw_gold_update
打开推送通知 WAEventOpenedFromPushNotification ghw_opened_from_push_notification

附表7.3 SDK预定义参数名

参数意义 常量名 类型 备注
注册方式 WAEventParameterNameRegistrationMethod ghw_registration_method Sting 比如facebook邮箱,google邮箱等
货币类型 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
等级类型 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 Facebook
WA_PLATFORM_WINGA WINGSDK
WA_PLATFORM_CHARTBOOST ChartBoost