一、简介
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、Game Service,游戏互动更简单;
5、社区,提高玩家的积极性和互动。
1.5 应用墙模块
应用墙模块,提供应用、游戏的推广下载,引导用户安装。
注意:此模块会对苹果应用商店上架造成一定的风险,请酌情使用。
1.6消息推送
WINGSDK推送功能是基于苹果APNS,可以向客户端推送消息,通过简单几步配置即可使用。
1.7 广告
WINGSDK广告功能,可以向玩家展示视频广告,并且可以实现奖励机制。
二、快速集成
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.plist
,wa_sdk.plist
,如下图。
关于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 | 版本 | 说明 |
---|---|---|
4.26.0 | ||
APPSFLYER | 4.7.11 | |
CHARTBOOST | 6.6.3 | |
VK | 1.4.2 | |
3.0 |
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)——必接
其它可选:
-
WAAdImpl(Ad)——可选
-
WAAfImpl(Appsflyer)——可选
-
WAApImpl(Apple)——可选
-
WACbImpl(Chartboost)——可选
-
WAFbImpl(Facebook) ——可选
-
WAPushImpl(Push)——可选
-
WAVkImpl(VK)——可选
-
WATwitterImpl(Twitter)——可选
-
WAInstagramImpl(Instagram)——可选
-
WAWebPayImpl(WebPay)——可选,如果需要第三方支付则需添加此模块
提示:使用CocoaPod引用的项目打开项目时需要点击’xcworkspace’而不是’ xcodeproj’
方式二:手动引用
如果手动引用,可以使用WINGSDK打包配置页面https://admin.wingsdk.com/developers/pack_config.do进行各个包的下载,并添加到xcode项目中。
下载完成后解压,把解压后的文件拖入xcode工程,其中WASdkIntf和WASdkImpl是必接库,其它可选。
注意:需要加入系统库libsqlite3.tbd(libsqlite3.dylib)、libz.tbd(libz.dylib)
2.2.2 WINGSDK基本配置(wa_sdk.plist)
参数说明:
WaSdkServerUrl:WINGSDK后台url(生产环境:https://api.wingsdk.com/sdkapi/)
appKey:WINGSDK后台appKey
appId:WINGSDK后台appId
os:手机操作系统
channel:发布渠道
2.2.3 工程构建配置
在项目Build Settings中搜索Other Linker Flags 修改值为-ObjC
如下图
2.3 SDK初始化
1、请在AppDelegate的didFinishLaunchingWithOptions 调用下面代码:
1 2 3 |
[WACoreProxy init];//注:此方法要在主线程中调用,不要放入子线程中。 [WACoreProxy application:application didFinishLaunchingWithOptions:launchOptions]; |
2、在AppDelegate的applicationDidEnterBackground调用下面代码:
1 2 |
[WACoreProxy applicationDidEnterBackground:application]; |
3、在AppDelegate的applicationWillEnterForeground调用下面代码:
1 2 |
[WACoreProxy applicationWillEnterForeground:application]; |
4、在AppDelegate的applicationDidBecomeActive调用下面代码:
1 2 |
[WACoreProxy applicationDidBecomeActive:application]; |
2.4 登录
登录过程中如果涉及到应用间跳转,需要在AppDelegate中实现以下方法
1 2 3 4 5 6 7 8 9 10 |
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [WACoreProxy application:application openURL:url sourceApplication:sourceApplication annotation:annotation]; } - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { return [WACoreProxy application:app openURL:url options:options]; } |
2.4.1 登录对话框
SDK内置了一个包含所有支持的登录方式的一个对话框,通过调用以下接口打开对话框:
2.4.1.1 实现协议 WALoginViewDelegate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
(1)登录成功 /*! @abstract 登录成功 @param result 登录的用户信息 */ -(void)loginViewDidCompleteWithResult:(WALoginResult*)result; (2)登录失败 /*! @abstract 登录失败 @param result 登录的用户信息 注:这不是登录结果,由于登录失败所以userId是空的.但如果第三方平台(Facebook,Apple)授权成功,pUserId,pToken,extends不为空,可用于提示用户. @param error 错误 */ -(void)loginViewDidFailWithError:(NSError*)error andResult:(WALoginResult*)result; (3)登录取消 /*! @abstract 用户取消登录 @param result 登录的用户信息(只有platform非空). */ -(void)loginViewDidCancel:(WALoginResult*)result; |
3.4.1.2 调用方法
+(void)login:(id<WALoginViewDelegate>)delegate cacheEnabled:(BOOL)cacheEnabled;
cacheEnabled是否缓存登录方式。如果缓存登录方式,第二次调用的时候直接按照上次的登录方式进行登录,不会弹出登录选择框。如果想弹出登录选择框,请调用clearLoginCache方法,清除缓存
代码示例:
1 2 |
[WAUserProxy login:<#your delegate#> cacheEnabled:<#(BOOL)#>]; |
2.4.1.3 清除登录方式的缓存(重新弹出登录选择框)
+(void)clearLoginCache;
代码示例:
1 2 |
[WAUserProxy clearLoginCache]; |
2.4.1.4 隐藏登录选择框
+(void)hide;
代码示例:
1 2 |
[WAUserProxy 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登录
1 2 |
[WAUserProxy loginWithPlatform: WA_PLATFORM_FACEBOOK extInfo:nil delegate:self]; |
登录平台请参考5.1.2 平台取值
2.4.2.2 实现协议WALoginDelegate中定义的方法
说明:关于APPLE登录,用户每次进入APP进行登录操作,Game Center只进行一次授权。假如用户在第一次登录的时候取消了,以后每次进行登录,程序都会执行登录取消的协议方法,除非用户结束应用重新打开。同样的,第一次登录的时候,出现Game Center授权错误,之后程序都会执行登录失败的协议方法,除非用户结束应用重新打开。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
(1)登录成功 /*! @abstract 登录成功 @param results 登录结果 */ -(void)loginDidCompleteWithResults:(WALoginResult*)result; (2)登录失败 /*! @abstract 登录失败 @param result 登录的用户信息 注:这不是登录结果,由于登录失败所以userId是空的.但如果第三方平台(Facebook,Apple)授权成功,pUserId,pToken,extends不为空,可用于提示用户. @param error 错误 */ -(void)loginDidFailWithError:(NSError*)error andResult:(WALoginResult*)result; (3)登录取消 /*! @abstract 用户取消登录 @param result 登录的账户信息 (注:返回的result只有platform有值) */ -(void)loginDidCancel:(WALoginResult*)result; |
2.4.3 用户登出
退出游戏的时候,必须登出操作。用户登出调用以下接口:
[WAUserProxy logout];
注意:调用logout接口后,serverId、gameUseId、level字段值会被重置,如果需要保持相应字段的值不重置,需要重新设置相应字段的值,参考3.1 公共参数设置
2.5 支付
WINGSDK支付流程如下:
2.5.1 初始化
使用对应平台的支付服务前必须对其进行初始化,请在AppDelegate的didFinishLaunchingWithOptions方法调用以下方法。
+(void)init4Iap;
代码示例:
1 2 |
[WAPayProxy init4Iap]; |
2.5.2 查询商品
2.5.2.1 实现协议 WAInventoryDelegate
1 2 3 4 5 6 7 8 9 10 11 12 |
/*! @abstract 查询成功 @param Inventory 是一个数组,保存着WAIapProduct类型的实例(仅productIdentifier可用) */ -(void)queryInventoryDidCompleteWithResult:(NSArray<WAIapProduct *>*)Inventory; /*! @abstract 查询失败 @param error 错误 */ -(void)queryInventoryDidFailWithError:(NSError*)error; |
2.5.2.2 调用方法
查寻库存商品,调用以下接口:
+(void)queryInventoryWithDelegate:(id<WAInventoryDelegate>)delegate;
代码示例:
1 2 |
[WAPayProxy queryInventoryWithDelegate:self]; |
2.5.3 购买商品
2.5.3.1 实现协议 WAPaymentDelegate
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/*! @abstract 支付成功 @param iapResult 支付结果 @param platform 支付平台 */ -(void)paymentDidCompleteWithResult:(WAIapResult*)iapResult andPlatform:(NSString*)platform; /*! @abstract 支付失败 @param error 错误 @param platform 支付平台 */ -(void)paymentDidFailWithError:(NSError*)error andPlatform:(NSString*)platform; |
支付结果说明 WAIapResult
字段名 | 类型 | 说明 | 备注 |
---|---|---|---|
productIdentifier | NSString | 商品id | |
resultCode | long | 支付结果代码 | 1.支付成功 2.支付失败 3.用户取消 4.支付成功,上报失败 5.商品消耗中 6.创建订单失败 |
2.5.3.2 调用方法
购买指定平台的商品,调用以下接口:
+(void)payWithProductId:(NSString*)productId extInfo:(NSString*)extInfo delegate:(id<WAPaymentDelegate>)delegate;
代码示例:
1 2 |
[WAPayProxy payWithProductId:product.productIdentifier extInfo:nil delegate:self]; |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
productId | String | Y | 库存商品的id | wingsdk平台的商品id |
extInfo | String | N | 额外信息,该信息会在支付成功后原样通知到CP服务器,CP用于检验 | CP 扩展信息字段,限长512(JSON格式),WING服务器到CP服务器发货通知时原样返回给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;
代码示例:
1 2 |
[WAPayProxy isPayServiceAvailableWithPlatform]; |
2.6 数据收集
使用WINGSDK数据收集接口配合大数据平台,可以轻松统计玩家习惯以及充值等行为,为游戏的市场营销提供数据依据。WINGSDK数据收集使用在游戏的过程中打点的方式,如图所示:
以上流程图中涉及到的几个接口: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值不可修改。
其中,AppleAppID可以在iTunes Connect(https://itunesconnect.apple.com)中新建应用之后获取,具体可以参考iOS-第三方后台配置文档“Apple基础配置”章节。
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关,Enable: YES-开,NO-关。
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:参数字典参数可在附表中查询
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
NSDictionary *params = @{ WAEventParameterNameSuccess:@YES, WAEventParameterNameTransactionId:@”transactionId”, WAEventParameterNamePaymentType:[NSNumber numberWithInt:WAEnumPaymentTypeApple], WAEventParameterNameCurrencyType:@”CNY”, WAEventParameterNameCurrencyAmount:@100, WAEventParameterNameVirtualCoinAmount:@122, WAEventParameterNameIAPId:@”iapId”, WAEventParameterNameIAPName:@”iapName”, WAEventParameterNameIAPAmount:@100, WAEventParameterNamePrice:@100, }; [WATrackProxy trackWithEventName:WAEventPayment valueToSum:100 params:params]; |
调用购买事件WAEventPayment,
参数:WAEventParameterNameContentType
道具类型,
WAEventParameterNameContentID
内容ID,
WAEventParameterNameItemAmount
购买数量,
WAEventParameterNameCurrencyType
货币类型,
WAEventParameterNameCurrencyAmount
现金额
…
2.6.2.3.2 方法二
注:当使用带有小数点的数值时,使用NSDecimalNumber类型,如[NSDecimalNumber decimalNumberWithString:@"8.88"];
2.6.2.3.2.1 调用示例
步骤一 构建WAEvent实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
WAEvent* event = [[WAEvent alloc]init]; event.defaultEventName = WAEventLevelAchieved; event.defaultValue = 1; event.defaultParamValues = @{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }; event.eventNameDict = @{WA_PLATFORM_APPSFLYER:WAEventLevelAchieved,WA_PLATFORM_CHARTBOOST:WAEventLevelAchieved,WA_PLATFORM_FACEBOOK:@"FacebookLevelAchieved",WA_PLATFORM_WINGA:WAEventLevelAchieved}; event.valueDict = @{WA_PLATFORM_APPSFLYER:@1,WA_PLATFORM_CHARTBOOST:@1,WA_PLATFORM_FACEBOOK:@2,WA_PLATFORM_WINGA:@1}; event.channelSwitcherDict = @{WA_PLATFORM_APPSFLYER:@NO,WA_PLATFORM_FACEBOOK:@YES,WA_PLATFORM_WINGA:@YES,WA_PLATFORM_CHARTBOOST:@YES}; event.paramValuesDict = @{ WA_PLATFORM_APPSFLYER:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }, WA_PLATFORM_CHARTBOOST:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }, WA_PLATFORM_FACEBOOK:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }, WA_PLATFORM_WINGA:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 } }; [event trackEvent]; |
步骤二 发送数据:
1 2 |
[event trackEvent]; |
2.6.2.3.2.2 关于WAEvent 实例的构建
(1)设置默认的事件名称
设置该事件的事件名称,请参考5.2.1 SDK 预定义事件名
event.defaultEventName = WAEventLevelAchieved;
(2)设置渠道自定义事件名称
1 2 |
event.eventNameDict = @{WA_PLATFORM_APPSFLYER:WAEventLevelAchieved,WA_PLATFORM_CHARTBOOST:WAEventLevelAchieved,WA_PLATFORM_FACEBOOK:@"FacebookLevelAchieved",WA_PLATFORM_WINGA:WAEventLevelAchieved}; |
注:
1)eventNameDict的key参考附表 2.6.2 渠道名称表
2)AppsFlyer和facebook的应用内事件和WINGSDK的应用内事件已经做了映射(例如: ghw_login <-> af_login,ghw_login<->fb_login,参考下图),用户无需再手动自定义。
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultEventName)。
(3)设置默认累加值
设置累加值用于统计数字,比如购买的金额等
event.defaultValue = 1;
(4)设置渠道自定义累加值
1 2 |
event.valueDict = @{WA_PLATFORM_APPSFLYER:@1,WA_PLATFORM_CHARTBOOST:@1,WA_PLATFORM_FACEBOOK:@2,WA_PLATFORM_WINGA:@1}; |
1)valueDict的key值参考 附表2.6.2 渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。
(5)设置事件默认的参数/值
1 2 3 4 5 |
event.defaultParamValues = @{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }; |
注:
1)参数名称参考5.2.2 SDK 预定义参数名
(6)设置事件渠道自定义的参数/值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
event.paramValuesDict = @{ WA_PLATFORM_APPSFLYER:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }, WA_PLATFORM_CHARTBOOST:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }, WA_PLATFORM_FACEBOOK:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 }, WA_PLATFORM_WINGA:@{ WAEventParameterNameScore:@100, WAEventParameterNameFighting:@1000 } }; |
注:
1)渠道名称参考:附表 2.6.2 渠道名称表
2)参数名称参考:5.2.2 SDK 预定义参数名
3)如果不进行设置,所有的渠道将采用设置的默认值(defaultParamValues)
(7)渠道开关设置
1 2 |
event.channelSwitcherDict = @{WA_PLATFORM_APPSFLYER:@NO,WA_PLATFORM_FACEBOOK:@YES,WA_PLATFORM_WINGA:@YES,WA_PLATFORM_CHARTBOOST:@YES}; |
注:以上代码会关闭Appsflyer对该事件的收集,而Facebook、WINGSDK、Chartboost是打开的。默认情况下,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 自定义事件
事件描述:自定义事件
事件名称:自定义
参数:自定义
有无累计值:自定义
说明:支持自定义事件的统计
自定义
自定义事件目前只支持事件名和累加值,见示例。
例如:
1 2 3 4 5 |
WAEvent* event = [[WAEvent alloc]init]; event.defaultEventName =@”custom_event_name”; event.defaultValue = 1; [event trackEvent]; |
附表 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 | |
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 用户登录接口 ,登录平台取值WINGA(CHANNEL_WA),将CP后台返回的用户信息按照规定格式(JSON字符串)通过extInfo字段传入。
应用内登录extInfo格式(标准JSON格式字符串)
1 2 3 4 5 6 7 |
{ "appSelfLogin": true, "puserId": "12345", "accessToken": "o1akkfjia81FMvFSO8kxC96TgQYlheEr", "extInfo": "extInfo String" } |
实例:
1 2 3 |
NSString* extra = @"{\"puserId\":\"12345\",\"extInfo\":\"extInfo String\",\"accessToken\":\"o1akkfjia81FMvFSO8kxC96TgQYlhEEr\",\"appSelfLogin\":true}"; [WAUserProxy loginWithPlatform:WA_PLATFORM_WINGA extInfo: extra delegate:self]; |
字段说明:
字段名 | 类型 | 说明 | 必填 | 备注 |
---|---|---|---|---|
appSelfLogin | boolean | 应用内登录固定值true | Y | |
puserId | String | CP用户id | Y | |
accessToken | String | CP用户Token | Y | |
extInfo | String | 额外信息 | N | CP 扩展信息字段,限长512,WING服务器到CP服务器验证登录时原样返回给CP。CP可以添加任意自定义的字段(JSON格式),用于检验登录或扩展其它功能,不超过长度限制即可。 |
3.4 账户管理
3.4.1 使用账户管理页面
SDK内置了账户管理页面,打开这个内置的页面之前必须先登录,通过这个页面可以对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户。
3.4.1.1 实现协议 WAAcctManagerDelegate
1 2 3 4 5 6 7 8 9 10 11 12 |
/*! @abstract 新建账户回调接口 @param result 新建账户的账户信息 */ -(void)newAcctDidCompleteWithResult:(WALoginResult*)result; /*! @abstract 切换账户回调接口 @param result 切换账户的账户信息 */ -(void)switchAcctDidCompleteWithResult:(WALoginResult*)result; |
3.4.1.2 调用方法
+(void)openAccountManager:(id<WAAcctManagerDelegate>)delegate;
代码示例:
1 2 |
[WAUserProxy openAccountManager:self]; |
3.4.1.3 关于绑定解绑的通知
账户管理界面没有返回绑定和解绑结果,但是会以通知的方式将结果回调给CP。当绑定有结果之后(无论成功失败),将回传一个WABindingResult实例。当解绑有结果(无论成功失败),将回传一个WAAccount实例。有四个通知,分别是绑定成功、绑定失败、解绑成功、解绑失败,通知的名称分别是以下常量:
WABindDidSucceedNotification;
//绑定成功
WABindDidFailNotification;
//绑定失败
WAUnbindDidSucceedNotification;
//解绑成功
WAUnbindDidFailNotification;
//解绑失败
注:关于绑定facebook成功之后,请注意触发邀请奖励。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//接收通知的方法 -(void)bindDidSucceed:(NSNotification*)noti{ if (noti.object) { WABindingResult* result = noti.object; if ([result.platform isEqualToString:WA_PLATFORM_FACEBOOK]) { [WASocialProxy inviteInstallRewardPlatform:WA_PLATFORM_FACEBOOK TokenString:result.accessToken handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //触发被邀请人安装应用事件接口成功 }else{ //触发被邀请人安装应用事件接口失败 } }]; } } } |
3.4.2 绑定第三方平台账户
3.4.2.1 实现协议WAAccountBindingDelegate
说明:关于APPLE账号的绑定,请参考2.4.2.2 实现协议WALoginDelegate中定义的方法的说明。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
(1)绑定成功 /*! @abstract 绑定成功 @param result 绑定的账户信息 */ -(void)bindingDidCompleteWithResult:(WABindingResult*)result; (2)绑定失败 /*! @abstract 绑定失败 @param result 绑定的账户信息 @param error 错误 */ -(void)bindingDidFailWithError:(NSError*)error andResult:(WABindingResult*)result; (3)绑定取消 /*! @abstract 绑定取消 @param result 绑定的账户信息(注:返回的result只有platform有值) */ -(void)bindingDidCancel:(WABindingResult*)result; |
3.4.2.2 调用方法
+(void)bindingAccountWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo delegate:(id<WAAccountBindingDelegate>)delegate;
绑定平台取值:
名称 | 取值 | 备注 |
---|---|---|
WA_PLATFORM_FACEBOOK | FACEBOOK平台 | |
WA_PLATFORM_APPLE | APPLE | APPLE平台 |
WA_PLATFORM_VK | VK | VK平台 |
示例代码:
1 2 |
[WAUserProxy bindingAccountWithPlatform:WA_PLATFORM_FACEBOOK extInfo:nil delegate:self]; |
3.4.3 查询已经绑定的第三方平台账户
通过以下接口,可以查询当前的账户已经绑定的第三方平台账户:
+(void)queryBoundAccountWithCompleteBlock:(void(^)(NSError* error,NSArray<WAAccount *>* accounts))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WAUserProxy queryBoundAccountWithCompleteBlock:^(NSError *error, NSArray<WAAccount *> *accounts) { if (error) { //失败处理 }else{ //成功 } }]; |
3.4.4 解绑第三方平台账户
通过以下接口,可以解绑已经绑定的第三方平台账户:
+(void)unBindAccountWithPlatform:(NSString *const)platform platformUserId:(NSString*)pUserId completeBlock:(void(^)(NSError* error))completeBlock;
有以下情况之一者,不可解绑:
1.解绑的账户为WINGSDK平台的;
2.用户没有绑定第三方平台账户的;
3.用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的。
示例代码:
1 2 3 4 5 6 7 8 |
[WAUserProxy unBindAccountWithPlatform:_accountSelected.platform platformUserId:_accountSelected.pUserId completeBlock:^(NSError *error) { if (error) { //失败处理 }else{ //成功处理 } }]; |
3.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;
新建账户后,新的账户会跟当前设备绑定,如果之前的账户没有绑定第三方平台账户,数据将会丢失。
代码示例:
1 2 3 4 5 6 7 8 |
[WAUserProxy createNewAccountWithCompleteBlock:^(NSError *error, WALoginResult *result) { if (!error) { //新建账号成功 }else{ //新建账号失败 } }]; |
3.4.7获取账户信息
SDK提供了获取指定平台的账户信息,可以通过以下接口获取:
+(WAAppUser*)getAccountInfoWithPlatform:(NSString *const)platform;
示例代码:
1 2 |
WAAppUser* appUserId = [WAUserProxy getAccountInfoWithPlatform:WA_PLATFORM_VK]; |
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
1 2 3 4 5 6 7 8 9 |
(1)分享成功 - (void)sharer:(NSObject<WASharing>*)sharer platform:(NSString *const)platform didCompleteWithResults:(NSDictionary *)results; (2)分享失败 - (void)sharer:(NSObject<WASharing>*)sharer platform:(NSString *const)platform didFailWithError:(NSError *)error; (3)分享取消 - (void)sharerDidCancel:(NSObject<WASharing>*)sharer platform:( NSString *const)platform; |
3.6.1.2 调用方法
分享调用以下接口,支持分享链接、图片、视频、Facebook OpenGraph:
+(void)shareWithPlatform:( NSString *const)platform shareContent:(NSObject<WASharingContent>*)shareContent shareWithUI:(BOOL)shareWithUI delegate:(NSObject<WASharingDelegate>*)delegate;
示例代码:
1 2 3 4 5 6 7 8 9 |
WASharePhoto *photo = [[WASharePhoto alloc]init]; photo.image = image; //phote.imageURL = [NSURL URLWithString:@"..."];//image 和 imageURL 可以二选一 photo.userGenerated = YES; photo.caption = @"caption..."; WASharePhotoContent *content = [[WASharePhotoContent alloc]init]; content.photos = @[photo]; [WASocialProxy shareWithPlatform:WA_PLATFORM_FACEBOOK shareContent:content shareWithUI:YES delegate:self]; |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
shareContent | NSObject |
Y | 分享内容 | |
shareWithUI | BOOL | Y | 是否通过UI分享 | 设置为YES时直接通过UI分享,有界面。设置为NO时通过API分享,没有界面。注意:目前不支持这种方式,相关权限已被facebook收回,此值只能为YES |
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 | 连接标题 | Facebook无效 |
contentDescription | NSString | N | 链接描述 | |
imageURL | NSURL | N | 配图 | Facebook无效 |
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 发送请求接口
发送请求接口向平台好友发送请求,请求包括普通请求、游戏邀请(详见3.6.3 游戏邀请)、赠送礼物、索要礼物(礼物详见3.6.4 礼物)等,发送请求调用以下接口:
1 2 |
+(void)sendRequestWithPlatform:(NSString *const)platform requestType:(NSString *const)requestType title:(NSString*)title message:(NSString*)message objectId:(NSString*)objectId receiptIds:(NSArray*)receiptIds delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate; |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
platform | NSString | Y | 平台类型 | 平台类型在WAConstants类中定义,目前支持VK以及FACEBOOK |
requestType | NSString | Y | 请求类型 | 请求类型默认的在WAConstants下有定义,请参考5.1.3 请求类型说明 |
title | NSString | Y | 标题 | 部分平台需要显示 |
message | NSString | Y | 说明文字 | 部分平台需要显示 |
objectId | NSString | N | 对象id | 部分请求类型必填,比如发送礼物,为礼物对象id |
receiptIds | NSArray | Y | 接收者id | 根据平台而定,有些平台支持一次发送请求给多个用户,有些平台一次只能发送给一个用户。VK平台一次只能发送一个用户 |
delegate | NSObject | N | 代理 |
示例代码:
1 2 |
[WASocialProxy sendRequestWithPlatform:WA_PLATFORM_FACEBOOK requestType:WA_REQUEST_TYPE_SEND title:@"A gift" message:@"send you a gift" objectId:@"objectId" receiptIds:@[@"receiptId1",@"receiptId2"] delegate:self]; |
3.6.3 游戏邀请
3.6.3.1 查询可邀请好友列表
游戏邀请只能邀请没有玩过当前游戏的好友,称为可邀请好友,查询可邀请的好友调用以下接口:
+(void)queryInvitableFriendsWithDuration:(float)duration completeBlock:(void(^)(NSArray* friends,NSError *error))block;
代码示例:
1 2 3 4 5 6 7 8 |
[WASocialProxy queryInvitableFriendsWithDuration:5 completeBlock:^(NSArray *friends, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
参数说明:
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
block | String | Y | 回调 | |
duration | long | Y | 过滤时间间隔 | 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友 |
3.6.3.2 游戏邀请(@since v3.5.2 使用发送请求接口代替)
3.6.3.2.1 实现协议 WAGameRequestDialogDelegate
1 2 3 4 5 6 7 8 9 |
(1)游戏请求成功 - (void)gameRequestDialog:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform didCompleteWithResults:(NSDictionary *)results; (2) 游戏请求失败 - (void)gameRequestDialog:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform didFailWithError:(NSError *)error; (3) 游戏请求取消 - (void)gameRequestDialogDidCancel:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform; |
3.6.3.2.2 调用方法
发送游戏邀请请求调用以下接口(注:VK平台一次只能发一次邀请给一个好友):
+(void)gameInviteWithPlatform:(NSString *const)platform Content:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
代码示例:
1 2 3 4 5 6 7 8 9 10 11 12 |
WAGameRequestContent *gameRequestContent = [[WAGameRequestContent alloc] init]; gameRequestContent.message = @"Take this bomb to blast your way to victory!!!"; gameRequestContent.title = @"Game for you."; //recipients是个数组,可以同时发送给多个好友 NSMutableArray* recipients = [NSMutableArray array]; for (WAAppUser* appUser in _friendSelected) { [recipients addObject:appUser.ID]; } gameRequestContent.recipients = recipients; [WASocialProxy gameInviteWithPlatform:WA_PLATFORM_FACEBOOK Content:gameRequestContent delegate:self]; |
注:如果是VK平台 actionType必须赋值(gameRequestContent.actionType = WAGameRequestActionRequest) VK平台有两个actionType: WAGameRequestActionInvite, WAGameRequestActionRequest。在游戏的测试阶段,请用WAGameRequestActionRequest进行测试。正式上线的时候修改为WAGameRequestActionInvite,参照下图。
3.6.3.3 邀请成功记录
成功邀请好友后,在协议方法-gameRequestDialog:platform:didCompleteWithResults:
中调用以下接口向服务器记录邀请信息:
+(void)createInviteInfoWithPlatform:(NSString *const)platform results:(NSDictionary*)results handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//请求成功 - (void)gameRequestDialog:(WAGameRequestDialog *)gameRequestDialog platform:(NSString *const)platform didCompleteWithResults:(NSDictionary *)results{ //邀请好友成功 发送邀请信息到SDK后台 [WASocialProxy createInviteInfoWithPlatform:WA_PLATFORM_FACEBOOK results:results handler:^(NSUInteger code, NSString *msg, NSError *error) { //当code为200时,表示发送成功 进行相应的操作。 if (code == 200) { //发送成功 }else{ //发送失败 } }]; } |
3.6.3.4 邀请安装奖励
通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,必须在玩家进行登录成功或者绑定成功之后时候调用。
+(void)inviteInstallRewardPlatform:(NSString *const)platform TokenString:(NSString*)tokenString handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
1.在登录成功的协议(-loginDidCompleteWithResults:)方法中调用 -(void)loginDidCompleteWithResults:(WALoginResult *)result{ if (result.platform == WA_PLATFORM_FACEBOOK||result.platform == WA_PLATFORM_VK) { [WASocialProxy inviteInstallRewardPlatform:result.platform TokenString:result.pToken handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //触发被邀请人安装应用事件接口成功 }else{ //触发被邀请人安装应用事件接口失败 } }]; } } 2.在绑定成功的协议(-bindingDidCompleteWithResult:)方法中调用 -(void)bindingDidCompleteWithResult:(WABindingResult*)result{ if ([result.platform isEqualToString:WA_PLATFORM_FACEBOOK]||[result.platform isEqualToString:WA_PLATFORM_VK]) { [WASocialProxy inviteInstallRewardPlatform:result.platform TokenString:result.accessToken handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //触发被邀请人安装应用事件接口成功 }else{ //触发被邀请人安装应用事件接口失败 } }]; } } |
3.6.3.5 邀请事件奖励
通过邀请安装使用的用户,在触发定义的特定事件,需要通知服务器奖励邀请人,比如等级达成、充值等,调用以下接口:
+(void)inviteEventRewardWithPlatform:(NSString *const)platform eventName:(NSString*)eventName handler:(void (^)(NSUInteger code,NSString* msg, NSError* error)) handler;
代码示例:
1 2 3 4 5 6 7 8 |
[WASocialProxy inviteEventRewardWithPlatform:WA_PLATFORM_FACEBOOK eventName:@"eventName" handler:^(NSUInteger code, NSString *msg, NSError *error) { if (code == 200) { //发送邀请奖励事件成功 }else{ //发送邀请奖励事件失败 } }]; |
3.6.4 礼物
3.6.4.1 查询好友
查询指定平台正在玩游戏的好友列表,调用以下接口:
+(void)queryFriendsWithCompleteBlock:(void(^)(NSArray<WAAppUser *>* friends,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy queryFriendsWithCompleteBlock:^(NSArray *friends, NSError *error) { if (!error) { //查询好友列表成功 }else{ //查询好友列表失败 } }]; |
3.6.4.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后台新建礼物
1 2 3 4 5 6 7 8 9 |
NSString* objectType = @"com_ghw_sdk:Gift"; [WASocialProxy queryFBGraphObjectsWithObjectType:objectType completeBlock:^(NSArray<WAFBObject *> *objects, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
3.6.4.3 Facebook赠送礼物(@since v3.5.2 使用发送请求接口 代替)
使用facebook礼物功能,请先在facebook后台配置相关信息,详情请参考第三方后台配置—iOS版2.4 Facebook后台新建礼物
Facebook用户向游戏内的好友赠送礼物。
3.6.4.3.1 实现协议 WAGameRequestDialogDelegate
同3.6.3.2.1 实现协议 WAGameRequestDialogDelegate
3.6.4.3.2 调用方法
+(void)fbSendGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:
1 2 3 4 5 6 7 8 9 10 11 |
WAGameRequestContent *gameRequestContent = [[WAGameRequestContent alloc] init]; gameRequestContent.message = @"send a gift to you!"; gameRequestContent.title = [NSString stringWithFormat:@"This is %@",_gift.title]; //设置赠送的好友 gameRequestContent.recipients = recipients;//数组存放WAAppUser的ID //设置赠送的礼物id gameRequestContent.objectID = _gift.ID;//WAFBObject的ID //actionType设置为WAGameRequestActionTypeSend 赠送 gameRequestContent.actionType =WAGameRequestActionTypeSend; [WASocialProxy fbSendGiftWithContent:gameRequestContent delegate:self]; |
3.6.4.4 Facebook索要礼物(@since v3.5.2 使用发送请求接口 代替)
Facebook用户向游戏内的好友发出索要礼物的请求。
3.6.4.4.1 实现协议 WAGameRequestDialogDelegate
同3.6.3.2.1 实现协议 WAGameRequestDialogDelegate
3.6.4.4.2 调用方法
+(void)fbAskForGiftWithContent:(WAGameRequestContent*)content delegate:(NSObject<WAGameRequestDialogDelegate>*)delegate;
示例代码:
1 2 3 4 5 6 7 8 9 10 11 |
WAGameRequestContent *gameRequestContent = [[WAGameRequestContent alloc] init]; gameRequestContent.message = @"send a gift to you!"; gameRequestContent.title = [NSString stringWithFormat:@"This is %@",_gift.title]; //设置索要礼物的好友 gameRequestContent.recipients = recipients;//数组存放WAAppUser的ID //设置索要的礼物id gameRequestContent.objectID = _gift.ID;//WAFBObject的ID //actionType设置为WAGameRequestActionTypeAskFor 索要 gameRequestContent.actionType = WAGameRequestActionTypeAskFor; [WASocialProxy fbAskForGiftWithContent:gameRequestContent delegate:self]; |
3.6.4.5 Facebook查询收到的礼物
Facebook用户查询好友赠送给自己的礼物,调用以下接口:
+(void)fbQueryReceivedGiftsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* gifts,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy fbQueryReceivedGiftsWithCompleteBlock:^(NSArray<WAFBAppRequest *> *gifts, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
3.6.4.6 Facebook查询向自己索要礼物的请求
Facebook用户查询好友向自己索要礼物的请求,调用以下接口:
+(void)fbQueryAskForGiftRequestsWithCompleteBlock:(void(^)(NSArray<WAFBAppRequest *>* requests,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy fbQueryAskForGiftRequestsWithCompleteBlock:^(NSArray<WAFBAppRequest *> *requests, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
3.6.4.7 删除请求
Facebook中用户收到的礼物,好友向自己索要礼物的请求都是一个Facebook的请求,收取礼物和拒绝赠送礼物的时候,需要删除掉对应的请求。删除请求调用以下接口:
+(void)fbDeleteRequestWithRequestId:(NSString*)requestId completeBlock:(void(^)(id result,NSError *error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy fbDeleteRequestWithRequestId:_request.ID completeBlock:^(id result, NSError *error) { if (!error) { //删除成功 }else{ //删除失败 } }]; |
3.6.5 社区
3.6.5.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;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getGroupWithPlatform:WA_PLATFORM_VK groupIds:@[@"groupid1",@"groupid2"] extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
WAGroup实体说明
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
gid | NSString | group id | |
name | NSString | group名称 | |
screen_name | NSString | group screen_name | |
is_closed | int | 是否封闭 | 0 – 开放 1 – 封闭 2 – 私有 |
is_member | BOOL | 当前用户是否该group成员 | 0 – 不是group的成员 1 – 是group的成员 |
type | NSString | 类型 | group — group, page — public page, event — event |
photo | NSString | group图片 | |
photo_medium | NSString | group图片,中尺寸 | |
photo_big | NSString | group图片,大尺寸 | |
desc | NSString | group描述 | |
members_count | int | 成员数 | |
status | NSString | 状态 | |
schemeUrl | NSString | 跳转到应用对应的页面 | |
pageUrl | NSString | 跳转到浏览器对应的页面 |
3.6.5.2 查询当前应用关联的Group
一个应用只能关联一个Group,通过以下接口可以查询当前应用关联的Group详细信息:
+(void)getCurrentAppLinkedGroupWithPlatfrom:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getCurrentAppLinkedGroupWithPlatfrom:WA_PLATFORM_VK extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
3.6.5.3 查询当前用户已加入的Group
查询当前用户加入的Group详细信息调用以下接口:
+(void)getCurrentUserGroupWithPlatfrom:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getCurrentUserGroupWithPlatfrom:WA_PLATFORM_VK extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
3.6.5.4 查询当前应用推荐的所有Group
这是3.6.5.2 查询当前应用关联的Group和 3.6.5.3 查询当前用户已加入的Group查询到的Group的汇总,调用以下接口:
+(void)getGroupsWithPlatform:(NSString *const)platform extInfo:(NSString*)extInfo completeBlock:(void(^)(NSArray* groups,NSError* error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy getGroupsWithPlatform:WA_PLATFORM_VK extInfo:nil completeBlock:^(NSArray *groups, NSError *error) { if (!error) { //查询成功 }else{ //查询失败 } }]; |
3.6.5.5 加入Group
加入指定的某个Group,调用以下接口:
+(void)joinGroupWithPlatform:(NSString *const)platform groupId:(NSString*)groupId extInfo:(NSString *const)extInfo completeBlock:(void(^)(NSError* error))block;
示例代码:
1 2 3 4 5 6 7 8 |
[WASocialProxy joinGroupWithPlatform:WA_PLATFORM_VK groupId:@"GroupId" extInfo:nil completeBlock:^(NSError *error) { if (!error) { //join Group 成功 }else{ //join Group 失败 } }]; |
3.6.5.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 | 额外数据信息 | 扩展字段,根据各个平台需要定义 |
示例代码:
1 2 |
[WASocialProxy openGroupPageWithPlatform:WA_PLATFORM_VK groupUri:_group.screen_name extInfo:nil]; |
3.7消息推送
WINGSDK推送功能是基于苹果APNS,可以给客户端发送推送通知,通过简单几步配置即可使用。
3.7.1苹果相关配置
导出App推送证书为p12,并上传到WINGSDK后台。
注意:
1、苹果消息推送证书配置请参考Apple官方文档
http://help.apple.com/xcode/mac/current/#/dev11b059073
3.7.2推送集成配置
添加推送模块依赖方法参考2.2 集成SDK到项目
注:Appsflyer卸载检测某些配置与消息推送一样,但如果是用于Appsflyer,此步骤可忽略
3.7.3 Xcode配置
1)开启推送功能
在 Xcode 8.x 以上,必须开启Push Notification能力。找到应用Target设置中的Capabilities -> Push Notifications,确认开关已经设为ON状态。如果没有开启该开关,在 Xcode 8.x 上编译后的应用将获取不到DeviceToken。
2)APNs静默推送权限设置
为了更好支持消息推送,提高消息到达率,需要配置APNs静默推送权限
3.7.4 编写集成代码
1、导入文件头,在AppDelegate中导入:
#import <UserNotifications/UserNotifications.h>
2、初始化消息推送,在AppDelegate的application:initPushWithDelegate:调用下面代码:
1 2 |
[WAPushProxy application:application initPushWithDelegate:self]; |
注:Appsflyer卸载检测某些配置与消息推送一样,但如果是用于Appsflyer,此步骤可忽略
3、监控用户对推送消息的设置
在AppDelegate的application:didRegisterUserNotificationSettings:调用下面代码:
1 2 |
[WACoreProxy application:application didRegisterUserNotificationSettings:notificationSettings]; |
4、注册DeviceToken
在AppDelegate的application:didRegisterForRemoteNotificationsWithDeviceToken:调用下面代码:
1 2 |
[WACoreProxy application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; |
5、监控APNs推送错误
在AppDelegate的application:didFailToRegisterForRemoteNotificationsWithError:调用下面代码:
1 2 |
[WACoreProxy application:application didFailToRegisterForRemoteNotificationsWithError:error]; |
6、为更好统计用户在不同场景下和不同iOS系统中收到的消息,需在AppDelegate的application:didReceiveLocalNotification:调用下面代码:
1 2 |
[WACoreProxy application:application didReceiveLocalNotification:notification]; |
7、在iOS 10 以前,为统计 APNs 消息接收事件,需在AppDelegate里的application:didReceiveRemoteNotification:fetchCompletionHandler:回调方法中调用以下接口
1 2 |
[WACoreProxy application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; |
对于iOS 10 及以后版本,为统计 APNs 消息接收事件,需要AppDelegate实现协议 UNUserNotificationCenterDelegate,然后在AppDelegate的 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:回调方法中调用以下接口:
1 2 |
[WACoreProxy userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler]; |
8、iOS10中,App可以在前台获取通知,为统计这种消息的接收情况,需在AppDelegate的userNotificationCenter:willPresentNotification:withCompletionHandler:调用下面代码:
1 2 |
[WACoreProxy userNotificationCenter:center willPresentNotification:notification withCompletionHandler:completionHandler]; |
3.8 越狱检测
WINGSDK具备调试模式并提供了检测设备是否越狱接口
1 2 |
[WACoreProxy isJailBreak]; |
3.9 广告
3.9.1 检测可播放广告数量
+ (NSInteger) checkRewardedVideo;
大于0为可用
示例代码:
1 2 |
[WAAdProxy checkRewardedVideo]; |
3.9.2 显示广告
+ (void) displayRewardedVideoWithExtInfo:(NSString *)extInfo delegate:(id<WAAdRewardedVideoDelegate>)delegate;
示例代码:
1 2 |
[WAAdProxy displayRewardedVideoWithExtInfo:nil delegate:self]; |
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
extInfo | NSString | N | 额外数据(CP调用展示广告接口传递的自定义数据) | |
delegate | WAAdRewardedVideoDelegate | Y | WAAdRewardedVideoDelegate代理 |
3.9.3 广告视频代理
在调用3.9.2显示广告代码,需要实现WAAdRewardedVideoDelegate代理
3.9.3.1 显示视频前页面成功时回调
- (void) adPreDisplayRewardedVideoWithCampaignId:(NSString *)campaignId adSetId:(NSString *)adSetId rewarded:(NSString *)rewarded rewardedCount:(NSInteger)rewardedCount extInfo:(NSString *)extInfo;
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
campaignId | NSString | 活动Id | |
adSetId | NSString | 广告Id | |
rewarded | NSString | 奖励物品 | |
rewardedCount | NSInteger | 奖励物品数量 | |
extInfo | NSString | 额外数据(CP调用展示广告接口传入的自定义数据) |
3.9.3.2 点击叉按钮后回调
- (void) adDidCancelRewardedVideoWithCampaignId:(NSString *)campaignId adSetId:(NSString *)adSetId process:(WAAdCancelType)process extInfo:(NSString *)extInfo;
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
campaignId | NSString | 活动Id | |
adSetId | NSString | 广告Id | |
process | WAAdCancelType | WAAdCancelTypePlayBefore 播放前取消 WAAdCancelTypePlaying 播放过程中取消 WAAdCancelTypeAfter 播放后取消 |
|
extInfo | NSString | 额外数据(CP调用展示广告接口传入的自定义数据) |
3.9.3.3 加载视频失败回调
- (void) adDidFailToLoadRewardedVideoWithCampaignId:(NSString *)campaignId adSetId:(NSString *)adSetId extInfo:(NSString *)extInfo;
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
campaignId | NSString | 活动Id | |
adSetId | NSString | 广告Id | |
extInfo | NSString | 额外数据(CP调用展示广告接口传入的自定义数据) |
3.9.3.4 播放视频结束回调
- (void) adDidDisplayRewardedVideoWithCampaignId:(NSString *)campaignId adSetId:(NSString *)adSetId rewarded:(NSString *)rewarded rewardedCount:(NSInteger)rewardedCount extInfo:(NSString *)extInfo;
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
campaignId | NSString | 活动Id | |
adSetId | NSString | 广告Id | |
rewarded | NSString | 奖励物品 | |
rewardedCount | NSInteger | 奖励物品数量 | |
extInfo | NSString | 额外数据(CP调用展示广告接口传入的自定义数据) |
3.9.3.5 播放完视频点击回调
- (void) adDidClickRewardedVideoWithCampaignId:(NSString *)campaignId adSetId:(NSString *)adSetId rewarded:(NSString *)rewarded rewardedCount:(NSInteger)rewardedCount extInfo:(NSString *)extInfo;
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
campaignId | NSString | 活动Id | |
adSetId | NSString | 广告Id | |
rewarded | NSString | 奖励物品 | |
rewardedCount | NSInteger | 奖励物品数量 | |
extInfo | NSString | 额外数据(CP调用展示广告接口传入的自定义数据) |
3.9.4 设置视频广告缓存完代理
+ (void)setWAAdRewardedVideoCachedDelegate:(id<WAAdRewardedVideoCachedDelegate>)delegate;
示例代码:
1 2 |
[WAAdProxy setWAAdRewardedVideoCachedDelegate:self]; |
参数名 | 类型 | 必填 | 说明 | 备注 |
---|---|---|---|---|
delegate | WAAdRewardedVideoCachedDelegate | Y | WAAdRewardedVideoCachedDelegate代理 |
3.9.5 视频广告缓存完代理
在调用3.9.4设置视频广告缓存回调代码,需要实现WAAdRewardedVideoCachedDelegate代理
视频广告缓存完成回调
- (void)adDidRewardedVideoCachedWithCacheCount:(NSInteger)cacheCount;
参数名 | 类型 | 说明 | 备注 |
---|---|---|---|
cacheCount | NSInteger | 可用广告数量,大于0为可用 |
四、第三方配置
4.1 Facebook相关配置
4.1.1 Facebook基本配置
游戏如需使用Facebook相关登录、社交、数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节
具体配置请参考第三方后台配置—iOS版 二、Facebook第三方登录后台配置。
1、在facebook开发者平台创建一个Facebook应用,创建完之后会生成App ID和App Secret
这里的App ID要配置在项目当中,作为客户端与后台服务器连接的标识
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增加下面配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> <key>NSExceptionDomains</key> <dict> <key>facebook.com</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>fbcdn.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> <key>akamaihd.net</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSThirdPartyExceptionRequiresForwardSecrecy</key> <false/> </dict> </dict> </dict> |
(2)Whitelist Facebook Apps
1 2 3 4 5 6 7 8 |
<key>LSApplicationQueriesSchemes</key> <array> <string>fbapi</string> <string>fb-messenger-api</string> <string>fbauth2</string> <string>fbshareextension</string> </array> |
4.1.2 Facebook登录权限对照表
权限 | 类型 | 权限取值 | 说明 |
---|---|---|---|
读取用户配置 | string | public_profile | |
读取好友列表 | string | user_friends |
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账号进行登录、APPLE商店进行支付,需要进行以下配置。 如果不需要使用APPLE相关功能,请忽略此章节
具体配置请参考第三方后台配置—iOS版 一、Apple后台应用配置。
4.3 Appsflyers 相关配置
游戏如需使用Appsflyer相关数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节
4.3.1 数据收集配置
详见2.6.1 配置 (wa_sdk_track_config.plist)
4.3.2卸载检测
a)官方说明:https://support.appsflyer.com/hc/en-us/articles/211211963-iOS-Uninstall-Tracking
b)对接WINGSDK代码同3.7消息推送
4.4 Chartboost 相关配置
游戏如需使用Chartboost相关数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节
1.数据收集配置:详见2.6.1 配置 (wa_sdk_track_config.plist)
4.5 VK相关配置
游戏如需使用VK相关登录、社交功能,需要进行以下配置。如果不需要相关功能,请忽略此章节
在xcode配置URL Schemes:
在VKapp管理后台https://vk.com/apps?act=manage找到对应App的配置信息。将下图中Application ID(标注1)填到Xcode中的URL Schemes(标注2)。注意加上前缀vk。
4.6 Twitter相关配置
游戏如需使用Twitter账号登录游戏,需要进行以下配置。如果不需要相关功能,请忽略此章节
Twitter需要iOS 9.0以上编译,如果使用9.0以下版本编译,会导致应用闪退。具体配置请参考第三方后台配置—iOS 四、Twitter后台应用配置
1、在twitter开发者平台创建一个twitter应用,创建完之后会生成Consumer Key和Consumer Secret
这里的Consumer Key和Consumer Secret要配置在项目info.plist中,作为客户端与后台服务器连接的标识。
可复制下面代码到info.plist中在修改为对应Consumer Key和Consumer Secret。
1 2 3 4 5 6 7 8 |
<key>Twitter</key> <dict> <key>consumerKey</key> <string>Consumer Key</string> <key>consumerSecret</key> <string>Consumer Secret</string> </dict> |
2、配置URL Scheme
URL Scheme格式:twitterkit-
例如: twitterkit-SPRwO9pH5p9bJCAbUHaiV8oQY
4.7 Instagram相关配置
游戏如需使用Instagram账号登录游戏,需要进行以下配置。如果不需要相关功能,请忽略此章节
具体配置请参考第三方后台配置—iOS 五、Instagram后台应用配置
在instagram开发者平台创建一个instagram应用,创建完之后会生成Client ID、Client Secret和Website URL
这里的Client ID、Client Secret和Website URL要配置在项目info.plist中clientId、clientSecret和redirectUri,作为客户端与后台服务器连接的标识。
可复制下面代码到info.plist中在修改为对应clientId、clientSecret和redirectUri
1 2 3 4 5 6 7 8 9 10 |
<key>Instagram</key> <dict> <key>clientId</key> <string>your Client Id</string> <key>clientSecret</key> <string>your Client Secret</string> <key>redirectUri</key> <string>your Redirect Uri</string> </dict> |
五、附录
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 | 登录渠道已关闭 |
WACodeBindAccountClosed | 4048 | 账号绑定关闭 |
WACodeUnBindAccountClosed | 4049 | 账号解绑关闭 |
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平台 | |
WA_PLATFORM_VK | VK | VK平台 |
5.1.3 请求类型说明
取值值 | 说明 | 备注 |
---|---|---|
INVITE | 邀请 | |
REQUEST | 普通请求 | |
SEND | 发送礼物 | objectId不能为空 |
ASKFOR | 索要礼物 | objectId不能为空 |
注:vk平台测试游戏邀请功能需要申请权限,可以把请求类型设置成WA_REQUEST_TYPE_REQUEST来测试普通邀请,带申请权限通过后改成WA_REQUEST_TYPE_INVITE来测试。关于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 |