Uncategorized

第三方后台配置-Facebook小游戏

wapublisher No Comments

1.简介

本文档主要是说明如何在Facebook配置Facebook小游戏所用到的排行榜、支付、广告等功能。

2.Facebook后台小游戏相关配置

2.1 登录

Facebook小游戏登录需要获取到Facebook App的应用密钥(secret key)并配置到WINGSDK后台,获取方式如下,如何配置到WINGSDK后台请参照WINGSDK后台配置相关文档
13

获取app id: 即上图所示的应用编号。
获取secret key: 如上图所示,进入Facebook开发者中心,选择应用,选择“设置”-》“基本”可以看到“应用密钥”以加密方式显示,点击“显示”按钮,并输入开发者账号的密码即可获取。

2.2.支付

支付需要先在Facebook后台配置商品信息:

2.2.1.添加小游戏

进入Facebook开发者中心,选择应用,小游戏产品中点击“应用内购买”进入商品配置页面(在如果没有小游戏的话,需要在产品中添加),如下图所示:
图片7

2.2.2.添加收款账号与商品

如下图所示,在“Set up payout”中配置收款账号,然后点击新建产品添加商品。
图片8

按要求填写商品信息,如下图。
图片9
注意:配置完成之后还需要在wingsdk后台对应配置同样的商品信息。这些都完成之后就可以进行支付测试了。

2.3.广告

在小游戏中接入广告主要是利用Facebook的Audience Network为小游戏创造收入来源。通过在Facebook后台配置小游戏的Audience Network,小游戏就可以通过广告接口获取到Facebook Audience Network中的广告并合理展示给玩家,进而获取广告收益。
关于如何配置小游戏广告展示,请查看如下官方说明:
https://www.facebook.com/help/355647874927053?locale=zh_CN
目前小游戏支持展示三种广告:插屏广告、奖励式视频广告和banner广告,需要对应配置三种类型的版位。创建完成后需要获取广告版位编号即placementID提供给运营配置。
图片10

2.4.排行榜

进入Facebook开发者中心,点击小游戏的排行榜即可进行排行榜设置。
图片11
如下图所示,配置排行榜名称、格式以及排序。目前排行榜创建后生成的排行榜就是一个和具体玩家环境(context)相关的排行榜,如message分享,facebook用户分享打开游戏环境,而不是一个固定名字的排行榜。配置好后需要把排行榜配置详情包括名称、排序、分数格式、小数点进位等提供给CP。
图片12

2.5.消息助手

2.5.1、创建公共主页

如已创建公共主页,可跳过此步骤进行关联(谁创建的公共主页,需要用对应的账号登录进行关联)
创建前,建议facebok账号语言选择英文,选择类别为Video Game时,需要系统语言为英文时才能搜索到
图片12

facebook应用后台-小游戏-应用公共主页-新建公共主页

图片12

填写公共主页名字(公共主页名称应该包含应用名称)建议和facebook应用名保持一直,Category 选择Video Game,然后填写其他信息保存。

图片12

2.5.2、关联公共主页

已关联,则忽略此章节。
创建完后,选择下拉框,选择公共主页,然后保存。

图片12

2.5.3、配置Message

在Messager-设置-Webhook-添加回掉网址

图片12

填写如下:
回调地址:https://api.wingsdk.com/sdkapi/v1/fbmessage/{appId}/webhook.do
{appId}替换成具体wingsdk后台的appId
验证口令:wingsdk

图片12

填写完后,验证并保存。

在Messager-设置-访问口令,点击添加或移除主页

图片12

选择公共主页,然后下一步进行操作完成。

图片12

然后点击生成口令。
注:token需要记录下来,在后续的配置中会使用到(wingsdk后台-Facebook智能助手-游戏配置-Message Access Token)

图片12

点击添加订阅按钮,选择messages、messaging_game_plays字段,保存

图片12

图片12

2.5.4、权限申请和审核

消息助手需要申请pages_messaging权限,facebook需进行审核,审核过后上线正常使用

在facebook管理后台-应用审核-权限和功能,找到pages_messaging,点击申请

图片12

提交审核前,需检查你的应用设置、完成应用验证

图片12

点击完成应用设置下的检查你的应用设置,如不通过,facebook将会列出。通过可以进行下一步操作,点击完成应用验证下的提供验证详情。

图片12

填写完成后,保存。进行下一步操作

图片12

图片12

填写使用目的、以及测试步骤,上传录制视频,勾选协议,然后保存,提交审核。

2.6.广告Custom Payload

1、在wingsdk管理后台,创建广告渠道.(配置目录:推广-渠道管理-添加),
注意事项:
第一:每个应用都需要创建广告渠道
第二:推广平台选择fbinstant

图片12
创建完后,记录刚创建的渠道ID,如78
图片12

2、登录facebook应用后台,小游戏-发现配置-带负载广告-添加广告负载
填写广告编号,负载格式为json:{“cno”:”78″,”scno”:”子渠道1″}。其中
cno:渠道ID,如步骤1中的渠道ID为78
scno:子渠道参数,可自定义填写

图片12

WingSDK对接常见问题解答

wapublisher No Comments

登录

公共问题

Q:为什么登录方式为空

A:
1. 是否已在SDK 后台添加对应的登录方式? 登录平台管理
2. SDK 后台对应的登录方式是否已打开? 直接使用SDK已对接的登录方式
3. SDK 后台对应的登录方式是否为正式状态? 直接使用SDK已对接的登录方式
4. SDK 后台登录方式为测试状态时,是否已将当前设备添加到测试设备列表? 登录/支付平台测试模式的使用

Facebook

Q:Facebook登录失败?

A:
请检查:
1. Facebook后台是否已完成登录相关配置? 第三方后台配置—Facebook
2. Facebook后台配置的keyhash 是否与游戏中的keyhash相同? 添加签名秘钥散列
3. 当前用户是否已添加为Facebook测试用户? Facebook添加开发者

Q:facebook登录网页可以登录装了facebook app就报key hash不匹配,配置对key hash之后登录黑屏

A:
可能是key hash不匹配导致,检查facebook 后台的key hash配置。
参考WINGSDK第三方配置中如何配置Facebook密钥散列

Q:facebook登录(iOS)确认之后浏览器(网页)没有返回问题(错误码308)

重现步骤:
第一步:点击facebook登录按钮
第二步:点击确定
第三步:页面跳转后没有关闭,始终停留在此页面(正常的情况下是自动关闭浏览器返回游戏界面)

A:看是否调用facebook登录多次

Google

Q:google不上架google play应用市场,是否可以使用google登录

A:
经过测试是可以的

Q:Google登录失败?

A:
请检查:
1、 Google后台是否已完成登录相关配置? 第三方后台配置—Google
2、 Google后台是否已配置 web application 类型的应用? 配置应用的OAuth Client Id
3、 SDK 后台是否已配置对应的web类型的client id?
直接使用SDK已对接的登录方式

图片1

4、 游戏中是否已配置对应的Google登录信息? 4.1.1 Google基本配置

5、从Google Play下载的应用登录失败,请检查Google Play控制台应用的设置>应用完整性的应用签名密钥,其SHA-1是否已在CCP(Google Cloud Platform)中配置对应该应用的Android类型oauth client id,若未配置,则需要配置
配置应用的OAuth Client Id

6、非Google Play下载的应用登录失败,需要确保该应用包使用正式的应用签名文件来签名打包应用包。可以通过比较打包时所用的签名密钥文件的SHA-1,同GCP(Google Cloud Platform)配置该应用的Android类型oauth client id中配置是否一致来确认,一致即说明使用了正确的签名文件。

配置应用的OAuth Client Id

7、是否开启了vpn,需要开启vpn
8、若运营刚配好Android Client ID,需要一段时间登录才能生效,之前测试是隔天

Q:Google推广流量归因不到(全是自然流量)?

1、检查Firebase,项目设置>集成>Google Play 中是否使用主账号关联?
2、检查项目设置>集成>Google Play 中应用是否关联?
3、如上述有调整,需要在Firebase后台下载新的google-services.json给研发,重新出包

Q:调用WINGSDK android端的初始化后应用闪退

A:
看是否是在非主线程中调用了WINGSDK的初始化方法,应该放到主线程中调用,比如:
UnityPlayerActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
WAUserProxy.loginUI()
}
});
涉及到界面的接口都需要在主线程中调用。

Apple

Q:iOS9/iOS8 game center 登录问题 iOS8三次登录取消之后不再显示登录窗

A:
iOS8三次登录取消之后不再显示登录窗口,需要自行到game center中主动登录
iOS9无论多少次登录取消都可以显示登录窗口

Q:iOS apple登录时报错This game is not recognized by game center

A:
检查itunes connect里面是否有添加排行榜和成就;
检查game center的开关是否已经关闭

Q:iOS还没上线, 需要测试GameCenter登陆, 需要怎么配置

A:
首先需要在apple itunes connect配置测试账号,其次在WINGSDK后台登录方式要配置好apple类型登录方式,如果是正式状态,可以直接使用苹果账号测试;如果是测试状态,需要先添加测试设备。

支付

公共问题

Q:支付方式为空?

A:
请检查:
1. 是否已在SDK 后台添加对应的支付方式? 支付平台管理
2. SDK 后台是否已配置对应商品? 商品管理
3. SDK 后台支付方式为测试状态时,是否已将当前设备添加到测试设备列表? 登录/支付平台测试模式的使用

Q:游戏中已完成了支付,为什么没有收到对应的商品?

A:
请检查SDK 后台对应订单的状态:

1.如果订单是支付失败,请联系SDK相关人员排查具体的原因。
2.如果订单是支付成功,但是发货状态为 未通知或通知失败, 请联系SDK 相关人员联合排查具体的原因。
3.如果订单是支付成功,发货状态也是通知成功,请联系CP 排查游戏未发货的原因。

Google

Q:如何测试Google支付

A:测试Google支付,需要给Google账号添加银行卡,地址是:
https://pay.google.com/payments/u/2/home?pli=1#paymentMethods,如果添加不上,有可能是银行卡地址有问题,尝试使用美国地址,如下图:

图片1

Q:如何添加测试账号

A:目前添加测试账号如下:
1、给单个应用添加测试账号【建议】参考:《添加Google Play测试用户》章节

2、同时给所有应用添加测试账号,操作如下:

进入在google play后台https://play.google.com/apps/publish ,在设置->开发者账号->账号详情->许可测试中添加测试者账号,如下图:

图片2

Q:android游戏客户端Google支付后后台校验失败导致无法完成交易,无法进行第二次购买

A:
google服务账号需要开通“查看财务报告”权限,检查是否是此原因。具体方法可以参考WINGSDK第三方配置中如何配置google账号的财务权限。http://blog.wing-analytics.com/archives/2783.html

Q:google支付调用第二次发生闪退

A:
请检查支付的onActivityResult接口有没有调用

Q:Google play的应用内支付是如何显示本地货币的

A:
首先是从google账号里面获取,如果获取不到就可能是其他一些未知的币种,一般在美国之外是用us.
请参考:https://support.google.com/googleplay/answer/6220312?hl=en

Q:有时财务会收到一些Google订单的款项, 然后发现充值到帐了但是我们后台没发货记录, 这种可以追溯到是哪个玩家充的吗?

A:
如果在WINGSDK后台查不到该笔订单的订单号,就相当于掉单了。除非玩家主动联系客服提供用户昵称和用户id等信息才能追溯到是哪个玩家充的,进而判断是否需要进行充值补单操作。

Q:Google应用内支付遇到“无法购买您要买的商品”

A:
请检查:

1.保证在开发者控制台已经上传程序APK并且发布成功(发布应用后需要等待一段时间才能完成发布)
2.保证测试程序的Package Name和上传发布的包一致
3.保证测试程序的VersionCode和上传的发布的包一致(或在发布过的测试包中存在一致)
4.保证Google后台的商品SKU和应用配置的一致(SDK后台中商品信息配置)
5.保证GooglePlay商店已安装(一般来说只要弹出支付是没问题的, 如果商店无法使用,请检查)
6.保证支付账号是测试人员账号, 你在测试阶段可以正常支付你的游戏 (如果是Beta版,封闭式测试,把测试账号加入测试组,并且需要接受邀请成为测试员,需要点击链接接受邀请成为测试人员)
7.保证当前设备中只有一个Google账号。
8、如果是新创建的google应用,需要在内部封闭测试版本审核通过后,才能测试支付(表现为google登录正常,拉取商品时,提示get google product fail! ,在调用支付的时候,提示 sku not found on google server)

Q:Play游戏电脑版有什么要求以及如何测试

A:
1)SDK接入要求
SDK在3.17.0才有针对Play游戏PC做适配,所以必须升级接入3.17.0及以上版本。另外必须接入SDK的Play Game Service功能,参考:
http://blog.wing-analytics.com/archives/2391.html#355

2)游戏上线要求
Google要求游戏需要对PC做兼容性和优化方面的调整,这方面需要研发在游戏方面达到对应要求。

如果目标是达到上线要求即可,可以只满足兼容性要求:

https://developer.android.com/games/playgames/checklist?hl=zh-cn#publishing-requirements

如果目标是拿到Google的推荐位,建议满足优化型的要求:

https://developer.android.com/games/playgames/checklist?hl=zh-cn#optimized-requirements

SDK要求:
SDK在3.17.0才有针对Play游戏PC做适配,所以必须升级接入3.17.0及以上版本

3)启用外形规格怎么选
参考:

https://developer.android.com/games/playgames/development-submit?hl=zh-cn#add_the_google_play_games_on_pc_form_factor
如果打出的游戏包,同时支持移动端和PC端,那么选择 使用与您的移动应用相同的发布轨道和工件,在后续的测试及正式轨道中,Play游戏PC的分发会合并到手机等项中,效果如下图第一个。
如果打出的游戏包,是需要分别支持移动端和PC端,比如发布移动端需要单独出包A,发布PC端需要单独出包B,那么选择为 Google Play 游戏电脑版使用专用发布轨道,效果如下图第四个。
效果参考:

图片1

4)如何测试

具体参考:

https://developer.android.com/games/playgames/development-submit?hl=zh-cn 大概步骤:
1.在封闭测试中,指定 仅分发至Play游戏电脑版(根据外形规格定),创建Play游戏PC专用测试轨道
2.提交应用
3.添加测试人员
4.提交审核
5.审核通过后的,测试人员接受邀请,并在 Play游戏电脑版 客户端上安装游戏并测试

4)上线注意
在正式版需要根据外形规格选择对应分发平台,再创建新的发布版本。

Apple

Q:更换bundle id和证书后,商品不可用,证书是新证书,出现invalidIndentified,商品id无效

A:
请检查是否是开发者中心的合同过期没有重新签署。

另外也可以检查以下检查项:
1.创建的App ID是否启用了IAP功能。
2.商品信息是否配置到iTurn Connect,并到达“Ready to Submit”状态。
3.在iTurn Connect中创建Test User,并收取邮件激活。之后登录到测试用手机的设置页面中(Store选项)。
4.App的Bundle Id是否和苹果开发者中心配置的App Id一致。
5.是否创建相应的provisioning profile,并用此签名App。
6.iTurn Connect后台配置完商品信息后,是否等待若干小时生效。
7.SKProductsRequest请求的商品Id必须和iTurn Connect中配置的一致。(如:com.test.product.xxx)
8.iTunes Connect中配置的银行信息是否正确。
9.是否先删除旧App,再重新编译生成新的。
10.请不要使用越狱手机测试。

Q:iOS的ipa开发包,如何在新设备上安装?

A:

登录苹果开发者后台,https://developer.apple.com/account/resources/devices/list ,添加测试设备标识,然后更新对应打包证书,添加刚才新加入的设备,保存。然后下载新证书,发给研发重新打包。

Q:ios越狱机是否可以使用apple官方渠道内购

A:
目前WINGSDK只支持在非越狱机器使用apple官方渠道内购。在ios越狱机中,sdk调用api去获取sdkproduct有可能无法获取到商品详细信息,也就无法进行下一步购买。

Q:使用apple sandbox账号无法登录game center,无法进行苹果支付

A:
sandbox账号不是真实账号,登录不了game center。尝试在手机上把apple id删掉,然后在游戏里进入购买流程,弹出要输入apple id的对话框,使用sandbox账号进行购买。

Q:苹果沙盒充值需要哪些步骤

A:
大致包含以下步骤
1.配置App 支付功能和证书下载(苹果开发者中心)
2.需要在app connect配置测试账号(itunes connect)
3.需要在app connect配置商品(itunes connect)
4.同步app connect商品到wing SDK后台
5.集成WINGSDK接口

Q:在WINGSDK后台配置成正式环境,能否使用沙盒账号进行购买

A:
只要是沙盒测试的账号,就会自动切换到沙盒环境,和是不是配置为正式没关系。

Q:sdk(google/apple)是请求商品信息的流程是怎么样的

A:
iOS和android请求商品的流程相似:

1.首先需要在apple/google后台配置商品信息
2.在WINGSDK后台配置同样的商品信息(包括产品id,基准货币和游戏币数量)
3.调用接口获取商品列表(接口首先是获取ghw后台配置的商品列表id后,根据商品id 列表去apple/google获取商品具体信息),这个商品列表里包含了apple/google后台配置的具体信息

数据收集

Q:SDK 后台没有Appsflyer的安装、事件回调?

A:
请检查Appsflyer后台是否已配置push api callback。

Q:SDK 有Appsflyer的安装事件回调,但是无法配置渠道信息?

A:
1、请检查wingsdk后台应用商店信息中,Android包名(iOS的Bundle ID)是否设置正确。
2、请检查wingsdk后台应用商店信息中,ios的平台应用ID是否设置正确(id+Apple ID)。

SDK 后台没有Facebook 安装,而Appsflyer后台有?

A:
请检查是否已在Appsflyer后台同意FB相关协议(Terms of Service)。

Google推广流量归因不到(全是自然流量)?

1、检查Firebase,项目设置>集成>Google Play 中是否使用主账号关联?
2、检查项目设置>集成>Google Play 中应用是否关联?
3、如上述有调整,需要在Firebase后台下载新的google-services.json给研发,重新出包


AF返回的FB渠道数据从2021年11月开始返回media_source都是restricted

A:
从20211029日之后,针对android平台,在appsflyer后台,针对facebook的渠道,需要添加Install Referrer Decryption Key

1、进入facebook管理后台,找到对应的应用,找到设置–基本-Android下的Install Referrer Decryption Key,copy
许可测试中添加测试者账号2
2、进入appsflyer后台,左侧菜单找到配置-合作伙伴配置,选择facebook,下的Facebook对接配置,有一项Install Referrer Decryption Key,粘贴步骤一中copy的Install Referrer Decryption Key,然后保存
许可测试中添加测试者账号2
许可测试中添加测试者账号2

Firebae 后台看不到in_app_purchase事件

https://support.google.com/analytics/answer/9234069

in_app_purchase事件为firebase内部自动发送事件。
首先检测firebase后台是否将Goole Analytics(分析)关联到Goole Play

图片1

图片2

社交

Facebook

Q:Android端邀请好友不成功,闪退等

A:
可能是证书的key hash没有在facebook后台配置, 参考WINGSDK第三方配置中如何配置Facebook密钥散列http://blog.wing-analytics.com/archives/2783.html

Facebook小游戏

Q:如何获取设备clientId用于添加测试设备等。

A:
window.localStorage.getItem(‘ghw_wing_client_id’)

Q:小游戏分享能否知道是否分享成功

A:
目前Facebook小游戏的分享接口没有分享成功的回调,无法判断。只要能拉起分享对话框,就当做是成功了。

Q:小游戏如何测试支付

A:
目前需要在带google play的android机上才能,google账号需要绑了银行卡,然后把FB账号加入到Facebook开发者后台白名单里(如下图),才能做虚拟充值。
才能做虚拟充值

Q:小游戏提交提示:不能调用私有API

850E9ED82E5E847CF364201A8C31FC77

A:
这对上传应用报引用私有api问题 修改建议

1、在引用js时 第二行的注释代码不能删除、

第二行注释不能删除

2、parent.postMessage为私有api。把引用的parent.postMessage删除,或者通过拼接方式调用,搜索时,搜索不到即可 。示例如下:

AIHelp客服

Q:怎样让VIP玩家才能看到人工客服入口?

A:
如果是VIP玩家,需要CP调用WACscProxy.openAiHelp(String language,boolean isVip)接口时,设置isVip参数为ture,便表示允许该玩家使用人工客服

Q:Android、iOS横竖屏自适应?

A:
Android和iOS默认都支持自适应
iOS如果游戏是横屏,关闭了竖屏权限,则aihelp无法竖屏。
如果cp需要支持aihelp自适应,请参考如下处理:
可以在RootViewController.m文件中添加supportedInterfaceOrientations方法,并返回游戏的支持方向

-(UIInterfaceOrientationMask)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskLandscape;

}

Q:怎样更换机器人客服头像?

A:
参考博客展示头像配置 章节

Q:怎样实现客服沟通后弹出商店评分?

A:
参考地址 https://aihelp.net/FAQ/#/AIhelp-Support/app/zh_CN/EB5AE263D8AB85A4/6F0620193A22ADC0/1EDD468D9FBD439A
操作步骤:玩家提问问题后,客服选择回复并解决。玩家打5分后,会弹出是否喜欢这个app,去打分?点击进入打分环境

2O0XC860RK1FOt3r

Q:CP怎样自定义FAQ展示

A:
1)展示FAQ分类:
a、首先需要运营人员确认使用哪条FAQ分类,
b、然后找客服人员提供此条FAQ分类的PublishID(查找方法:可以在AIHelp 后台 中,从FAQs菜单下[Section]菜单,鼠标放在分类出,大概2s左右,会弹出PublishID)
c、然后开发人员调WACscProxy.showFAQSection方法传递PublishID,进行单FAQ分类展示,接口详情请参考WINGSDK使用指南

附 aihelp后台获取FAQ分类的PublishID截图:
iOS

2)展示单条FAQ
a、首先需要运营人员确认使用那条FAQ,
b、然后找客服人员提供此条FAQ的faqId(查找方法:faqId为FAQ的编号,打开AIHelp 后台中,在机器人→常见问题页面下找到指定FAQ的FAQ编号,注意:此faqId不能填写客服后台未存在的FAQ编号。)
c、开发拿到faqId后,调用WACscProxy. showSingleFAQ方法,传递faqId进行单条FAQ展示,接口详情请参考WINGSDK使用指南

附 aihelp后台获取单条FAQ的faqId截图:
iOS

Q:如何禁止玩家上传视频?

A:
Aihelp后台-增值服务-上传视频-功能开关,关闭开关,可以禁止玩家在人工客服、表单页面提交视频

iOS

Q:aihelp的国际化如何控制?

A:

首先客服设置FAQ支持多语言,然后开发人员调用 WACscProxy.openAiHelp(String language,boolean isVip)设置,如果不设置,aihelpsdk默认使用手机系统语言。以下为aihelp提供的语言列表

iOS

Q:启动运营界面 和启动机器人客服页面区别?

A:
关于运营模块,可以参考这里:https://aihelp.net/elva/FAQ/FAQList.aspx?SectionID=166&LanguageID=5&pf_app_id=5&kmContentId=172981
这两个的区别:启动机器人客服页面,会直接进入机器人聊天界面;
如果接了运营模块,玩家进入机器人页面后,页面上方会有Tab和您这边编辑的内容(如:新闻,公告等),这样玩家在反馈问题的同时也可以看到最新的公告和使用指南等~

Q:Aihelp官方文档有哪些?

A:
Aihelp官方问题列表:
https://aihelp.net/FAQ/#/AIhelp-Support/app/zh_CN/EB5AE263D8AB85A4

iOS aihelp 使用文档
https://github.com/AI-HELP/AIHelp-iOS-SDK/blob/master/README_CN.md

android aihelp 使用文档
https://github.com/AI-HELP/AIhelp-Android-SDK/blob/master/README_CN.md

Q:初始化SDK时异常,提示 AIBOT 初始化失败AliceBotParserException,及AIBOT 返回。。bot。。Exception.

异常堆栈信息参考:

iOS

iOS

A:该异常是AiHelp内部捕获的异常输出,不会影响功能的正常使用,不会引发崩溃等问题,可以忽略该异常日志

其它

Q:Facebook如何添加开发者

A:
添加开发者一般分好友和非好友。
1.好友的话在输入框里面输入好友的用户名就会出现下拉表给选择。
2.非好友可以先添加好友再添加开发者另外也可以通过非好友的facebook个人主页在一些第三方网站比如https://findmyfbid.com/找到facebook id添加开发者
个人主页获取:点击facebook个人头像,复制浏览器跳转的链接地址即可

Q:安装安卓应用时出错 facebook app id 冲突导致应用安装不了 INSTALL FAILED CONFICTING PROVIDER

A:检查是否安卓手机上已经有应用使用了同样的facebook app id,需卸载再安装

Q:Android端sdk报错java.security.cert.CertificateException

A:设备时间设置不对导致网络错误,请校准时间。

Q:如何进行充值补单

A:
玩家投诉后才知道uid是谁,否则不知道补给谁。
充值补单的详细说明: http://blog.wing-analytics.com/archives/1197.html#53

Q:区服单独回调地址解决方案

A:
1.在下单时(调用购买商品接口,如下图)CP单独传发货通知地址,我们会在后台自动替换,这需要CP修改并出包。
android购买商品
android购买商品

iOS购买商品
iOS

2.CP在后台根据serverid进行转发

Q:游戏如何打开log按钮

A:
有两种方式
1.代码调用接口setDebugMode,传入true/YES
2.通过WINGSDK后台添加测试设备来打开,参考http://blog.wing-analytics.com/archives/2354.html#41

Q:Firebase 初始化失败,无法获取token,出现IllegalArgumentException:Please set your project ID.错误

A:
firebase-messaging依赖从升级到firebase-messaging:20.2.4,其使用到的gms谷歌服务插件依赖库也应该同步升级为对应支持版本,若gms插件版本太低(如3.0.0),则会出现上述问题。解决方法如下:
建议gms谷歌服务插件升级为4.2.0版本,该版本已经验证可以支持升级后的firebase-messaging版本。代码:classpath ‘com.google.gms:google-services:4.2.0’

充值中心

Q:研发要怎么接入充值中心

充值中心流程图:

充值中心.drawio

A:
前端(iOS&Android):
安卓参考
iOS参考

后端:
1、提供区服信息接口 ,并在wingsdk管理后台应用配置,参考 配置查询区服角色地址

2、CP需要修改发货接口逻辑。玩家在充值中心支付时,不会走客户端下单流程,SDK会直接通过发货接口通知CP服务器(无透传数据extInfo)。发货接口判断payChannel为WINGA时表示是充值中心订单

运营:
需要提供一张.jpg格式图片,指引玩家查找CharacterID,然后把图片发给wingsdk人员上传,然后生成充值的推广链接(如弹射王推广链接:https://www.wspaymentcenter.com/recharge/dsw)。
弹射王指引玩家查找CharacterID图片 参考

dsw

Q:在充值中心上,输入CharacterID后,无法获取对应的服务器id和角色名

A:
1、确认cp角色接口是否提供,并已配置wingsdk管理后台
2、确认此用户获取短链接口前,已经设置设置了gameUserId和serverId

预注册奖励

预注册奖励流程图:

预注册.drawio

Q:研发要怎么接入预注册奖励

A:
接入Android 3.9.1及以上版本。
研发注意点:
1、预注册奖励会是单独的商品,跟其他商品ID是不同的,此商品对玩家不可见。
2、发货逻辑:玩家登录WingSDK后就会通过发货通知接口通知研发发货,这时玩家是没有创角的,研发需要在玩家创角后或者达到一定等级后根据商品ID发放奖励。
(PS:预注册奖励通知发货时是没有透传研发的orderid,也没有区服、角色,要根据预注册奖励商品ID发货)
3、发放奖励后需要有游戏内通知玩家(比如游戏内邮箱)
4、预注册流程和游戏内部登录流程是两个异步流程。可能会存在预注册发货通知时,游戏内的账号并未生成。研发可做兼容或在接口返回失败等待第二次发货通知。

如何测试:

1、sdk管理后台需要开启 异常订单自动补单。 设置-参数设置-异常订单自动补单(全部打开或者仅Android打开)
2、在sdk管理后台增加预注册商品,像正常的商品那边配置。
3、对预注册商品进行标注。设置-参数配置-服务端-预注册商品ID(参照下图)
4、配置促销代码,促销类型-应用内商品,选择预注册商品id Google 促销商品配置
5、使用促销码,从play商店-账号信息-付款和订阅-兑换代码,输入促销码,参考预注册奖励测试

WechatIMG664

如何获取 client_id

Q:如何获取 client_id

A:

客户端获取:

iOS&Android:

打开调试模式后(iOS 调用 [WACoreProxy setDebugMode:YES]; android调用 WACoreProxy.setDebugMode(true)),点击Logcat按钮,点击-设备信息-clientid,点击获取

F757A84C441ED6EC3E50CE12F7A8F87F

h5sdk&Facebook instant sdk:

打开开发者工具,选择Application,选择Storage,选择Local Storage,查看wing_client_id字眼的value,即是clientid

WechatIMG590

管理后台获取

参考测试设备管理

WINGSDK_iOS使用指南(v3.6.6)(调整版)

wapublisher No Comments

一、简介

WINGSDK iOS版集成的主要功能有:

序号 功能 说明 备注
1 登录 使用SDK登录功能登录游戏 包括匿名登录(即游客登录),及Apple gamecenter、Facebook等第三方登录
2 账户管理 使用SDK账户管理功能对游戏账号进行管理 包括账号绑定、解绑,新建账号、切换账号等功能
3 支付 使用SDK支付功能进行游戏内购 包括Apple商店支付,及PayPal等第三方支付
4 数据收集 使用SDK提供的数据收集接口收集每个玩家的游戏行为 数据可选择发送到SDK后台,及Appsflyer、Facebook等第三方登录
5 游戏社交 使用SDK集成的社交接口,在社交平台上与好友进行游戏互动 包括Facebook、VK等社交平台
6 游戏推广 SDK集成的游戏推广功能 包括应用墙、消息推送、视频广告等不同的推广方式

CP可根据游戏的需求选择集成相关的功能模块。

二、初始化集成

在接入具体功能前,游戏中需要进行SDK代码的初始化集成:

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详见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.26.0
APPSFLYER 4.7.11
CHARTBOOST 6.6.3
VK 1.4.2
TWITTER 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项目中。
cocoapods手动引用

下载完成后解压,把解压后的文件拖入xcode工程,其中WASdkIntf和WASdkImpl是必接库,其它可选。
注意:需要加入系统库libsqlite3.tbd(libsqlite3.dylib)、libz.tbd(libz.dylib)

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.2.3 工程构建配置

在项目Build Settings中搜索Other Linker Flags 修改值为-ObjC
如下图
iOS-工程构建配置

2.3 SDK初始化

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

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

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

4、在AppDelegate的applicationDidBecomeActive调用下面代码:

2.4 调试模式

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

2.5 越狱检测

WINGSDK具备调试模式并提供了检测设备是否越狱接口

三.登录模块

SDK提供了 UI界面 和 接口调用 两种登录方式,满足游戏不同需求:

类型 说明 备注
UI界面 SDK统一内置登录界面 游戏只需提供一个登录按钮,即可调出对应登录窗口供玩家选择不同的登录方式登录游戏
接口调用 游戏自行提供登录界面,使用SDK登录接口进行登录 游戏可设计更符合游戏风格的登录界面;需单独接入每个不同的登录方式接口

3.1 SDK内置登录界面

此时游戏的登录界面只需提供一个登录按钮,玩家点击该按钮,将弹出SDK内置的登录窗口,并列出已集成的登录方式列表供玩家选择:
login

3.1.1 调用登录窗口

通过调用以下接口显示SDK内置登录界面:
实现协议 WALoginViewDelegate

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

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

+(void)clearLoginCache;
代码示例:

3.1.3 隐藏登录选择框

+(void)hide;
代码示例:

3.1.4 登录过程中应用间调转

登录过程中如果涉及到应用间跳转,需要在AppDelegate中实现以下方法

3.2 游戏自行提供登录页面,调用SDK对应登录接口进行登录

如果游戏不使用SDK内置登录界面,可自行提供符合游戏风格的登录界面和对应渠道的登录按钮,并分别对接SDK对应的登录接口。界面效果如下:
login2

3.2.1 登录接口

游戏可调用SDK的登录接口实现登录:

3.2.1.1 选择登录方式

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

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

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

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

3.2.1.3 登录过程中应用间调转

登录过程中如果涉及到应用间跳转,需要在AppDelegate中实现以下方法

3.3 用户登出

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

3.4 登录高级设置

3.4.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.4.2 应用内登录

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

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

实例:

字段说明:

字段名 类型 说明 必填 备注
appSelfLogin boolean 应用内登录固定值true Y
puserId String CP用户id Y
accessToken String CP用户Token Y
extInfo String 额外信息 N CP 扩展信息字段,限长512,WING服务器到CP服务器验证登录时原样返回给CP。CP可以添加任意自定义的字段(JSON格式),用于检验登录或扩展其它功能,不超过长度限制即可。

四.账户管理模块

与登录模块类似,SDK提供了 内置的账户管理界面 和接口调用 两种方式供游戏选择使用:

4.1 使用账户管理页面

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

4.1.1 实现协议 WAAcctManagerDelegate

4.1.2 调用方法

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

代码示例:

4.1.3 关于绑定解绑的通知

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

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

4.2 游戏提供账号管理界面,调用SDK接口实现相关功能

游戏可根据需要,自行提供与游戏风格一致的账号管理界面,调用SDK相关接口实现对应功能。举例如下:
account2

4.2.1 绑定第三方平台账户

4.2.1.1 实现协议WAAccountBindingDelegate

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

4.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平台

示例代码:

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

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

示例代码:

4.2.3 解绑第三方平台账户

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

4.2.4 切换账户

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

4.2.5 新建账户

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

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

4.2.6 获取账户信息

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

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

示例代码:

五.支付模块

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

5.1 初始化支付

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

5.2 查询库存商品列表(可选接口)

5.2.1 实现协议 WAInventoryDelegate

5.2.2 调用方法

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

5.3 购买商品

5.3.1 实现协议 WAPaymentDelegate

支付结果说明 WAIapResult

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

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 扩展信息字段,限长512(JSON格式),WING服务器到CP服务器发货通知时原样返回给CP。如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为JSON,参数名为 deliverUrl,参考格式
{
“deliverUrl”:” http://game.com/deliver.do”,
“otherInfo”:”otherInfo”,
“merId”:””
}
merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。如果是 APPLE支付渠道,merId使用客户端bundleId

5.4支付服务是否可用(可选)

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

六.数据收集

游戏使用WINGSDK数据收集接口,可以将玩家的特定游戏行为上报到指定的数据分析平台中(包括WINGSDK 后台,或appsflyer、chartboots等第三方数据分析平台)。
对应的市场推广、游戏运营人员,可使用已上报的数据进行推广效果、运营状况进行分析,为游戏的推广渠道选择、运营活动设计提供有效数据参考。
注:1.游戏可根据需要,选择往具体的第三方数据分析平台发送数据。其中对应平台需要完成相关配置。
2. 游戏可根据需求,对具体的游戏行为设置对应的数据事件上报。例如玩家完成创角时,发送对应的ghw_user_create,对应的数据后台即可统计到具体的创角相关数据统计。
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事件则需要在事件发生的对应时机调用接口发送。

6.1 配置 (wa_sdk_track_config.plist)

对各个平台进行相应的配置(修改wa_sdk_track_config.plist)。注:文件名以及key值不可修改。
iOS-数据收集功能模块
其中,AppleAppID可以在iTunes Connect(https://itunesconnect.apple.com)中新建应用之后获取,具体可以参考iOS-第三方后台配置文档“Apple基础配置”章节
iOS-配置-wa_sdk_track_config.plist
每个数据收集平台都有相应的开关,可以进行配置。下图的Enable就是开关,Enable: YES-开,NO-关。
iOS-数据收集功能模块
WINGSDK URL正式环境的地址: https://api.wingsdk.com/data/

6.2 调用

6.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

6.2.2 工程启动时初始化

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

6.2.3 调用事件进行追踪

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

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现金额

6.2.3.2 方法二

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

6.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

6.2.3.2.2 关于WAEvent 实例的构建

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

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

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

注:
1)eventNameDict的key参考附表 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值参考 附表6.2 渠道名称表
2)如果不进行设置,所有的渠道将采用设置的默认值(defaultValue)。

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

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

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

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

(7)渠道开关设置

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

6.3 预定义事件

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

6.3.1 WAEventUserImport

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

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

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

6.3.2 WAEventInitiatedPurchase

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

6.3.3 WAEventPurchase

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

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

6.3.4 WAEventLevelAchieved

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

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

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

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

6.3.6 WAEventUserInfoUpdate

说明:更新用户资料

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

6.3.7 WAEventGoldUpdate

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

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

6.3.8 WAEventTaskUpdate

说明:玩家任务信息统计

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

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

6.5 公共参数设置公共参数设置

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

6.5.1 设置服务器ID

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

6.5.2 设置用户gameUserId

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

6.5.3 设置用户等级level

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

七.游戏社交

7.1 Facebook社交分享

分享内容到社交平台,支持分享链接、图片、视频、Facebook OpenGraph(Facebook专属),调用接口

7.1.1 实现协议 WASharingDelegate

7.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 委托

7.1.3 实体说明

7.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无效

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

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

7.1.4 发送请求接口

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

参数说明:

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

示例代码:

7.2 Facebook游戏邀请

7.2.1 查询可邀请好友列表

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

代码示例:

参数说明:

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

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

7.2.2.1 实现协议 WAGameRequestDialogDelegate

7.2.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上线流程图

7.2.2.3 邀请成功记录

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

7.2.2.4 邀请安装奖励

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

7.2.2.5 邀请事件奖励

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

代码示例:

7.3 Facebook礼物

7.3.1 查询好友

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

示例代码:

7.3.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后台新建礼物

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

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

7.3.3.1 实现协议 WAGameRequestDialogDelegate

7.2.2.1 实现协议 WAGameRequestDialogDelegate

7.3.3.2 调用方法

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

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

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

7.3.4.1 实现协议 WAGameRequestDialogDelegate

7.2.2.1 实现协议 WAGameRequestDialogDelegate

7.3.4.2 调用方法

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

7.3.5 Facebook查询收到的礼物

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

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

示例代码:

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

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

7.3.7 删除请求

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

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

示例代码:

7.4 VK社区

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

7.4.2 查询当前应用关联的Group

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

示例代码:

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

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

示例代码:

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

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

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

示例代码:

7.4.5 加入Group

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

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

示例代码:

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

示例代码:

八.WINGSDK游戏推广

8.1 WINGSDK应用墙

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

8.1.1 应用墙使用

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

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

[WAApwProxy showEntryFlowIcon];

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

[WAApwProxy hideEntryFlowIcon];

8.2 推送

WINGSDK推送功能是基于苹果APNS,可以给客户端发送推送通知,通过简单几步配置即可使用。

8.2.1苹果相关配置

导出App推送证书为p12,并上传到WINGSDK后台。
注意:
1、苹果消息推送证书配置请参考Apple官方文档
http://help.apple.com/xcode/mac/current/#/dev11b059073

8.2.2推送集成配置

添加推送模块依赖方法参考2.2 集成SDK到项目
注:Appsflyer卸载检测某些配置与消息推送一样,但如果是用于Appsflyer,此步骤可忽略

8.2.3 Xcode配置

1)开启推送功能

在 Xcode 8.x 以上,必须开启Push Notification能力。找到应用Target设置中的Capabilities -> Push Notifications,确认开关已经设为ON状态。如果没有开启该开关,在 Xcode 8.x 上编译后的应用将获取不到DeviceToken。
iOS——推送配置

2)APNs静默推送权限设置

为了更好支持消息推送,提高消息到达率,需要配置APNs静默推送权限
iOS——推送配置

8.2.4 编写集成代码

1、导入文件头,在AppDelegate中导入:
#import <UserNotifications/UserNotifications.h>

2、初始化消息推送,在AppDelegate的application:initPushWithDelegate:调用下面代码:

注:Appsflyer卸载检测某些配置与消息推送一样,但如果是用于Appsflyer,此步骤可忽略

3、监控用户对推送消息的设置
在AppDelegate的application:didRegisterUserNotificationSettings:调用下面代码:

4、注册DeviceToken
在AppDelegate的application:didRegisterForRemoteNotificationsWithDeviceToken:调用下面代码:

5、监控APNs推送错误
在AppDelegate的application:didFailToRegisterForRemoteNotificationsWithError:调用下面代码:

6、为更好统计用户在不同场景下和不同iOS系统中收到的消息,需在AppDelegate的application:didReceiveLocalNotification:调用下面代码:

7、在iOS 10 以前,为统计 APNs 消息接收事件,需在AppDelegate里的application:didReceiveRemoteNotification:fetchCompletionHandler:回调方法中调用以下接口

对于iOS 10 及以后版本,为统计 APNs 消息接收事件,需要AppDelegate实现协议 UNUserNotificationCenterDelegate,然后在AppDelegate的 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:回调方法中调用以下接口:

8、iOS10中,App可以在前台获取通知,为统计这种消息的接收情况,需在AppDelegate的userNotificationCenter:willPresentNotification:withCompletionHandler:调用下面代码:

8.3 广告

WINGSDK广告功能可以向玩家展示视频广告,可实现对观看视频广告的玩家进行奖励,提高广告的点击播放数。通过简单几步配置即可使用。

8.3.1 检测可播放广告数量

+ (NSInteger) checkRewardedVideo;
大于0为可用

示例代码:

8.3.2 显示广告

+ (void) displayRewardedVideoWithExtInfo:(NSString *)extInfo delegate:(id<WAAdRewardedVideoDelegate>)delegate;

示例代码:

参数名 类型 必填 说明 备注
extInfo NSString N 额外数据(CP调用展示广告接口传递的自定义数据)
delegate WAAdRewardedVideoDelegate Y WAAdRewardedVideoDelegate代理

8.3.3 广告视频代理

在调用8.3.2显示广告代码,需要实现WAAdRewardedVideoDelegate代理

8.3.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调用展示广告接口传入的自定义数据)

8.3.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调用展示广告接口传入的自定义数据)

8.3.3.3 加载视频失败回调

- (void) adDidFailToLoadRewardedVideoWithCampaignId:(NSString *)campaignId adSetId:(NSString *)adSetId extInfo:(NSString *)extInfo;

参数名 类型 说明 备注
campaignId NSString 活动Id
adSetId NSString 广告Id
extInfo NSString 额外数据(CP调用展示广告接口传入的自定义数据)

8.3.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调用展示广告接口传入的自定义数据)

8.3.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调用展示广告接口传入的自定义数据)

8.3.4 设置视频广告缓存完代理

+ (void)setWAAdRewardedVideoCachedDelegate:(id<WAAdRewardedVideoCachedDelegate>)delegate;

示例代码:

参数名 类型 必填 说明 备注
delegate WAAdRewardedVideoCachedDelegate Y WAAdRewardedVideoCachedDelegate代理

8.3.5 视频广告缓存完代理

在调用8.3.4 设置视频广告缓存回调代码,需要实现WAAdRewardedVideoCachedDelegate代理

视频广告缓存完成回调
- (void)adDidRewardedVideoCachedWithCacheCount:(NSInteger)cacheCount;

参数名 类型 说明 备注
cacheCount NSInteger 可用广告数量,大于0为可用

九、第三方配置

9.1 Facebook相关配置

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

9.1.2 Facebook登录权限对照表

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

9.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。

9.2 APPLE相关配置

游戏如需使用APPLE账号进行登录、APPLE商店进行支付,需要进行以下配置。 如果不需要使用APPLE相关功能,请忽略此章节
具体配置请参考第三方后台配置—iOS版 一、Apple后台应用配置

9.3 Appsflyers 相关配置

游戏如需使用Appsflyer相关数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节

9.3.1 数据收集配置

详见6.1 配置 (wa_sdk_track_config.plist)

9.3.2卸载检测

a)官方说明:https://support.appsflyer.com/hc/en-us/articles/211211963-iOS-Uninstall-Tracking

b)对接WINGSDK代码同8.2 消息推送

9.4 Chartboost 相关配置

游戏如需使用Chartboost相关数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节
1.数据收集配置:详见6.1 配置 (wa_sdk_track_config.plist)

9.5 VK相关配置

游戏如需使用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

9.6 Twitter相关配置

游戏如需使用Twitter账号登录游戏,需要进行以下配置。如果不需要相关功能,请忽略此章节
Twitter需要iOS 9.0以上编译,如果使用9.0以下版本编译,会导致应用闪退。具体配置请参考第三方后台配置—iOS 四、Twitter后台应用配置
1、在twitter开发者平台创建一个twitter应用,创建完之后会生成Consumer Key和Consumer Secret
iOS-Twitter配置
这里的Consumer Key和Consumer Secret要配置在项目info.plist中,作为客户端与后台服务器连接的标识。
iOS-Twitter配置
可复制下面代码到info.plist中在修改为对应Consumer Key和Consumer Secret。

2、配置URL Scheme
iOS-Twitter配置
URL Scheme格式:twitterkit-
例如: twitterkit-SPRwO9pH5p9bJCAbUHaiV8oQY

9.7 Instagram相关配置

游戏如需使用Instagram账号登录游戏,需要进行以下配置。如果不需要相关功能,请忽略此章节
具体配置请参考第三方后台配置—iOS 五、Instagram后台应用配置
在instagram开发者平台创建一个instagram应用,创建完之后会生成Client ID、Client Secret和Website URL
这里的Client ID、Client Secret和Website URL要配置在项目info.plist中clientId、clientSecret和redirectUri,作为客户端与后台服务器连接的标识。
iOS-Instagram配置
可复制下面代码到info.plist中在修改为对应clientId、clientSecret和redirectUri

十、附录

10.1 代码说明

10.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 支付:订单时间间隔限制(在特定的时间内重复下订单)

10.1.2 平台取值 >

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

10.1.3 请求类型说明

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

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

10.2 事件说明

10.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 等级或分数

10.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_Android使用指南(v3.6.6)(调整版)

wapublisher No Comments

对接完成之后可以使用工具进行校验:点击下载
本工具用于协助对接完Wing SDK后,检查相关的配置、包引入等是否正确,具体使用方法见操作手册

一、简介

WINGSDK Android版集成的主要功能有:

序号 功能 说明 备注
1 登录 使用SDK登录功能登录游戏 包括匿名登录(即游客登录),及Google、Facebook等第三方登录
2 账户管理 使用SDK账户管理功能对游戏账号进行管理 包括账号绑定、解绑,新建账号、切换账号等功能
3 支付 使用SDK支付功能进行游戏内购 包括Google商店支付,及PayPal等第三方支付
4 数据收集 使用SDK提供的数据收集接口收集每个玩家的游戏行为 数据可选择发送到SDK后台,及Appsflyer、Facebook等第三方登录
5 游戏社交 使用SDK集成的社交接口,在社交平台上与好友进行游戏互动 包括Facebook、VK等社交平台
6 游戏推广 SDK集成的游戏推广功能 包括应用墙、消息推送、视频广告等不同的推广方式

CP可根据游戏的需求选择集成相关的功能模块。

二、初始化集成

在接入具体功能前,游戏中需要进行SDK代码的初始化集成:

2.1 环境配置要求

  • Android API 15及以上版本

  • jdk1.7及以上版本。

  • compileSdkVersion 25及以上版本

2.2 集成SDK到项目

WINGSDK基于gradle提供了多种集成方式:Gradle自动集成、手动集成、Eclipse项目集成、命令行集成。
游戏可以根据需要选择其中任意一种方式集成WINGSDK。
注:为封装对应第三方平台的相关功能,WINGSDK集成了多个第三方SDK。当前版本中对第三方SDK依赖关系如下表:

第三方SDK名称 对应功能 版本 说明
GOOGLE Google登录、支付 11.0.1 包含Google Service,Firebase
FACEBOOK Facebook登录、社交 4.26.0 此版本的facebook依赖于android support包25.0.0及以上版本,使用facebook功能请先使用Android Manager下载或更新Android SDK至25.0.0或以上(主要包括SDK flatform, Android Support Repository和Google Repository)
APPSFLYER appsflyer数据分析 4.7.3
CHARTBOOST chartboots数据分析 6.6.3
VK VK登录、社交 1.6.8
Twitter Twitter登录 3.0.0

2.2.1 Gradle自动集成

在项目目录下的build.gradle文件添加以下配置:

注意:
1)部分项目中可能只有一个build.gradle文件;

在程序module下面的build.gradle文件的dependencies内增加依赖配置;

注意:
1)部分项目中可能只有一个build.gradle文件;
2)以上的“必选”项目必须引入,“可选”项目可根据对应功能需求引入。如游戏需要使用Google登录和支付功能,则必须引入对应的Google模块。
3) 其中x.x.x为各个模块的具体版本号,随SDK版本升级会发生改变,各个版本对应的渠道包版本请参考:https://admin.wingsdk.com/developers/pack_config.do 在这个地址页面,也可以通过选择版本和所需要的渠道,一键生成依赖脚本配置。

2.2.2 手动集成

2.2.2.1 打包配置页面下载SDK包

WINGSDK打包配置页面地址https://admin.wingsdk.com/developers/pack_config
下载页面如下图所示:
android-手动集成SDK包

2.2.2.2 导入SDK包到项目中

打开项目,在菜单“File→New→New Module”
导入SDK包到项目
打开新建Module页面,选择“Import .JAR/.AAR Package”项,下一步
导入SDK包到项目
选择下载好的SDK .AAR包,导入
导入SDK包到项目
此时项目的目录将会多了一个上面新建的Module,然后将Module关联到程序Module中,关联方法有两种:
第一种:直接在程序Module中的build.gradle的dependencies下添加代码(单引号内部为要关联的Module名称,以冒号“:”开头)

第二种:选中程序Module,鼠标右键→Open Module Settings(或F12),打开程序Module设置面板
导入SDK包到项目
在打开的Module设置窗口中选中程序Module,定位到“Dependencies”选项卡,点击“+”符号添加依赖,选择“Module Dependency”,
导入SDK包到项目
弹出Module选择窗口,在这个窗口中会展示出所有的未关联的Module
导入SDK包到项目
选中要关联的Module,OK→OK完成配置

2.2.2.3 手动集成AAR注意事项

1)wa-sdk-base AAR包(必选)
2)wa-sdk-core AAR包(必选)
需要依赖com.android.support:support-v4包,23及以上版本

3)wa-sdk-appsflyer AAR包(可选)
4)wa-sdk-chartboost AAR包(可选)
5)wa-sdk-facebook AAR包(可选)
需要依赖Facebook SDK,4.26.0版本

6)wa-sdk-google AAR包(可选)
需要依赖Google Service相关包,版本为11.0.1

7)wa-sdk- vk AAR包(可选)
需要依赖VK SDK包

8)wa-sdk-webpay AAR包(可选)
9) wa-sdk-push AAR包(可选)

10) wa-sdk-twitter AAR包(可选)

11) wa-sdk-instagram AAR包(可选)
12) wa-sdk-ad AAR包(可选)

说明:以上的“必选”项目必须引入,“可选”项目可根据需求引入

2.2.3 Eclipse项目集成

如果是Eclipse项目,可以利用Android Studio的 “Import Project” 把Eclipse项目转变成Android Studio项目。如果坚持使用Eclipse,可以使用以下方式进行SDK集成

2.2.3.1 安装Gradle插件

打开Eclipse,安装gradle插件(如:BuildShip),安装成功后重启eclipse

2.2.3.2 导入Gradle项目

将Gradle项目导入eclipse,如果不是Gradle项目,导入时转换成Gradle项目

2.2.3.3 集成配置

修改程序项目中的build.gradle文件,增加仓库地址配置和dependencies配置,添加SDK相关依赖,详细请参考2.2.1 Gradle自动集成

2.2.3.4 开始开发

集成完毕后,编译项目,使依赖生效,调用接口开发。

2.2.4 命令行集成

2.2.4.1 配置编译环境

下载安装gradle工具,并配置执行环境。

2.2.4.2 新建构建项目的目录

如果没有项目目录,新建一个目录作为项目目录。

2.2.4.3 拷贝源代码和资源文件到构建目录中

将源码拷贝到新建的项目目录中,最基本包括以下目录和文件

文件/目录 描述
assets/ assets文件目录
libs/ 第三方库目录
src java源文件目录
res 资源文件目录
AndroidManifest.xml 配置文件

如下图:
导入SDK包到项目
说明:以上目录不是硬性规定的,可以自定义,只需要在后续步骤中正确设置即可

2.2.4.4 配置local.properties文件

在local.properties文件增加以下配置(若没有该文件需要新建)
sdk.dir=YOUR_SDK_HOME_DIR
将以上的值替换成你的Android SDK的目录

2.2.4.5 配置build.gradle文件

配置build.gradle文件,包含以下内容:
1)插件声明

2)仓库地址声明

注意:以上的WING_SDK_REPOSITORY_URL为WINGSDK仓库地址:http://repo.wingsdk.cn:8081/repository/winga-group/,地址可能有变,请留意最新的对接文档。
3)Android编译配置声明

说明:除了以上必要配置外,Android的相关配置还可以添加签名、代码混淆等配置
注意:上面的sourceSet中的内容必须跟你在项目目录下的文件类型对应起来
4) 依赖配置声明


注意:
1)其中x.x.x为各个模块的具体版本号,随SDK版本升级会发生改变,各个版本对应的渠道包版本请参考:https://admin.wingsdk.com/developers/pack_config.do在这个地址页面,也可以通过选择版本和所需要的渠道,一键生成依赖脚本。

2.2.4.6 编译

打开命令行,进入项目目录,执行以下命令:
Windows:

MAC/Linux:

这里的gradle.bat是下载的gradle编译工具(如果没有配置环境变量,请使用绝对路径),初始化成功后,将会得到SUCCESS字样,如下图:
导入SDK包到项目中
此时项目目录下会多了一些目录和文件
接下来执行clean task,清理项目
Windows:

MAC/Linux:

最后一步是执行build task,进行编译
Windows:

MAC/Linux:

编译成功后将看到BUILD SUCCESSFUL字样,如下图:
导入SDK包到项目中
build task执行成功后,将会在项目目录下的\build\outputs\apk看到apk(如果在build.gradle中配置好签名及混淆配置,可实现一步到位的打包)

说明:最后一步的编译有多种task可以实现,比如assembleDebug,assembleRelease等等,详细请参考gradle官方说明。

2.3 SDK配置及初始化

2.3.1 SDK配置

2.3.1.1 AndroidManifest.xml配置:

在AndroidManifest.xml中application标签下添加以下设置。不同的应用配置的参数值不相同,需要申请相应资源

注意:以上配置中android:name必须保持一致,android:value根据CP应用申请的资源而定。

注:WINGSDK中使用到的权限
1)SDK内部自动添加的权限(普通权限)

2)CP选配权限(危险权限) 如果应用上Google推荐,需注意Google推荐位需知

2.3.1.2 Activity结果传递配置

在所有使用到SDK接口的Activity的onActivityResult方法中增加以下代码:

2.3.2 SDK初始化

调用下面接口对SDK进行初始化:

注意:SDK初始化必须在第一个Activity的onCreate()方法中调用,强烈建议在UI线程中调用。

2.4 代码混淆配置

打包apk混淆代码配置中增加以下配置

2.5 调试模式

2.5.1 开启/关闭调试模式

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

说明:调用此接口后即可显示Log悬浮窗按钮,不用再另外调用enableLogcat接口,同时如果需要,也可以调用disableLogcat接口隐藏Log按钮。

2.5.2 Logcat工具

SDK提供了调试信息显示的Logcat工具,使用这个工具测试人员不需要IDE环境就可以查看调试信息,工具可以看到应用的调试Log信息(不包含系统打印)。使用前必须确保手机的安全软件没有拦截该程序的悬浮窗口权限,使用调用以下接口:

2.5.2.1 显示Logcat悬浮按钮

说明:如果已经开启了调试模式,不需要调用该接口就可以显示Logcat入口悬浮窗。

2.5.2.2 隐藏Logcat悬浮按钮

2.5.2.3 向Logcat增加一条日志

通过以下接口,开发者可以向Logcat工具中增加一条开发日志,日志会在Logcat工具的Log标签中显示。

2.6 Android6.0 权限管理

buildVersion 在23以下版本,只需要在AndroidManifest.xml中配置权限即可,buildVersion 在23及以上版本,在AndroidManifest.xml中配置的敏感权限声明,当程序运行在API 23(android6.0)及以上的系统时,授权声明是无效的,敏感权限需要在程序运行时授权。
SDK提供了运行时权限的检查与授权接口,在程序运行时,调用以下接口进行权限自检:

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y Activity对象
permission String Y 权限名称 权限全称字符串,参考android.Manifest.permission
forceRequest boolean Y 是否强制申请权限 true 强制申请
false非强制申请
这个参数决定权限申请流程。强制申请权限时,拒绝后会弹出确认对话框,如果拒绝且勾选不再询问时,调用接口检查权限时会要求到设置中打开权限;非强制申请权限时,拒绝授权不再弹任何对话框,下一次调用接口权限继续弹出授权对话框
denyConfirmMsg String N 拒绝授权确认对话框的消息文字 拒绝授权后弹出确认对话框的消息文字
permissionSettingMsg String N 提示跳转到设置页面打开权限对话框的消息文字 拒绝且勾选不再询问时,调用接口检查权限时弹出要求到设置中打开权限对话框中显示的消息文字
callback WAPermissionCallback N 回调 接收返回的授权结果,CP根据授权结果做相应操作

示例:

在调用上面权限自检接口的Activity中的onRequestPermissionsResult()方法中调用已下接口,完成权限自检和授权的传递。

示例:

三.登录模块

SDK提供了 UI界面 和 接口调用 两种登录方式,满足游戏不同需求:

类型 说明 备注
UI界面 SDK统一内置登录界面 游戏只需提供一个登录按钮,即可调出对应登录窗口供玩家选择不同的登录方式登录游戏
接口调用 游戏自行提供登录界面,使用SDK登录接口进行登录 游戏可设计更符合游戏风格的登录界面;需单独接入每个不同的登录方式接口

3.1 SDK内置登录界面

此时游戏的登录界面只需提供一个登录按钮,玩家点击该按钮,将弹出SDK内置的登录窗口,并列出已集成的登录方式列表供玩家选择:
login

3.1.1 调用登录窗口

通过调用以下接口显示SDK内置登录界面:

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用接口的Activity
enableCache boolean Y 是否启用登录缓存,true为启用,false为关闭 如果开启登录缓存,那么调用这个接口的时候会看是否有登录记录,如果有,不会显示登录方式选择对话框,直接使用上一次的登录方式登录;如果不开启登录缓存,则每次都会弹出登录方式窗口,待玩家选择
callback WACallback<WAloginResult> N 回调,用来返回登录结果 3.1.2 处理登录结果

注意:使用登录窗口时,点击图标登录SDK自动弹出加载框,无需再次添加加载框。

3.1.2 处理登录结果

游戏在调用SDK登录接口时,需要对回调返回进行处理:
登录结果通过传入的回调返回,数据封装在WALoginResult类中。

WALoginResult字段说明

字段名 类型 说明 备注
code int 登录结果码 10.1.1 状态码说明
message String 登录结果消息
userId String WINGSDK用户id
token String WINGSDK用户token
platformUserId String 平台用户id
platformToken String 平台用户token
platform String 平台类型 当前登录的平台名称

3.1.3 清除登录窗口的缓存

使用登录窗口对话框进行登录,如果启用了缓存,SDK会缓存当前登录方式,下一次在启用缓存的前提下使用登录窗口登录,会自动使用上一次登录方式登录,不再弹出登录窗口。
游戏可提供一个清除缓存按钮,玩家点击该按钮时可清除已缓存的登录方式。清除成功后,玩家再次点击登录按钮时,可重新弹出SDK内置登录窗口,便于玩家切换不同的登录方式登录游戏。
清除缓存调用以下接口:

3.1.4 用户登出

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

注意:调用logout接口后,serverId、gameUseId、level字段值会被重置,如果需要保持相应字段的值不重置,需要重新设置相应字段的值,参考6.4公共参数设置

3.2 游戏自行提供登录页面,调用SDK对应登录接口进行登录

如果游戏不使用SDK内置登录界面,可自行提供符合游戏风格的登录界面和对应渠道的登录按钮,并分别对接SDK对应的登录接口。界面效果如下:
login2

3.2.1 登录接口

游戏可调用SDK的登录接口实现登录:

参数名 类型 必填 说明 备注
activity Activity Y 调用接口的Activity
platform String Y 登录账户的平台类型 在WAConstants类中定义,详情请看10.1.2 平台取值
callback WACallback<WAloginResult> N 回调,用来返回登录结果 3.2.2 处理登录结果
extra String N 额外信息 Facebook自定义权限登录、应用内登录等高级登录设置请参考3.3 登录高级设置相关章节

注:SDK已集成多种不同的第三方登录方式,游戏需根据自身需求选择使用。

3.2.2 处理登录结果

游戏在调用SDK登录接口时,需要对回调返回进行处理:
登录结果通过传入的回调返回,数据封装在WALoginResult类中。

WALoginResult字段说明

字段名 类型 说明 备注
code int 登录结果码 10.1.1 状态码说明
message String 登录结果消息
userId String WINGSDK用户id
token String WINGSDK用户token
platformUserId String 平台用户id
platformToken String 平台用户token
platform String 平台类型 当前登录的平台名称

3.2.3 清除登录窗口的缓存

使用登录窗口对话框进行登录,如果启用了缓存,SDK会缓存当前登录方式,下一次在启用缓存的前提下使用登录窗口登录,会自动使用上一次登录方式登录,不再弹出登录窗口。
游戏可提供一个清除缓存按钮,玩家点击该按钮时可清除已缓存的登录方式。清除成功后,玩家可切换不同的登录方式登录游戏。
清除缓存调用以下接口:

3.2.4 用户登出

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

注意:调用logout接口后,serverId、gameUseId、level字段值会被重置,如果需要保持相应字段的值不重置,需要重新设置相应字段的值,参考6.4 公共参数设置

3.3 登录高级设置

3.3.1 设置登录流程

使用该接口需注意以下两点:
1)一般来说,如果应用登录的时候有登录方式选择界面,就不需要使用此接口,此接口默认是这种方式(取值为1)。
2)这个接口主要是用来满足以下需求:用户第一次登录是以游客方式进行登录,进到应用里面可以切换其它登录方式,下次登录会直接以切换后的账户进行登录(取值为2)。

登录流程有两种模式,在WAConstants类中定义,取值如下表:

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

3.3.2 应用内登录

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

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

示例:

字段说明:

字段名 类型 说明 必填 备注
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.3.3 Facebook自定义权限登录

Facebook平台登录默认权限是public_profile和user_friends,如果需要自定义登录获取的权限,可以调用接口3.2 使用接口登录,将需要获取的权限声明按照规定格式(JSON字符串)通过extra字段传入。

Facebook自定义权限登录extra格式(标准JSON格式字符串)

字段说明:

字段名 类型 说明 必填 备注
permissionType String 权限类型 Y read 或write,登录类型只能选一种
permissions JSONArray 权限列表 Y 列表中的权限类型必须跟权限类型声明的类型一致且都是同一类型,否则会登录失败。9.2.3 Facebook登录权限对照表

四.账户管理模块

与登录模块类似,SDK提供了 内置的账户管理界面 和接口调用 两种方式供游戏选择使用:

4.1 内置账户管理界面

SDK内置了账户管理界面。玩家可以在这个界面对账户进行管理操作,包括账号绑定、解绑、切换账户、新建账户等。展示效果如下:
account

4.1.1 内置账户管理界面接口

通过以下方式调用SDK内置的账户管理界面:

注意:使用内置账户管理界面之前必须先登录
参数说明:

参数名 类型 必填 说明 备注
activity Activity Y Activity对象
callback WAAccountCallback N 回调 onLoginAccountChanged(WALoginResult currentAccount)回调方法,在新建账号、账号切换时会回调这个方法,返回当前登录的账号信息.
onBoundAccountChanged(boolean binding, WABindResult result)回调方法,在绑定账户信息发生变更时会回调这个方法,每次变更都调用一次,CP可根据需要实现相应功能。

4.2 游戏提供账号管理界面,调用SDK接口实现相关功能

游戏可根据需要,自行提供与游戏风格一致的账号管理界面,调用SDK相关接口实现对应功能。举例如下:
account2

4.2.1 绑定第三方平台账户

绑定第三方平台账户,不但可以使用第三方平台账户登录,而且可以防止账户信息丢失。使用场景:
1. 玩家第一次注册游戏,使用默认的游客登录方式试玩游戏。
2. 玩家试玩后,为保障账户安全(游客账号存在账号丢失的风险),可通过绑定功能,使用第三方平台账号(如Facebook账号、Google账号等)绑定游戏。
3. 绑定成功后,玩家可直接使用对应的第三方账号在当前设备登录游戏;也可切换到其他设备上登录游戏。

调用以下接口绑定平台账户

参数说明

参数名 类型 必填 说明 备注
activity Activity Y 调用接口的Activity
platform String Y 绑定第三方平台账号的平台类型 取值参考10.1.2 平台取值
extInfo String N 额外信息 预留字段
callback WABindCallback N 回调,用来返回绑定结果

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

查询当前的账户已经绑定的第三方平台账户列表,调用接口

WAAccountResult字段说明

字段名 类型 说明 备注
code int 结果码 10.1.1 状态码说明
message String 结果消息
accounts List<WAAccount>
platform String 绑定的平台类型 取值参考10.1.2 平台取值
platformUserId String 平台用户id

WAAccount字段说明

字段名 类型 说明 备注
platform String 绑定的平台类型 取值参考10.1.2 平台取值
platformUserId String 平台用户id

4.2.3 解绑第三方平台账户

玩家如果需要解绑已经绑定的第三方平台账户,调用以下接口:

注意:为保障账号不被丢失,有以下情况之一者,不可解绑:
1.解绑的账户为SDK平台的;
2.用户没有绑定第三方平台账户的;
3.用户只绑定一个第三方平台账户,且用户没有与当前设备绑定的

4.2.4 切换账户

切换账户可以一键切换登录账户,调用接口

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y
platform String Y 需要切换的账号类型 取值参考10.1.2 平台取值
callback WACallback<WALoginResult> N 回调 用来返回结果

4.2.5 新建账户

新建账户可以新建一个全新的玩家账户。

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

4.2.6 获取账户信息

获取账户信息接口可以获取指定平台的账户信息(如获取对应Facebook账号信息),调用接口:

参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台名称 取值参考10.1.2 平台取值
callback WACallback<WAUser> N 回调 结果中包含平台用户的id,名称,头像等信息

五.支付模块

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

5.1 初始化支付

初始化支付,SDK会对所有已经支持的支付平台做初始化,初始化调用接口

参数说明:

参数名 类型 必填 说明 备注
context Context Y Context对象
callback WACallback<WAResult> N 回调方法,返回初始化结果 初始化成功才能使用支付

支付的初始化在调用Activity的onCreate中初始化。

5.2 查询库存商品列表(可选接口)

通过查询库存商品列表,可以获取所有可以购买的库存商品。
注:查询库存商品列表接口是可选接口。游戏可根据需求选择是否调用该接口:
场景1:游戏的商品是动态配置的。此时游戏可通过查询库存商品列表接口,从SDK后台查询到当前已配置的最新商品列表,并展示给玩家。
场景2:游戏的商品是固定不变的。此时游戏可不调用查询库存商品列表接口,直接从游戏中读取配置的商品列表展示给玩家。

查询库存调用接口:

注意:这里返回的库存商品信息是WINGSDK平台的商品信息,并非第三方平台的商品信息。
参数说明:

参数名 类型 必填 说明 备注
callback WACallback<WASkuResult> N 回调方法,结果返回

WASkuDetails实体类说明:

get方法名 返回值类型 不为空 说明 备注
getSku() String Y 库存商品id
getTitle() String N 商品名称
getDescription() String N 商品描述
getVirtualCoinAmount() long Y 虚拟货币数

5.3 购买商品

购买指定商品时,调用以下接口发起支付:

调用支付接口支付将会出现两种情况:
1)直接弹出google购买窗口(如果该商品有且只有google支付渠道);
2)弹出支付渠道选择窗口(如果有除google之外的渠道),选择支付方式后进行支付。

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用Activity
waProductId String Y WINGSDK 商品的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
callback WACallback< WAPurchaseResult > N 回调方法,结果返回

注意:如果需要横竖屏适配,请在AndroidMainifest.xml中对弹出购买窗口的Activity声明中添加如下语句:

WAPurchaseResult实体类说明:

Get方法名 返回值类型 不为空 说明 备注
getPlatform() String Y 支付平台
getWAProductId() String Y WINGSDK商品id
getExtInfo() String N 额外数据 支付的时候CP传入的
getOrderId() String N WINGSDK订单号 部分支付方式没有
getSku() String N 第三方平台商品id
getPriceCurrencyCode() String N 本地货币类型
getPriceAmountMicros() long N 本地货币数量 微分,1元=1000000
getDefaultCurrency() String N 基准货币类型
getDefaultAmountMicro() long N 基准货币数量 微分,1元=1000000
getVirtualCurrency() String N 虚拟货币类型
getVirtualCoinAmount() long Y 虚拟货币数量

5.4 查询支付服务是否可用(可选)

通过以下接口可以获取支付服务是否可用,返回boolean类型结果,true为可用,false为不可用,只要有一个支付渠道可用即为true。

参数说明:

参数名 类型 必填 说明 备注
context Context Y 上下文

5.5 资源释放(可选)

不再使用支付时需要对资源进行释放,可以清理所有支付渠道所占用的资源,在调用接口Activity的onDestroy方法内调用以下接口

示例:

六.数据收集

游戏使用WINGSDK数据收集接口,可以将玩家的特定游戏行为上报到指定的数据分析平台中(包括WINGSDK 后台,或appsflyer、chartboots等第三方数据分析平台)。
对应的市场推广、游戏运营人员,可使用已上报的数据进行推广效果、运营状况进行分析,为游戏的推广渠道选择、运营活动设计提供有效数据参考。
注:1.游戏可根据需要,选择往具体的第三方数据分析平台发送数据。其中对应平台需要完成相关配置。
2. 游戏可根据需求,对具体的游戏行为设置对应的数据事件上报。例如玩家完成创角时,发送对应的ghw_user_create,对应的数据后台即可统计到具体的创角相关数据统计。

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事件则需要在玩家对应行为发生时调用接口发送。

6.1 发送数据

6.1.1 构建WAEvent对象

使用WAEvent.Builder构建一个WAEvent类对象,并设置数据收集的相关参数:

6.1.2 发送数据

调用第一步创建WAEvent对象的trackEvent(Context)方法发送数据

或者调用以下接口发送:

6.1.3 WAEvent.Builder方法介绍

  • 设置默认的事件名称

参数:
eventName事件名称

  • 设置渠道自定义事件名称,针对某个渠道需要设置特定的事件名称

参数:
eventChannel 渠道名称
eventName 事件名称

注意:
1)AppsFlyer预定义的事件名称和WINGSDK预定义的事件名称已经做了映射(例如: ghw_login <-> af_login),用户无需再手动自定义。
2)如果不进行设置,所有的渠道将采用设置的默认值。

  • 设置默认累加值

参数:
value 累加统计的数值

  • 设置渠道自定义累加值,针对某个渠道需要设定特定的累加值

参数:
eventChannel 渠道名称
value 累加统计的数值

注意:
1)如果不进行设置,所有的渠道将采用设置的默认值。

  • 设置事件默认的参数/值,每次可添加多个

参数:
eventValues 参数/值Map

  • 添加一个事件默认的参数/值,每次添加一个

参数:
paramName 参数名称
paramValue 参数值

  • 设置事件渠道自定义的参数/值,每次可添加多个,针对某个渠道需要设定特定的参数或者值

参数:
eventChannel 渠道名称
eventValues参数/值Map

注意:
1)AppsFlyer预定义的参数名称和WINGSDK预定义的参数名称已经做了映射,用户无需再手动自定义。
2)如果不进行设置,所有的渠道将采用设置的默认值。

  • 设置事件渠道自定义的参数/值,每次添加一个,针对某个渠道需要设定特定的参数或者值

参数:
eventChannel 渠道名称
paramName 参数名
paramValue 参数值

注意:
1)AppsFlyer预定义的参数名称和WINGSDK预定义的参数名称已经做了映射,用户无需再手动自定义。
2)如果不进行设置,所有的渠道将采用设置的默认值。

  • 禁用渠道,禁用后的渠道不会发送数据

参数:
eventChannel 渠道名称

注意:
1)默认情况下是所有启用的渠道都发送
2)该接口只是针对当前事件禁用发送到某个渠道
3)完全启用/关闭某个渠道数据收集,请参考九、第三方配置相关章节

6.2 SDK预定义事件

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

6.2.1 ghw_user_import导入用户事件

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

参数名 类型 说明 必填 备注
isFirstEnter int 是否第一次进服 Y 0→否;
1→是;
默认为0

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

6.2.2 ghw_initiated_purchase点击购买(虚拟货币)

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

6.2.3 ghw_purchase购买完成(虚拟货币)

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

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

6.2.4 ghw_level_achieved 等级增长事件

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

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

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

6.2.5 ghw_user_create 创建角色

说明:创建游戏角色,游戏角色创建时调用

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

6.2.6 ghw_user_info_update更新用户信息

说明:更新用户资料

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

6.2.7 ghw_gold_update货币状况更新

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

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

6.2.8 ghw_task_update玩家任务统计

说明:玩家任务信息统计

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

6.3 自定义事件

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

6.4 公共参数设置

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

6.4.1 设置服务器ID

当用户的服务器ID发生改变时,需要调用设置服务器ID接口设置新的服务器ID,例如每次进入服务器

注意:设置服务器id的操作在每次选服后都需要进行,必须在调用其他接口前设置。

6.4.2 设置gameUserId

当gameUserId发生改变时,需要调用设置gameUserId接口设置新的gameUserId,例如成功登录账号后、切换账号成功后

注意:必须在调用其他接口前设置。

6.4.3 设置用户等级Level

当用户角色等级发生改变时,需要调用设置等级接口设置新的等级,例如开始进入游戏、等级提升等。

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

七.游戏社交

7.1 Facebook社交

7.1.1分享

分享内容到社交平台,支持分享链接、图片、视频、Facebook OpenGraph(Facebook专属),调用接口

参数说明

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
platform String Y 分享的平台 分享到哪个平台
shareContent WAShareContent Y 分享内容
shareWithAPI boolean Y 是否通过API分享 如果所选平台支持API分享,设置为true时直接通过API层分享,没有界面
extInfo String N 额外信息 预留字段
callback WACallback<WAResult> N 回调方法,结果返回

7.1.1.1 分享链接

分享链接shareContent参数传入WAShareLinkContent类型实体类对象。

WAShareLinkContent字段说明

字段名 类型 必填 说明 备注
contentUri Uri Y 链接
peopleIds List<String> N 分享好友ID
placeId String N 地址id
ref String N 添加到引用链接中的参数值
contentTitle String N 连接标题
contentDescription String N 链接描述
imageUri Uri N 配图

示例

7.1.1.2 分享图片

分享图片shareContent参数传入WASharePhotoContent类型实体类对象。

WASharePhotoContent字段说明

字段名 类型 必填 说明 备注
contentUri Uri N 内容Uri
peopleIds List<String> N 分享好友ID
placeId String N 地址id
ref String N 添加到引用链接中的参数值
photos List<WASharePhoto> Y 图片列表 不能超过12MB,而且列表不能为空,至少一张图片

WASharePhoto字段说明

字段名 类型 必填 说明 备注
bitmap Bitmap Y 图片Bitmap对象 和imageUri两个必选一个
imageUri Uri Y 图片Uri 和bitmap两个必选一个
userGenerated String N 未使用
caption String N 图片描述

示例

7.1.1.3 分享视频

分享视频shareContent参数传入WAShareVideoContent类型实体类对象。

WAShareVideoContent字段说明

字段名 类型 必填 说明 备注
contentUri Uri N 内容Uri
peopleIds List<String> N 分享好友ID
placeId String N 地址id
ref String N 添加到引用链接中的参数值
contentDescription String N 视频描述
contentTitle String N 视频标题
previewPhoto WASharePhoto N 视频缩略图
video WAShareVideo Y 视频 不能超过12MB

WAShareVideo字段说明

字段名 类型 必填 说明 备注
localUri Uri Y 视频Uri

示例

7.1.1.4 分享OpenGraph (Facebook)

分享OpenGraph shareContent参数传入WAShareOpenGraphContent类型实体类对象。

注意:分享OpenGraph时,platform参数固定值FACEBOOK

WAShareOpenGraphContent字段说明

字段名 类型 必填 说明 备注
action WAShareOpenGraphAction Y action
previewPropertyName Y 预览属性名称

7.1.2 发送请求

向平台的好友发送请求,请求类型包括普通请求、游戏邀请、赠送礼物、索要礼物等,发送请求调用接口

参数说明

参数名 类型 必填 说明 备注
activity Activity Y 调用Activity对象
platform String Y 平台类型 平台类型在WAConstants类中定义10.1.2 平台取值
requestType String Y 请求类型 请求类型默认的在WAConstants下有定义,请参考10.1.3 请求类型说明
title String Y 标题 部分平台需要显示
message String Y 说明文字 部分平台需要显示
objectId String N 对象id 部分请求类型必填,比如发送礼物,为礼物对象id
receiptIds List<String> Y 接收者id 根据平台而定,有些平台支持一次发送请求给多个用户,有些平台一次只能发送给一个用户。VK平台一次只能发送一个用户
callback WACallback<WARequestSendResult> N 回调 结果返回
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义

WARequestSendResult字段说明:

参数名 类型 必填 说明 备注
requestId String Y 平台生成的请求id 部分平台会为空或只是网络请求id
recipients String Y 接收者id列表 返回一个或者多个

7.1.3 游戏邀请

发送游戏邀请请求接口请参照章节7.1.2 发送请求

7.1.3.1 查询可邀请好友列表

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

参数说明

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
platform String Y 平台名称 所查询的平台
duration long Y 过滤时间间隔 当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友
callback WACallback<WAFriendsResult> N 回调方法,结果返回

7.1.3.2 记录邀请成功信息

成功邀请好友后,调用以下接口向服务器记录邀请信息:

参数说明:

参数名 类型 必填 说明 备注
context Context Y 上下文
platform String Y 平台名称 发出邀请的平台
requestId String Y 邀请请求id 没有的渠道可以传空字符(如VK)
recipients Collection<String> Y 邀请成功好友的id列表
callback WACallback<WAResult> N 回调方法,结果返回

7.1.3.3 邀请安装奖励

通过邀请安装使用的用户,安装后需要通知服务器对邀请人进行奖励,需要在游戏启动后登录并且选服后调用以下接口:

注意:这个接口必须在用户登录并且选服后调用。采用platform指定平台方式登录或者绑定platform指定的平台后,均可以调用该接口。

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
platform String Y 平台名称 邀请的平台
callback WACallback<WAResult> N 回调方法,结果返回

7.1.3.4 邀请事件奖励

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
platform String Y 平台名称 邀请的平台
eventName String Y 事件名称 事件名称必须后台已经定义
callback WACallback<WAResult> N 回调方法,结果返回

7.1.4 查询好友

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
platform String Y 平台名称 查询好友的平台
callback WACallback<WAFriendsResult> N 回调方法,结果返回

7.1.5 礼物

赠送礼物、索要礼物接口请参照章节7.1.2 发送请求

7.1.5.1 Facebook查询Graph Object

Facebook平台的礼物就是在Facebook控制台创建的用来当做礼物的Graph Object,查询Facebook后台创建的Graph Object,调用接口

Facebook后台新建礼物(Open Graph Object)参考9.2.5 Facebook后台新建Grap Object

参数说明

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
objectType String Y Object类型 Facebook控制台预定义,格式为“命名空间:对象类型”
callback WACallback<WAFBGraphObjectResult> N 回调方法,结果返回

7.1.5.2 Facebook查询收到的礼物

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
callback WACallback<WAFBGameRequestResult> N 回调方法,结果返回

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

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
callback WACallback<WAFBGameRequestResult> N 回调方法,结果返回

7.1.5.4 Facebook删除请求

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
requestId String Y 请求id
callback WACallback<WAResult> N 回调方法,结果返回

7.2 Game Service(已停止维护更新)

7.2.1 登录Game Service

登录Game Service调用接口:

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用的Activity
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持Google平台
callback WACallback<WAPlayer> N 回调方法,结果返回 WAPlayer是平台返回的玩家

7.2.2 登出Game Service

登出Game Service调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
platform String Y 要登出的平台 平台类型在WAConstants类中定义,目前支持Google平台

7.2.3 成就解锁

标准类型的成就是一次性解锁,解锁调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持Google平台
id String Y 成就id
callback WACallback<WAUpdateAchievementResult> N 回调方法,结果返回

7.2.4 分步成就进度增加

分步类型成就是可以分步进行解锁的,进度增加会在原来的进度上完成递增,无需知道当前的进度,进度递增调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持Google平台
id String Y 成就id
numSteps int Y 递增的步数 0<numSteps<成就总分步数
callback WACallback<WAUpdateAchievementResult> N 回调方法,结果返回

7.2.5 分步成就进度设置

分步类型成就除了可以使用7.2.4 分步成就进度增加实现进度递增外,也可以使用以下接口直接设置进度:

参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持Google平台
id String Y 成就id
numSteps int Y 成就步数 当且仅当:已完成进度<numSteps<成就总分步数 是有效
callback WACallback<WAUpdateAchievementResult> N 回调方法,结果返回

7.2.6 显示隐藏成就

隐藏状态下的成就不能解锁,需要显示后才能解锁操作,显示隐藏的成就调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持Google平台
id String Y 成就id
callback WACallback<WAUpdateAchievementResult> N 回调方法,结果返回

7.2.7 展示成就列表

展示成就列表是打开自带的页面,调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y 调用Activity
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持Google平台
callback WACallback<WAResult> N 回调 成就页面登出账号后,会在onError中得到一个code值为CODE_GAME_NEED_SIGN=-605的错误回调,在这里可以更新UI

7.2.8 加载成就列表

通过以下接口,可以加载所有成就的列表:

参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持Google平台
forceReload boolean Y 是否强制重新加载
callback WACallback<WALoadAchievementResult> N 回调方法,结果返回 结果实体类WALoadAchievementResult中含有成就数据List对象,成就数据实体类为WAAchievement

WAAchievement字段说明:

参数名 类型 说明 备注
achievementId String 成就id
name boolean 成就名称
type int 成就类型 类型取值为WAAchievement定义的静态变量,只能是 TYPE_STANDARD或 TYPE_INCREMENTAL
state int 成就状态 状态取值为WAAchievement定义的静态变量,只能是STATE_UNLOCKED, STATE_REVEALED, 或 STATE_HIDDEN
currentSteps int 当前进度 仅对分步成就有意义,即type取值为TYPE_INCREMENTAL时
description String 成就详细描述
formattedCurrentSteps String 用户解锁成就已经完成的步数 格式化为当地语言的字符串
formattedTotalSteps String 解锁成就还需要完成的步数 格式化为当地语言的字符串
lastUpdatedTimestamp long 上一次更新时间
player WAPlayer 玩家信息
revealedImageUri Uri 隐藏图标
totalSteps int 总步数 仅对分步成就有意义,即type取值为TYPE_INCREMENTAL时
unlockedImageUri Uri 未解锁图标
xpValue long XP值

7.2.9 判断是否已经登录Game Service

判断当前是否已经登录了Game Service,调用以下接口,接口返回boolean类型结果,true为已登录,false为未登录

参数说明:

参数名 类型 必填 说明 备注
platform String Y 平台类型 平台类型在WAConstants类中定义

7.3 VK游戏社区

7.3.1 通过Group id查询Group详情

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y Activity对象
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持VK平台
gids String[] Y 需要查询的group id列表
callback WACallback<WAGroupResult> N 回调方法,结果返回 结果实体类WAGroupResult中含有Group数据Map对象,Group数据实体类为WAGroup

WAGroup字段说明:

参数名 类型 说明 备注
gid String group id
name String group名称
screen_name String group screen_name
is_closed int 是否封闭 0 – 开放
1 – 封闭
2 – 私有
is_admin int 当前用户是否管理员 0 – 非管理员
1 – 管理员
admin_level int 管理员级别 1 – 主席
2 – 编辑
3 – 管理员
is_member int 当前用户是否该group成员 0 – 不是group的成员
1 – 是group的成员
type String 类型 group — group,
page — public page
event — event
photo String group图片
photo_medium String group图片,中尺寸
photo_big String group图片,大尺寸
city WAPlace 城市
country WAPlace 国家
place WAPlace 地址
description String group描述
wiki_page String wiki地址
members_count int 成员数
can_post int 是否可以发布文章 0 – 不可以发布
1 – 可以发布
can_see_all_post int 是否可见所有文章 0 – 不可见
1 – 可见
activity String Activity
status String 状态
contacts String 联系信息
platform String 平台

7.3.2 查询当前应用关联的Group

一个应用只能关联一个Group,通过以下接口可以查询当前应用关联的Group详细信息:

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y Activity对象
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持VK平台
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义
callback WACallback<WAGroupResult> N 回调方法,结果返回 结果实体类WAGroupResult中含有Group数据Map对象,Group数据实体类为WAGroup

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

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y Activity对象
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持VK平台
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义
callback WACallback<WAGroupResult> N 回调方法,结果返回 结果实体类WAGroupResult中含有Group数据Map对象,Group数据实体类为WAGroup

7.3.4 查询当前用户是否Group的成员

查询当前的用户是否为指定的某个Group的成员,调用以下接口:

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y Activity对象
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持VK平台
groupId String Y Group id
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义
callback WACallback<WAGroupResult> N 回调方法,结果返回 结果实体类WAGroupResult中含有Group数据Map对象,Group数据实体类为WAGroup

7.3.5 加入Group

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

参数说明:

参数名 类型 必填 说明 备注
activity Activity Y Activity对象
platform String Y 平台类型 平台类型在WAConstants类中定义,目前支持VK平台
groupId String Y Group id
extInfo String N 额外数据信息 扩展字段,根据各个平台需要定义
callback WACallback<WAResult> N 回调方法,结果返回 返回成功的结果只代表请求发送成功,但是未必加入成功,对于封闭的和私有的Group是不能加入的

7.3.6 进入Group详情页

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

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

参数说明:

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

八.WINGSDK游戏推广

8.1 WINGSDK应用墙

8.1.1 应用墙使用

注意:此模块会对应用商店上架造成一定的风险,请酌情使用。
WINGSKD应用墙包含了应用推荐等功能。使用前必须确保手机的安全软件没有拦截该程序的悬浮窗口权限,使用调用以下接口:

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

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


注意:
1)应用墙入口悬浮按钮的生命周期依赖显示它的Activity,多个Activity中显示,需要在每个Activity中都调用一次显示悬浮按钮接口;
2)在Activity创建后只需要显示一次,Activity销毁后自动销毁在当前Activity创建的悬浮按钮,但其他Activity中显示的悬浮按钮不会消失。

8.2 推送

WINGSDK推送功能可以给客户端发送推送通知,通过简单几步配置即可使用。
温馨提示:WINGSDK当前版本的推送是基于Firebase实现,国内环境需要VPN才能使用。

8.2.1 Firebase相关配置

在Firebase后台配置后,会得到两个文件,一个是google-services.json,需要研发配置到游戏中去;另一个是Firebase服务器秘钥,需要配置到SDK后台,游戏内无需操作

8.2.1.1 新建Firebase项目

如果您还没有 Firebase 项目,请在Firebase控制台中创建一个。 如果已经有一个与您的移动应用关联的现有 Google 项目,请点击导入项目(Import Google Project)。 否则,请点击新建项目(Create New Project)。

8.2.1.2 新建应用

进入项目,新建应用,输入应用的包名称,新建应用后下载一个 google-services.json 配置文件。可以随时重新下载此文件,如果包名改变必须重新配置并且重新下载google-services.json。将下载的配置文件复制到项目模块文件夹,通常为 app/。
注:如果您有多个CPS渠道包含有已定义的不同包名称,则必须在 Firebase console 中将每个应用添加到您的项目。

8.2.1.3 在WINGSDK后台配置Firebase服务器秘钥

在WINGSDK后台应用配置中,添加Firebase服务器秘钥,打开Firebase控制台,进入项目,进入关联的应用,打开设置页面,打开云消息传递标签页面可以找到服务器秘钥。

8.2.2 推送集成配置

8.2.2.1 将WINGSDK推送模块集成到项目

添加推送模块依赖方法参考2.2 集成SDK到项目

添加依赖后,在项目(Project)的build.gradle文件中添加依赖

在项目模块(Module)的build.gradle文件中添加插件声明(将这一句添加到build.gradle文件的最低端, 没有添加推送模块的依赖,不要添加这句

8.2.2.2 获取推送消息的数据

收到推送消息后,WINGSDK将在设备通知栏显示通知,用户点击通知后打开应用程序,会将消息的数据传递给应用(例如自定义的数据),如果在应用中需要接收数据,需要实现一个BroadcastReceiver子类,并且在AndroidManifest.xml配置。当BroadcastReceiver接收到一个Action值为com.wa.sdk.push.intent.NOTIFICATION_OPENED的广播时,即收到了打开的推送消息包含的数据,数据为存放在Intent的Extras中。
说明:推送消息数据的处理非必要,如果推送消息中没有数据需要处理,可以不用配置。

数据接收BroadcastReceiver实现示例
实现一个类继承BroadcastReceiver,在onReceive方法中处理数据

在AndroidManifest.xml中配置Receiver,注意action值必须一致。

8.2.3 发送推送消息

进入WINGSDK后台消息推送页面,填写推送消息的内容,发送到已注册的设备。
说明:
1. 应用启动时Logcat日志中会打印出token,在SDK的Logcat工具的设备信息中也有token信息,如果token不为空,即说明程序已向服务器注册成功,可以接收推送消息了(SDK初始化时自动注册,无需手动调用接口)。
2. 程序卸载后,需要重新注册,覆盖安装不需要重新注册,但是有可能会出现token更新的情况。
3. 推送服务使用Firebase服务,必要时可能需要VPN。

8.3 广告

WINGSDK广告功能可以向玩家展示视频广告,可实现对观看视频广告的玩家进行奖励,提高广告的点击播放数。通过简单几步配置即可使用。

8.3.1 设置广告缓存成功回调接口

使用广告系统,必须先登录SDK,登录成功后SDK自动同步广告数据,当有新的广告数据缓存完成时,会在此回调中收到通知。

WAAdCachedCallback回调说明:

回调方法 说明 参数说明
onVideoCached(int validVideoCount) 广告缓存成功回调 当前可展示广告数

8.3.2 获取展示广告数接口

这个接口返回当前可展示的广告数量,当返回值大于1时,才能展示视频广告

8.3.3 展示视频广告接口

当用户登录SDK后,SDK自动同步广告并且缓存,缓存成功后广告才可用,有可展示广告时调用接口打开广告页面,无可用广告时返回错误。

说明:extra参数是CP自定义数据,在展示视频的回调中和通知CP后台发放奖励时,会原样返回。

WAAdCallback回调说明:

回调方法 说明 参数说明(从左往右)
onPreDisplayRewardedVideo(String campaignId, String adSetId, int rewardAmount, String rewardType, String extra) 显示视频前页面成功时回调回调 1、活动id
2、广告id
3、奖励数量
4、奖励类型(物品单位:例如金币、钻石)
5、额外数据(CP调用展示广告接口传入的自定义数据)
onDisplayRewardedVideo(String campaignId, String adSetId, int rewardAmount, String rewardType, String extra) 播放视频结束回调 1、活动id
2、广告id
3、奖励数量
4、奖励类型(物品单位:例如金币、钻石)
5、额外数据(CP调用展示广告接口传入的自定义数据)
onCancelRewardedVideo(int process, String campaignId, String adSetId, String extra) 点击关闭按钮退出后回调 1、关闭位置(0-播放视频前,1-播放视频过程中,,2-播放结束后页面)
2、活动id
3、广告id
4、额外数据
onLoadRewardedVideoFail(String campaignId, String adSetId, String extra) 加载视频失败回调(视频文件错误或者丢失) 1、活动id
2、广告id
3、额外数据(CP调用展示广告接口传入的自定义数据)
onClickRewardedVideo(String campaignId, String adSetId, int rewardAmount, String rewardType, String extra) 播放完视频点击推广信息回调 1、活动id
2、广告id
3、奖励数量
4、奖励类型(物品单位:例如金币、钻石)
5、额外数据(CP调用展示广告接口传入的自定义数据)

九、第三方配置

9.1 Google相关配置

游戏如需使用Google账号进行登录、Google商店进行支付,需要进行以下配置。 如果不需要使用Google相关功能,请忽略此章节
后台配置请参考第三方后台配置—Android版公共配置流程。

9.1.1 Google基本配置

在values/strings.xml中添加公钥字符串资源:

获取Google public key
请参考第三方后台配置—Android版1.7 获取Google Play Public Licensing Key。

在values/strings.xml中添加服务器OAuth client ID(即Google后台Web application 类型的OAuth client ID):

9.1.2 Google Game Service配置

游戏如需使用Google game service相关功能,需要进行以下配置。 如果不需要相关功能,请忽略此章节
使用Google Game Service服务,还需要在AndroidManifest.xml.xml中application标签下添加以下配置:

说明:字符资源的值是Google Game Service的APP ID,需要Google开发者控制台创建游戏服务获得。请参考第三方后台配置—Android版1.6 添加Google Game Service成就。

9.1.3 Google代码混淆配置

9.1.4 Google获取SHA-1指纹

具体配置请参考第三方后台配置—Android版1.1 配置应用程序证书指纹。

获取程序签名文件SHA-1命令如下:

其中<release_key_alias>是证书别名,<path-to-production-keystore>是证书的地址。

9.1.5 Firebase推送配置

游戏如需使用SDK消息推送功能,需要进行以下配置。 如果不需要相关功能,请忽略此章节
详情请参考8.2.1 Firebase相关配置

9.2 Facebook相关配置

游戏如需使用Facebook相关登录、社交、数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节

9.2.1 Facebook基本配置

在strings.xml中添加Facebook APPId声明:

在AndroidManifest.xml中添加配置

注意:
1、string的name必须为facebook_app_id,不可更改,值为Facebook app id
2、将FacebookContentProvider后面的${YOUR_FACEBOOK_APP_ID}替换成你的Facebook app id。获取方式请参考第三方后台配置—Android版2.1 Facebook基础配置。

9.2.2 Facebook代码混淆配置

9.2.3 Facebook登录权限对照表

权限 WAConstants中定义 类型 权限取值 说明
读取用户配置 FB_PERMISSION_PUBLIC_PROFILE read public_profile
读取好友列表 FB_PERMISSION_USER_FRIENDS read user_friends
发布权限 FB_PERMISSION_PUBLISH_ACTIONS write publish_actions 通过api层分享需要这个权限

9.2.4 Facebook获取程序签名KeyHash

使用下面代码片段获取程序签名KeyHash

9.2.5 Facebook后台新建Grap Object

具体配置请参考第三方后台配置—Android版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。

9.3 AppsFlyer相关配置

游戏如需使用Appsflyer相关数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节

9.3.1 AppsFlyer基本配置

在AndroidManifest.xml中添加以下声明

9.3.2 AppsFlyer代码混淆配置

9.3.3 AppsFlyer卸载检测配置

如果没有集成SDK的推送模块功能,需要在Firebase后台进行相关配置,参考8.2.1 Firebase相关配置,配置好后将ServerKey配置在AppsFlyer后台;如果已经集成了SDK推送模块功能,将当前应用现有的Firebase后台的ServerKey配置到AppsFlyer后台即可。AppsFlyer配置参考https://support.appsflyer.com/hc/en-us/articles/208004986-Android-Uninstall-Tracking(只需要关注将Firebase ServerKey配置到AppsFlyer后台的步骤,SDK已经实现Firebase的集成,CP无需重复集成)

9.4 Chartboost相关配置

游戏如需使用Chartboost相关数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节

9.4.1 Chartboost基本配置

在AndroidManifest.xml中application标签下添加声明

特别提醒:以上所有配置的android:name字段值都必须和文档一致,android:vlaue值由各应用申请的资源而定。

9.4.2 Chartboost代码混淆配置

9.5 VK相关配置

游戏如需使用VK相关登录、社交功能,需要进行以下配置。如果不需要相关功能,请忽略此章节

9.5.1 VK基本配置

在values/strings.xml中添加加以下字符串资源:

说明:APP_ID需要在VK的开发者管理后台创建应用后获得。

9.5.2 VK代码混淆配置

9.6 Twitter相关配置

游戏如需使用Twitter账号登录游戏,需要进行以下配置。如果不需要相关功能,请忽略此章节

9.6.1 Twitter基本配置

在AndroidManifest.xml的application标签下中添加以下配置

9.6.2 Twitter代码混淆配置

9.7 Instagram相关配置

游戏如需使用Instagram账号登录游戏,需要进行以下配置。如果不需要相关功能,请忽略此章节

9.7.1 Instagram基本配置

在AndroidManifest.xml文件的application标签下中添加以下配置

十、附录

10.1 代码说明

10.1.1 状态码说明

SDK中的状态码统一以静态变量方式封装在WACallback接口里面,如果使用到状态码,强烈建议采用静态变量的方式调用,不要直接使用数值

名称 取值 说明
CODE_SUCCESS 200 成功
CODE_ERROR 400 错误
CODE_UNAUTHERIZED 401 请求未认证:访问受限资源是缺少认证信息,或者认证未通过
CODE_FORBIDEN 403 禁止访问:由于应用上下文原因或请求端上下文的原因被禁止访问资源,例如IP限制等
CODE_NOT_FOUND 404 找不到被访问资源:接口不存在、页面不存在或对应的业务实体找不到
CODE_SERVER_ERROR 500 服务器内部故障
CODE_API_INVALID 501 所请求接口或页面未实现
CODE_SDK_APPID_INVALID 4010 无效appId: appId不存在或未开启
CODE_SIGN_ERROR 4011 无效osign:osign校验失败
CODE_REQUEST_TIME_OUT 4012 请求已过期:ots校验失败
CODE_PLATFORM_VERIFY_ERROR 4013 第三方平台验证失败
CODE_ACCOUNT_VERIFY_ERROR 4014 访客登录验证失败,登录验证失败
CODE_PLATFORM_BOUND_ALREADY 4015 用户已经绑定了这个平台的其他账户
CODE_PRE_PLATFORM_VERIFY_ERROR 4016 prePlatform验证失败
CODE_USER_NOT_FOUND 4017 用户不存在(没有找到)
CODE_ACCOUNT_BOUND_BY_OTHERS 4018 账户已经被其他用户绑定
CODE_ORDER_ID_INVALID 4019 无效orderId
CODE_ORDER_VERIFY_ERROR 4020 订单验证失败
CODE_REWARD_NOT_FOUND 4021 FB邀请奖励事件未找到奖励政策
CODE_REPEAT_CRASH_REPORT 4022 闪退发送报告重复
CODE_CHENNEL_NOT_FOUND 4023 未找到渠道信息
CODE_UNABLE_DISBAND 4024 不可以执行解绑操作
CODE_PAY_PLATFORM_CLOSED 4026 支付渠道已关闭
CODE_LOGIN_PLATFORM_CLOSED 4029 登录渠道已关闭
CODE_AD_NOT_CONFIG 4044 CP关闭广告开关或未配置广告奖励信息
CODE_AD_NOT_FOUND 4045 查找不到广告展示信息
CODE_CHANNEL_BALANCE_INSUFFICIENT 4046 第三方平台余额不足
CODE_CHANNEL_LOGIN_INVALID 4047 第三方平台登录过期
CODE_ACCOUNT_BIND_DISABLED 4048 账号绑定关闭(不允许绑定账号)
CODE_ACCOUNT_UNBIND_DISABLED 4049 账号解绑关闭(不允许解绑账号)
CODE_CANCELED -100 取消操作
CODE_FILE_NOT_FOUND -101 文件找不到
CODE_API_NOT_SUPPORTED -102 API不支持
CODE_SDK_UNINITIALIZED -200 SDK没有初始化
CODE_CONTENT_CAN_NOT_BE_SHARED -201 内容不可分享,一般是传入的内容为空,或者其他
CODE_NOT_LOGIN -202 没有登录
CODE_LOGIN_FAILURE -203 登录失败
CODE_NO_PERMISSION -204 登录没有获取到相应的权限
CODE_EXCEPTION -205 Facebook内部定义的错误,异常信息
CODE_FILE_SIZE_LIMIT -206 文件大小超出限制
CODE_NOT_LOGIN_WITH_PLATFORM -207 没有以平台登录
CODE_SERVER_ID_NOT_FOUND -208 ServerId没有设置
CODE_ACCOUNT_NOT_FOUND -209 账户不存在
CODE_ACCOUNT_NOT_ALLOW_UNBIND -210 账户不允许解绑
CODE_PLATFORM_ACCOUNT_NOT_MATCH -211 登录的平台账户和当前用户不匹配
CODE_GAME_USER_ID_NOT_FOUND -212 Game user id没有设置
CODE_GOOGLE_SERVICE_MISSING -301 没有安装Google服务
CODE_GOOGLE_SERVICE_UPDATING -302 Google服务正在更新中
CODE_GOOGLE_SERVICE_VERSION_UPDATE_REQUIRED -303 Google服务版本过低,需要更新
CODE_GOOGLE_SERVICE_DISABLED -304 Google服务被禁用
CODE_GOOGLE_SERVICE_INVALID -305 Google服务不可用
CODE_DEVICE_NO_SUPPORTED -401 设备不支持
CODE_NETWORK_UNAVAILABLE -402 网络不可用
CODE_PAY_SERVICE_DISCONNECTED -501 支付:服务连接中断
CODE_PAY_SERVICE_UNUSABLE -502 支付:服务不可用
CODE_PAY_ITEM_UNAVAILABLE -503 支付: 商品不可用
CODE_PAY_DEVELOPER_ERROR -504 支付:开发者错误
CODE_PAY_ITEM_ALREADY_OWNED -505 支付:已经拥有该商品(没有消耗)
CODE_PAY_ITEM_NOT_OWNED -506 支付:没有拥有该商品
CODE_PAY_WITHOUT_REPORT -507 支付:支付成功但是没有上报或者上报失败了
CODE_PAY_CHECKING_FAILED -508 支付:支付成功,但是通知后台的时候校验失败了
CODE_PAY_REORDER_TIME_LIMIT -509 支付:订单时间间隔限制(在特定的时间内重复下订单)
CODE_ACHIEVEMENT_NOT_INCREMENTAL -601 成就不是分步成就(非分不成就进行递增或设置步数时)
CODE_ACHIEVEMENT_UNKNOWN -602 成就id不存在,找不到指定成就
CODE_ACHIEVEMENT_UNLOCKED -603 成就已经解锁(尝试解锁已经被解锁的成就时)
CODE_ACHIEVEMENT_UNLOCK_FAILURE -604 成就解锁失败(解锁隐藏成就时)
CODE_GAME_NEED_SIGN -605 游戏服务已登出,需要重新登录

10.1.2 平台取值

名称 取值 备注
CHANNEL_WA WINGA WA平台,分匿名登录和应用内登录
CHANNEL_GOOGLE GOOGLE Google平台
CHANNEL_FACEBOOK FACEBOOK Facebook平台
CHANNEL_VK VK VK平台
CHANNEL_TWITTER TWITTER Twitter平台
CHANNEL_INSTAGRAM INSTAGRAM Instagram平台

10.1.3 请求类型说明

变量名 取值值 说明 备注
REQUEST_INVITE INVITE 邀请
REQUEST_REQUEST REQUEST 普通请求
REQUEST_GIFT_SEND GIFT_SEND 发送礼物 objectId不能为空
REQUEST_GIFT_ASK GIFT_ASK 索要礼物 objectId不能为空

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

10.2 事件说明

10.2.1 SDK预定义事件名

在WAEventType接口中定义

静态变量名称 事件名称 说明
INITIATED_PURCHASE ghw_initiated_purchase 点击购买
COMPLETE_PURCHASE ghw_purchase 购买完成
USER_CREATED ghw_user_create 创建角色
USER_INFO_UPDATE ghw_user_info_update 更新用户信息
IMPORT_USER ghw_user_import 导入用户
GOLD_UPDATE ghw_gold_update 消耗游戏币
TASK_UPDATE ghw_task_update 玩家任务统计
LEVEL_ACHIEVED ghw_level_achieved 等级或分数

10.2.2 SDK预定义参数名

在WAEventParameterName接口中定义

静态变量名称 参数名称 数据类型 说明
ACCOUNT_TYPE accountType String 账户类型
GENDER gender int 性别
AGE age int 年龄
SUCCESS success boolean 是否成功
TRANSACTION_ID transactionId String 交易的流水号
PAYMENT_TYPE paymentType String 支付类型
CURRENCY_TYPE currencyType String 货币类型
CURRENCY_AMOUNT currencyAmount float 现金额
VERTUAL_COIN_AMOUNT virtualCoinAmount int 虚拟货币数量
VERTUAL_COIN_CURRENCY virtualCurrency String 虚拟货币类型
IAP_ID iapId String 道具ID
IAP_NAME iapName String 道具名称
IAP_AMOUNT iapAmount int 道具数量
ITEM_NAME itemName String 游戏内虚拟物品的名称/ID
ITEM_AMOUNT itemAmount int 交易的数量
SCORE score int 得分数
PRICE price float 价格
CONTENT_TYPE contentType String 内容类型
CONTENT_ID contentId String 内容ID
QUANTITY quantity int 数量
SEARCH_STRING searchString String 搜索关键字
DESCRIPTION description String 描述
NICKNAME nickname String 昵称
VIP vip int 等级
ROLE_TYPE roleType String 角色类型
BINDED_GAME_GOLD bindGameGold int 绑定钻石
GAME_GOLD gameGold int 用户钻石数
FIGHTING fighting int 战斗力
REGISTER_TIME registerTime long 注册时间
TASK_ID taskId String 任务Id
TASK_NAME taskName String 任务名称
TASK_TYPE taskType String 任务类型
TASK_STATUS taskStatus int 任务状态:状态标识:1→领取任务,
2→开始任务,
3→待领奖(任务完成),
4→已领奖
GOLD_TYPE goldType int 货币类型
AMOUNT amount int 变更货币数
APPROACH approach String 变更途径
IS_FIRST_ENTER isFirstEnter int 是否第一次导入用户,
默认为0,
是为1
STATUS status int 状态

十一、常见问题以及解决方案

11.1 Facebook SDK更新到4.26.0后打包apk(或直接运行)出现OutOfMemoryError: GC overhead limit exceeded。

问题描述:

Facebook SDK更新到4.26.0后,打包apk或直接运行项目时失败,出现OutOfMemoryError:GC overhead limit exceeded的异常信息,如下图(可在AndroidStudio的“Messages”标签或者“Gradle Console”标签看到)
android-常见问题及解决方案

解决方案:

这个问题是升级Facebook SDK到4.26.0后,导致开发工具打包是出现内存不足的问题,解决方法如下:

在程序模块下面的build.gradle文件中,在android里面添加下面配置:

版本变更记录(FB 小游戏)

wapublisher No Comments

WingSDK-3.4.0(2022.08.30 发布)

  1. 升级Facebook instant SDK 至7.1
    2、其他内部优化

WingSDK-3.3.1(2022.07.11发布)

1、解决金额为浮点类型时候,下单失败问题
2、其他内部优化

WingSDK-3.3.0(2022.06.27发布)

1、游戏进度条优化
2、商品加载优化
3、支持setNickName接口
4、其他内部优化

WingSDK-3.2.0(2022.05.10发布)

1、增加CG短链接口
2、其他内部优化

WingSDK-3.1.0(2022.04.12发布)

1、小游戏sdk渠道归因支持
2、其他内部优化

WingSDK-3.0.1(2022.04.02发布)

  1. 获取商品列表pageSize设置为999
    2、其他内部优化

WingSDK-3.0(2022.01.13发布)

  1. 升级Facebook instant SDK 至7.0,增加排位赛、banner广告接口封装。
  2. 初始化接口优化wing.init(config),方便cp接入
    3、广告位id后台配置,cp不需要再传递 (应用-应用参数管理-FB小游戏广告ID)
    4、其他内部优化

WingSDK-2.2(2018.12.07发布)

  1. 针对Facebook 内部校验规则的优化

WingSDK-2.1(2018.08.15发布)

  1. 修复支付bug(网络异常等情况没有消耗商品时,之后就无法购买的问题)
  2. 支付状态:增加支付取消状态。
  3. 文档调整,增加对以下需求的接口调用说明:选择玩家进行游戏后,需要在Facebook Messenger中通知相关玩家(具体做法:即在chooseAsync接口的成功回调函数中调用updateAsync接口进行通知)

WingSDK-2.0(2018.06.07发布)

  1. 升级Facebook instant SDK 至6.2,增加匹配玩家、排行榜、切换游戏等接口封装。
  2. 增加支付模块,支持FB小游戏在PC和安卓端付费。
  3. 增加广告模块,支持插屏广告和视频广告。
  4. 增加账号绑定,支持将同一游戏不同端两个账号绑定在一起,在SDK层面切换绑定的账号,实现在不同平台间账号引流。

WingSDK-1.1(2018.04.26发布)

  • 变更如下:对接文档
    1、升级Facebook instant SDK 至6.1
    2、增加通过测试设备控制LOG 展示功能

WingSDK-1.0(2018.02.27发布)

  • 变更如下:对接文档
    1、产品发布
    2、包含Facebook小游戏所有功能(除广告功能外)
    3、包含wing sdk后台事件收集