WING FB小游戏SDK使用指南(v3.2.0)bak_20220627

WING FB小游戏SDK使用指南(v3.2.0)bak_20220627

wapublisher No Comments

一.简介

WING FB小游戏SDK主要是为满足Facebook Instant Game(以下称小游戏)需要,为此类游戏封装Facebook小游戏正常运行所需的功能。该SDK仅适用于Facebook小游戏。

二.Facebook小游戏概述

Facebook小游戏是Facebook推出的HTML5类型的即时游戏,这类游戏主要以体积小,启动快,可同时运行于Facebook页端,Facebook PC端和移动端Messenger,依赖于Facebook庞大的用户群体,小游戏有望迅速积累用户。

三.小游戏上架步骤

小游戏新手入门可以参照Facebook官方文档(需要授权才能浏览):https://developers.facebook.com/docs/games/instant-games
以下是小游戏快速上架简单步骤:

3.1 认证合作伙伴

2021 年 6 月 9 日后,仅经认证的合作伙伴才能在开放平台上发布游戏。其次,成为认证合作伙伴后,必须提交所有新游戏》必须以供质量审核
参考链接 : https://developers.facebook.com/docs/games/onboarding/instant-games

3.2 开发小游戏

WING FB小游戏SDK为了方便cp接入,已经做了封装。接入步骤:
1、集成WING FB小游戏SDK 参考 如何集成
2、初始化 参考初始化
3、加载游戏进度。如游戏较大,可以调用完wing.fbinstant.setLoadingProgress()后,游戏再加载自己的进度条 报告游戏的初始加载进
4、游戏自己逻辑

注:根据Facebook打包要求,根目录要有index.html以及fbapp-config.json文件。压缩后大小不超过200M。
可参考WING FB小游戏SDK demo:
https://github.com/ghw-wingsdk/wing-fbinstant/archive/refs/tags/v3.2.0.zip

3.3 Facebook后台配置小游戏

请参考以下文档进行配置:
第三方后台配置-Facebook小游戏

在Facebook应用管理后台创建应用->小游戏,输入名字等信息。
打开刚创建的facebook应用后台,商品->添加商品->小游戏,点击设置,填写该产品必填信息,如下图所示:

图片1
图片1

配置好Instant Games之后,还需要添加配置‘网页托管’,如下图:
图片2

3.4 测试游戏

配置好后便可以测试游戏了,测试游戏可以先在本地服务器运行,参考链接:
https://developers.facebook.com/docs/games/instant-games/test-publish-share
中的Testing the game from a local server部分。

本地测试完成后可以上传小游戏到Facebook后台进行托管,在上面提到的‘网页托管’中上传。小游戏上传成功后把状态改成‘推到生产’,测试人员便可在Messenger,手机和pc浏览器或者facebook app中进行测试。
图片2

3.5 发布游戏

在内部测试结束后便可提交Facebook审核上线了,如下图,提交的过程需要按照要求配置好相关信息。

图片3

四.SDK功能简介

WING FB小游戏SDK主要包括以下模块:

4.1.玩家模块

用于获取玩家基本信息、设置获取储存的游戏数据、匹配玩家、获取排行榜信息等功能。

4.3.环境模块

用于邀请其他玩家、分享游戏信息及获取当前游戏唯一标志、切换到指定环境、切换到其它游戏等功能。

4.4.支付模块

提供获取商品列表及支付功能。

4.5.公共模块

用于获取玩家语言、平台、小游戏版本、设置游戏载入进度、开始游戏、设置玩家等级、 服务区服、游戏用户ID、置顶游戏等功能。

4.6.数据收集模块

数据收集模块提供了数据收集的接口,并发到Facebook后台以及WINGSDK后台。数据收集包含了丰富的应用内的事件类型,还支持用户自定义事件类型。

4.7.广告模块

接入Facebook广告系统,获取facebook后台配置的广告并展示。

4.8.排位赛模块

有用于获取新玩家,玩家可以分享自己游戏中的排行榜,提示好友加入挑战赛,并发布自己的比赛分数进行排行

4.9.调试模块

开启调试模式我们将会打印所有SDK在运行过程中的LOG,方便在集成阶段检查。同时我们提供一个可视化的图标及页面,方便在手机端也能查看log日志。

五.集成WING FB小游戏SDK

5.1.适用范围

该SDK适用于Facebook小游戏。Facebook小游戏可以运行于移动端messenger app、Facebook app、手机和pc浏览器、Facebook app等环境中。

5.2.如何集成

WING FB小游戏SDK推荐使用标签方式引入JS,同时也支持AMD、CommonJS等方式引入。

注:第二行引用的注释不需要打开。

5.3.接口说明

此章节结合Facebook小游戏SDK对接文档来看会更清晰:
https://developers.facebook.com/docs/games/instant-games/sdk/fbinstant7.0

注意:如无特别说明,本文档接口的回调方法中的对象形式如下:
{ code:成功或失败代码, message:相关提示消息, data:具体数据};

5.3.1.初始化

5.3.1.1.初始化

接口名称:wing.init(config);
接口说明:WING SDK在使用前需要调用此接口设置初始化参数,并完成登录操作
参数说明:

参数名 类型 必填 说明 备注
appId String Y WING SDK应用ID
appKey String Y WING SDK应用密钥
sdkType String Y WING SDK类型 WING小游戏SDK必须输入fbinstant
platform String Y WING SDK平台 WING小游戏SDK必须输入fbinstant

示例:
//初始化数据

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 若执行成功返回值为一个对象{“playerID”:”小游戏玩家ID”,”signature”:”fb hmac签名信息”}
userId Number Y WINGSDK用户Id
token String Y WINGSDK用户token

5.3.1.2.调试

通过在WING SDK 管理后台 设置》测试设备 中添加设备ID 到测试设备列表,可打开LOG 日志。

5.3.2.玩家模块

1.获取玩家ID

接口名称:wing.fbinstant.getPlayerID()
接口说明:获取facebook小游戏玩家ID

参数:无
示例:

2.获取获取玩家的唯一标识和签名

接口名称:wing.fbinstant.getSignedPlayerInfoAsync()
接口说明:异步获取小游戏唯一标识和签名

参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 若执行成功返回值为一个对象{“playerID”:”小游戏玩家ID”,”signature”:”fb hmac签名信息”}

3.获取经本地化显示的玩家姓名

接口名称:wing.fbinstant.getName()
参数说明:无
示例 :

4.获取玩家公开头像的网址

接口名称:wing.fbinstant.getPhoto()
参数说明:无
示例 :

5.设置要保存到指定云存储的当前玩家的数据, 对于每个独立玩家,游戏最多可存储 1MB 的数据。

接口名称:wing.fbinstant.setDataAsync()
接口说明:设置要保存到指定云存储的当前玩家的数据, 对于每个独立玩家,游戏最多可存储 1MB 的数据。
参数说明:

参数名 类型 必填 说明 备注
data String Y 用于参与签名的字符串
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述

6.从指定的云存储中检索当前玩家的数据

接口名称:wing.fbinstant.getDataAsync()
参数说明:

参数名 类型 必填 说明 备注
data String Y 用于参与签名的字符串
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 返回之前保存的象,如:{“test1”:[“hello”],”test2″:”world”}

8.立即将玩家数据的任何更改刷新到指定的云存储中

接口名称:wing.fbinstant.flushDataAsync()
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述

11.提取 ConnectedPlayer对象的数组,这些对象包含与当前玩家关联的玩家的信息

接口名称:wing.fbinstant.getConnectedPlayersAsync()
接口说明:提取 ConnectedPlayer对象的数组,这些对象包含与当前玩家关联的玩家的信息
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 返回关联的所有玩家列表,如::[{“$ConnectedPlayer1”:{“id”:”玩家ID”,”name”:”玩家名字”,”photo”:”玩家头像URL”}}]

12.检查当前玩家是否可以使用匹配玩家接口

接口名称:wing.fbinstant.checkCanPlayerMatchAsync(object)
接口说明:可以使用该接口来寻找陌生人组群来玩游戏。此接口一般与wing.fbinstant.matchPlayerAsync(object)接口成对使用并且比后者先调用。
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述

13.匹配玩家

接口名称:wing.fbinstant.matchPlayerAsync(object)
接口说明:匹配成功后创建一个新的messager组,玩家转移到该小组中。该接口需要和与接口wing.fbinstant.checkCanPlayerMatchAsync(object)联合使用。
参数说明:

参数名 类型 必填 说明 备注
matchTag String,只能是字母、数字和下划线,长度不超过100个字符 N 用来匹配玩家的关键字,如果传了该值,则只有完全匹配的情况下才会匹配到玩家。比如cp可以传输玩家的等级作为关键字。
switchContextWhenMatched Boolean N 在匹配上玩家之后是否立即切换。默认是False(即需要玩家手动点击按钮才切换)
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 若执行成功返回值为一个对象,包含以下信息
contextId String Y 新的环境Id

14.获取游戏排行榜

接口名称:wing.fbinstant.getLeaderboardAsync(object)
接口说明:使用该接口可以获取到当前游戏的排行榜。前提是排行榜需先在Facebook后台配置好,玩家在玩游戏的过程中把相应的分数记录到排行榜中。
参数说明:

参数名 类型 必填 说明 备注
name String Y 排行榜名称,从Facebook后台获取,固定名称已经废弃,现在全部为非固定名称,非固定名称包括了ContextId,需要在多玩家游戏环境中获取到,如好友分享后打开,获取方式为wing.fbinstant.getContextID()。如后台配置的排行榜名字为RankingList2.context_id 如,获取到的ContextId为 7549070311769805,则拼接的name为RankingList2.7549070311769805。(排行榜需要在Facebook后台配置好,参考:https://developers.facebook.com/docs/games/instant-games/guides/using-leaderboards)
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 若执行成功返回值为一个Promise对象,包含以下信息
Leaderboard Facebook Object Y 排行榜对象Promise,该对象包含以下方法(具体也可以参考https://developers.facebook.com/docs/games/instant-games/sdk/fbinstant6.2#leaderboard)
getName() function Y 返回排行榜的名称
getContextID() function Y 返回排行榜的contextId,此值依赖于Facebook后台对该排行榜的设置,如果排行榜不是社交排行榜,则此值为null
getEntryCountAsync() function Y 返回一个Promise对象,其中number为排行榜中玩家数量,获取该number可以使用如下类似的方法:leaderboard.getEntryCountAsync().then(function(number){console.log(count);})
setScoreAsync() function Y 重要,设置玩家分数。如果玩家已经存在分数,则分数需要高于前面的分数才可以设置成功。如果排行榜是社交排行榜,则玩家需要在对应的多玩家游戏组中才可以设置,次函数包括两个参数:score: number型,指玩家的分数,必须是64位整型数字extraData: string型,和分数相关的额外数据,必须小于2KB。设置完成之后返回Promise,LeaderboardEntry具体信息请看下面表格。
getPlayerEntryAsync() function Y 返回Promise,如果还没有调用setScoreAsync()方法设置过则返回null
getEntriesAsync() function Y 返回当前排行榜玩家列表,值为Promise<Array>,该函数有两个参数:count: number类型,需要获取到的玩家的数量,默认是10;目前,最多可以获取100个玩家;offset: number类型,从哪个位置开始获取玩家。
getConnectedPlayerEntriesAsync() function Y 获取和当前玩家相关联的玩家列表(包含当前玩家),值为Promise<Array>,该函数有两个参数:count: number类型,需要获取到的玩家的数量,默认是10;目前,最多可以获取100个玩家;offset: number类型,从哪个位置开始获取玩家。
Leaderboard Facebook Object Y 排行榜中某个排行对象,包括名次,分数,玩家等信息。该对象包含以下方法(具体也可以参考https://developers.facebook.com/docs/games/instant-games/sdk/fbinstant6.2#leaderboardentry)
getScore() function Y 返回当前排行的分数,number类型,示例:leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getScore()); // 9001 });
getFormattedScore () function Y 返回当前排行的格式化分数,string类型,示例:leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getFormattedScore()); // '90.01 eters' });
getTimestamp() function Y 返回当前排行上次更新的时间,number类型
getRank() function Y 返回当前排行对应的玩家在排行榜中的排名,number类型
getExtraData() function Y 返回当前排行设置的额外数据,如果没有设置,则返回null;有的话返回string类型数据
getPlayer() function Y 返回当前排行对应的玩家。LeaderboardPlayer类型,该对象包括以下几个方法:getName():返回玩家名称;getPhoto():返回玩家头像url;getID(): 返回玩家游戏唯一id

15.检查是否能订阅游戏消息助手

接口名称:wing.fbinstant.canSubscribeBotAsync (object)
接口说明:游戏智能助手会自动相应某些操作,一般与接口wing.fbinstant.subscribeBotAsync (object)成对使用 建议在过了新手后进行调用。
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

16.玩家订阅游戏消息助手 (强烈建议接入)

接口名称:wing.fbinstant.subscribeBotAsync (object)
接口说明:此接口必须在接口wing.fbinstant.canSubscribeBotAsync(object)被调用之后回调结果成功才可使用。建议在游戏初始化完成后调用。
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.4.环境模块

5.3.4.1.当前游戏环境的唯一标识

接口名称:wing.fbinstant.getContextID()
参数说明:

示例:

5.3.4.2.当前游戏环境的类型

接口名称:wing.fbinstant.getContextType()
参数说明:

示例:

5.3.4.3.确定加入当前游戏环境的玩家数量是否在给定的最小值和最大值之间

接口名称:wing.fbinstant.isSizeBetween()
参数说明:

参数名 类型 必填 说明 备注
data JSON对象, 包含一个key为data的对象 Y answer: true/false ; minSize为最小值,maxSize为最大值 返回值示例:{answer: true, minSize: 3, maxSize: 5}/{answer: false, minSize: 5, maxSize: 7}/null|返回值:对象,有值时包含answer,minSize,maxSize属性,也可以为null,如上表说明和备注

示例:

5.3.4.4.请求切换到指定环境

接口名称:wing.fbinstant.switchAsync()
接口说明:使用此接口可以在不同玩家环境中切换
参数说明:

参数名 类型 必填 说明 备注
data String字符串 Y 目标游戏环境的唯一标识(ContextID)
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.4.5.为玩家打开一个环境选择对话框, 邀请好友进行游戏。邀请后在调用wing.fbinstant.updateAsync()接口,可在message上通知相关玩家

接口名称:wing.fbinstant.chooseAsync()
参数说明:

参数名 类型 必填 说明 备注
data JSON对象 Y 此参数将影响Facebook邀请对话框的具体显示。如无特别需要,传空对象{}即可。 包含三个属性:filters,maxSize,minSize,具体含义请参考Facebook接口说明文档
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.4.6.尝试在指定玩家和当前玩家之间创建环境或切换环境

接口名称:wing.fbinstant.createAsync()
参数说明:

参数名 类型 必填 说明 备注
data String字符串 Y 将要创建的玩家的playerID
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.4.7.获取#contextplayer 对象的数组

接口名称:wing.fbinstant.getPlayersAsync()
接口说明:获取#contextplayer 对象的数组,其中包含与当前环境相关的活跃玩家(在过去90天内玩过游戏的用户)的信息。这可能包含当前玩家。
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法 返回结果对象示例,data中包含用户playerID和名称:{“code”:200,”message”:”success”,”data”:[{“id”:”1752494051481434”,”name”:”Huang Zping”},“id”:”1597817306960808”,”name”:”huang ping”}]}
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.4.8.在不同的游戏之间切换

接口名称:wing.fbinstant.switchGameAsync(object)
参数说明:

参数名 类型 必填 说明 备注
appId String N 要切换的目标游戏的appId,目标游戏需要是同一个Business Manager下面的游戏。关于Business Manager,可以参考https://developers.facebook.com/docs/apps/business-manager#update-business.
extraData Object N 额外数据,该data值可以传到目标游戏的entry point数据中,通过接口wing.fbinstant.getEntryPointData()可以获取到
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述

5.3.5.支付模块

5.3.5.1.检查支付环境是否已经可用

接口名称:wing.fbinstant.payOnReady(callbackFunction)
参数说明:

参数名 类型 必填 说明 备注
无参数名 回调函数 Y 支付可用时会回调次方法

示例:

返回结果参数说明:void

5.3.5.2.获取商品列表

接口名称:wing.fbinstant.queryProducts (object)
接口说明:此接口获取到的商品列表是wingsdk后台配置的商品列表,wingsdk后台需要配置好wingsdk商品与Facebook商品之间的映射,购买时只需要传wingsdk的商品Id即可。
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 若执行成功返回值为一个对象,包含以下信息
key String Y 值为productList
productList Object Y 数组对象
title String N 商品名称
productId String Y wingsdk商品Id
description String N 商品描述
imageURI String N 商品图标
price String Y 商品价格
priceCurrencyCode String n 商品价格对应币种

返回结果示例:

5.3.5.3.支付

接口名称:wing.fbinstant.pay(object)
参数说明:

参数名 类型 必填 说明 备注
productId String Y wingsdk商品Id
payload String N 额外信息,该信息会在支付成功后原样通知到CP服务器,CP用于检验,参考格式: { “deliverUrl”:” http://game.com/deliver.do”, “otherInfo”:”otherInfo”,“merId”:””}
success JavaScript方法 Y 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法
cancel JavaScript方法 N 执行取消回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
data Object N 若执行成功返回值为一个对象,包含以下信息
orderId String N 订单Id
productId String Y 商品Id
amount String Y 支付金额
currency String n 支付币种

返回结果示例:

对于支付,接口的一般使用流程是:首先检查支付环境是否可用,可用的情况下查询商品获取商品列表,自行渲染商品列表页面,玩家选择商品(传入商品Id)进行购买。

5.3.6.广告模块

5.3.6.1.缓存插屏广告

接口名称: wing.fbinstant.getInterstitialAdAsync()
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.6.2.播放插屏广告

接口名称: wing.fbinstant.showInterstitialAdAsync()
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.6.3.缓存奖励视频广告

接口名称: wing.fbinstant.getRewardedVideoAsync()
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.6.4.播放奖励视频广告

接口名称: wing.fbinstant.showRewardedVideoAsync()
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.6.5.展示banner广告

接口名称: wing.fbinstant.showBannerAdAsync()
参数说明:
|参数名|类型|必填|说明|备注|
|—|—|—|—|—|
|success|JavaScript方法|N|执行成功回调方法||
|fail|JavaScript方法|N|执行失败回调方法||
示例:

5.3.6.6.隐藏banner广告

接口名称: wing.fbinstant.hideBannerAdAsync()
参数说明:
|参数名|类型|必填|说明|备注|
|—|—|—|—|—|
|success|JavaScript方法|N|执行成功回调方法||
|fail|JavaScript方法|N|执行失败回调方法||
示例:

5.3.7.数据收集模块

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

1. 以上流程图中涉及到的几个接口是有时序要求的,请参考流程图中的逻辑步骤进行设置:setServerId、setGameUserId、setLevel、ghw_user_import事件、ghw_user_create事件
2. 其它的事件如ghw_level_achieved、ghw_user_info_update、ghw_gold_update等请根据对应业务逻辑,在对应业务发生时调用接口发送。

序号 事件(接口)名称 事件描述 事件作用 建议触发点 备注
1 setServerId 设置服务器ID 标记玩家当前所在的服务器,后台根据该字段统计每个服务器的数据 登录游戏服成功后
2 setGameUserId 设置玩家角色ID 标记玩家当前的游戏角色ID,后台根据该字段统计玩家的数据 登录游戏服成功后
3 setLevel 设置玩家当前等级 标记玩家当前的游戏角色等级 玩家等级发生变更后,如登录游戏服成功后、玩家完成升级后
4 ghw_user_import 玩家登录游戏服 记录玩家登录游戏服的动作,后台根据该事件统计导入数、登录数、导入留存等数据 玩家登录游戏服成功后 需要先调用setServerId、setGameUserId接口
5 ghw_user_create 玩家创建角色 记录玩家创建角色的动作,后台根据该事件统计创角数 玩家创建角色成功后 需要先调用setServerId、setGameUserId、setLevel接口
6 ghw_user_info_update 更新玩家信息 更新玩家信息,后台根据此字段更新玩家昵称、VIP等级等信息 玩家信息发送变化时,如玩家改名成功后、玩家VIP等级发生变更
7 ghw_level_achieved 更新玩家等级 更新玩家等级,后台根据此字段更新玩家等级 玩家达到新的等级时 需要先调用setLevel接口更新玩家等级
8 ghw_gold_update 更新玩家货币状况 更新玩家货币数量,后台根据此字段更新玩家当前的货币数量 玩家货币数量发生变化时,如充值到账、消耗游戏币等

小游戏SDK会把事件同时发送到Facebook与WINGSDK后台。

5.3.7.1.事件发送(同时发送WINGSDK与Facebook)

此方式需要构造json对象作为参数。
接口名称:wing.fbinstant.logEvent()
参数说明:

参数名 类型 必填 说明 备注
data JSON对象 Y eventName: 事件名称,字符串类型。必须为 2 到 40 个字符, 且只能包含“”、“-”、“ ”和字母数字字符。valueToSum: 数字(可选),利用此参数来计算总和。Parameters: 对象(可选),最多可包含 25 个要与事件一同记录的键值对。键必须为 2 到 40 个字符, 且只能包含“”、“-”、“ ”和 字母数字字符。值的长度必须小于 100 个字符。

示例:

5.3.7.2.预定义事件

小游戏SDK包括了以下预定义事件。

5.3.7.2.1. ghw_initiated_purchase点击购买(虚拟货币)

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

5.3.7.2.2. ghw_purchase购买完成(虚拟货币)

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

参数名 类型 说明 必填 备注
itemName String 游戏内虚拟物品的名称/ID Y
itemAmount number 交易的数量 Y
price number 交易的总价 Y
5.3.7.2.3. ghw_level_achieved 等级增长事件

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

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

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

5.3.7.2.4. ghw_user_create 创建角色

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

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

说明:更新用户资料

参数名 类型 说明 必填 备注
roleType String 角色类型 N
nickname String 昵称 N
vip number 等级 N
status number 状态 N 状态标识
-1: 锁定,
1:未锁定
5.3.7.2.6 ghw_gold_update货币状况更新

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

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

说明:玩家任务信息统计

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

说明:导入用户事件,玩家第一次进某个服时调用

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

注意:发送ghw_user_import事件前需调用wing.fbinstant.setServerId()接口更新服务器id以及wing.fbinstant.setGameUserId()接口更新游戏用户id

5.3.8.事件名与事件参数

以下是SDK内部预定义事件名与事件参数。

5.3.8.1 事件名

以下是SDK预定义事件名。

事件名称 说明 备注
ghw_initiated_purchase 点击购买 发送该事件前必须调用wing.fbinstant.setLevel()方法设置等级
ghw_purchase 购买完成 发送该事件必须要设置itemName,itemAmount,price和level参数或调用wing.fbinstant.setLevel()方法
ghw_user_create 创建角色 发送该事件前必须调用wing.fbinstant.setLevel()方法设置等级
ghw_initiated_purchase 点击购买 必须要设置nickName, registerTime参数,可以有选择的设置roleType, gender, vip, status,bindGameGold,gameGold,fighting等参数
ghw_user_info_update 更新用户信息 可以有选择的设置roleType, nickname参数
ghw_user_import 用户导入 必须要设置isFirstEnter
ghw_gold_update 消耗游戏币 必须要设置goldType, approach, amount可以有选择的设置currentAmount参数
ghw_task_update 玩家任务统计 必须要设置taskId, taskName, taskType, taskStatus参数
ghw_level_achieved 等级或分数 必须要提前调用wing.fbinstant.setLevel()方法必须要设置score, fighting参数
ghw_self_ 用于自定义事件 必须带前缀ghw_self_,后面拼接自定义事件名称

5.3.8.2 事件参数

以下是SDK预定义事件的参数。

参考值 数据类型 说明
itemName string 游戏内虚拟物品的名称/ID
itemAmount number 交易的数量
taskId string 任务ID
taskName string 任务名称
level number 级别或分数
gender number 性别, 0 女 1 男 2 未知
nickname string 昵称
vip number 等级
status number 状态标识 -1: 锁定,1:未锁定
bindGameGold number 绑定钻石
gameGold number 用户钻石数
fighting number 战斗力
price number 价格
registerTime number 注册时间戳,单位为毫秒(1970以后)
roleType string 角色类型
isFirstEnter number 是否第一次导入用户,0:否, 1:是 默认为0
goldType number 货币类型 钻石,绑定钻石,金币,军魂等。预定义有1和2:1→游戏货币;2→游戏绑定货币
approach string 变更途径,开通VIP、任务获得、公会贡献、解锁背包等
amount number 变更货币数, 消耗用负数表示,获取用正数表示
currentAmount number 是否第一次导入用户,0:否, 1:是 默认为0
isFirstEnter number 用户变更以后该种货币的数量
taskType string 任务类型
taskStatus number 任务状态:状态标识:1→领取任务,2→开始任务,3→待领奖(任务完成),4→已领奖
score number 得分数

5.3.8 公共模块块

1.当前的语言设置

接口名称:wing.fbinstant.getLocale()

参数说明:无
示例:

2.当前运行游戏的平台

接口名称:wing.fbinstant.getPlatform()
接口说明:该接口可能返回的值有:(“IOS” | “ANDROID” | “WEB” | “MOBILE_WEB”)
参数说明:无
示例:

3.报告游戏的初始加载进度(此函数Facebook要求调用,见本文后面的发布检查表)

接口名称:wing.fbinstant.setLoadingProgress(value);

参数说明:value, 0~100
示例:

4.返回与启动游戏的入口点相关的任何数据对象

接口名称:wing.fbinstant.getEntryPointData()
接口说明:游戏的入口可能是另外一个游戏,比如接口wing.fbinstant.switchGameAsync(object),该接口在原游戏中传入一些参数给目标游戏,在原游戏中启动目标游戏,目标游戏变可以获取到这些参数。

参数说明:无
示例:

返回值示例:{“myReplayData”:”…”}

5.返回启动游戏的入口点

接口名称:wing.fbinstant.getEntryPointAsync()
接口说明:调用该接口可以获取到游戏是从什么地方进来,已知的值目前有game_switch(游戏切换启动)、other(本地调试启动)、game_composer(pc版messenger中启动)、games_hub(客户端messenger中启动)等,可以参考官方相关说明:https://developers.facebook.com/docs/games/instant-games/guides/analytics

参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法 返回值示例:{“code”:200,”message”:”success”,”data”:”admin_message”}
fail JavaScript方法 N 执行失败回调方法

示例:

6.为当前环境设置与单个游戏会话相关的数据

接口名称:wing.fbinstant.setSessionData()

参数说明:

参数名 类型 必填 说明 备注
data JSON对象 Y 保存的会话数据, 转变为字符串后,必须小于 或等于 1000 个字符

示例:

7.开始游戏

接口名称:wing.fbinstant.startGameAsync()
接口说明:此接口应在初始化接口调用成功后尽早调用(表示游戏已完成初始加载, 并准备就绪可以开始游戏)

参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

8.分享

接口名称:wing.fbinstant.shareAsync()

参数说明:

参数名 类型 必填 说明 备注
data JSON对象 Y 示例:{ “intent”: “SHARE”,“image”: “图片base64转码”,“text”: “X is asking for your help!”,“data”: {“myReplayData”: “…”}}
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

9.更新游戏内容

接口名称:wing.fbinstant.updateAsync()
接口说明:一般调用此接口后,Facebook会在Messenger中通知对应的玩家。
这些更新也可能触发向玩家发送通知。这些更新可以用于从一个玩家那里广播游戏中的重大事件,作为回合提醒,以提示其他玩家进行他们的回合,或发送邀请与他人一起玩。
参数说明:

参数名 类型 必填 说明 备注
data JSON对象 Y 示例:{action: ‘CUSTOM’,cta: ‘Join The Fight’,image: base64Picture,text: {default: ‘Let us play game together’,localizations: {en_US: ‘Let us play game together’,zh_CN: ‘来玩游戏吧伙计!’,}} template: ‘VILLAGE_INVASION’, data: { myReplayData: ‘…’ }, strategy: ‘IMMEDIATE’, notification: ‘NO_PUSH’,}
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

10.退出游戏

接口名称:wing.fbinstant.quit()
参数说明:无
示例:

11.设置发生暂停事件时将触发的回调

接口名称:wing.fbinstant.onPause()
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

12.设置游戏用户id

接口名称:wing.fbinstant.setGameUserId()

参数说明:

参数名 类型 必填 说明 备注
gameUserId String字符串 Y 游戏玩家ID

示例:

13.设置服务器id

接口名称:wing.fbinstant.setServerId()

参数说明:

参数名 类型 必填 说明 备注
serverId String字符串 Y 区服ID

示例:

14.设置等级

接口名称:wing.fbinstant.setLevel()

参数说明:

参数名 类型 必填 说明 备注
level Number Y 等级

示例:

15.判断玩家是否可以置顶游戏/创建快捷方式

接口名称:wing.fbinstant.canCreateShortcutAsync(object)
接口说明:
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

16.提示玩家置顶游戏/创建快捷方式(强烈建议接入)

接口名称:wing.fbinstant.createShortcutAsync(object)
接口说明:置顶游戏。为了方便玩家快捷启动游戏,facebook提供快捷启动游戏接口:在iOS、android web端表现为提示是否需要游戏置顶,在Android facebook app上表现为在主屏幕创建快捷方式,在iOS Facebook app上则无表现。建议在游戏过了新手后进行调用。此接口必须在接口wing.fbinstant.canCreateShortcutAsync(object)被调用之后回调结果成功才可使用,且调用太频繁将无法弹出游戏置顶弹框
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

17.邀请好友进行游戏

接口名称:wing.fbinstant.inviteAsync()
接口说明: 邀请好友去玩游戏,可邀请多个好友,邀请后相应玩家即会收到message消息提醒。

参数名 类型 必填 说明 备注
image String Y Base64图片
text String JSON对象 Y 标题,支持多语言设置,多语言支持时,传递对象。|
data JSON对象 Y 额外数据,其他玩家通过分享进入游戏后,通过接口wing.fbinstant.getEntryPointData()可以获取到 保存的会话数据, 转变为字符串后,必须小于 或等于 1000 个字符
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.8. 排位赛模块

5.3.8.1.创建排位赛

接口名称: wing.fbinstant.tournamentCreateAsync(obj)
接口说明:
参数说明:

参数名 类型 必填 说明 备注
initialScore Number Y 当前比赛首次得分
data Object Y 附加数据块 字符串化时必须小于或等于1000个字符
config Object N 配置参数
config.title String N 比赛标题
config.image String N 比赛图片 base64编码
config.sortOrder String N 比赛中的分数拍下方式 HIGHER_IS_BETTER、LOWER_IS_BETTER 默认为HIGHER_IS_BETTER
config.scoreFormat String N 比赛中分数类型 NUMERIC or TIME 默认为NUMERIC
config.endtime Number N 输入设置自定义结束时间,unix时间戳 不设,默认一周后结束
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.8.2.提交排位赛分数

接口名称: wing.fbinstant.tournamentPostScoreAsync(obj)
接口说明: 进行排位赛结束后,可以进行分数提交
参数说明:

参数名 类型 必填 说明 备注
data Number Y 一回合比赛后的分数
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.8.3. 分享排位赛

接口名称:wing.fbinstant.tournamentShareAsync(obj)
参数说明:

参数名 类型 必填 说明 备注
score Number Y 玩家最后的分数
data Object Y 附加数据块 字符串化时必须小于或等于1000个字符
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.8.4. 获取当前排位赛信息

接口名称: wing.fbinstant.getTournamentAsync(obj)
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.8.5. 加入排位赛

接口名称: wing.fbinstant.tournamentJoinAsync(obj)
参数说明:

参数名 类型 必填 说明 备注
data String Y 排位赛id
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.8.6. 获取排位赛列表

接口说明:返回一个可在游戏中出现的符合条件的比赛列表,包括1)玩家已经创建的比赛;2)玩家参与其中;3)玩家的好友(获得许可的)也参与其中
接口名称: wing.fbinstant.getTournamentsAsync(obj)
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

5.3.9 绑定CG短链

5.3.9.1 检测是否可以绑定CG平台短链接口

接口说明:检测是否可以获取绑定CG平台短链
接口名称: wing.fbinstant.canGetBindAccountUrl()
返回结果:BOOL

示例:

5.3.9.2 获取绑定CG平台短链接口

接口说明:获取绑定CG平台短链接口,需要先检测能够获取的情况下,才能调用
接口名称: wing.fbinstant.getBindAccountUrl(obj)
参数说明:

参数名 类型 必填 说明 备注
success JavaScript方法 N 执行成功回调方法
fail JavaScript方法 N 执行失败回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code Number Y 见代码说明
message String Y 结果描述
cgUrl String Y CG平台短链url

六.状态码

本SDK接口调用状态码如下:

状态码 说明
200 操作成功
400 操作失败

七.参考

Facebook小游戏说明文档:
https://developers.facebook.com/docs/games/onboarding/instant-games

Facebook官方接口对接文档:
https://developers.facebook.com/docs/games/instant-games/sdk/fbinstant7.0

Facebook小游戏发布检查表:
https://developers.facebook.com/docs/games/instant-games/getting-started/launch-checklist

第三方后台配置—iOS版

wapublisher No Comments

一、Apple后台应用配置

1.1 Apple基础配置

确保游戏的GameCenter启用

D6F557FE464D52234455EE4F21921732

获取应用Apple ID,如果使用到appsflyer渠道,应用未发布情况下在appsflyer渠道新建应用要用到此id。如果应用已经发布,则要使用到该应用在app store上的地址。
apple-基础配置
apple-基础配置

1.2 添加Apple商品信息

可以参考官方文档
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnectInAppPurchase_Guide/Chapters/Introduction.html#//apple_ref/doc/uid/TP40013727-CH1-SW1

1.3 添加Apple测试用户

向测试人员索取测试账号,添加到iTunes Connect中,具体可参考:
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/SettingUpUserAccounts.html#//apple_ref/doc/uid/TP40011225-CH25-SW10 的 To create a new sandbox tester account部分
iOS-Apple基础配置
截图如下:
1、登录iTunes connect 选择用户和职能
iOS-Apple基础配置

2、进入用户和职能页面,选择沙箱技术测试员Tab标签,新建一个测试账号
iOS-Apple基础配置

添加沙箱技术测试者

iOS-Apple基础配置

截图可能会过时,以官方说明为准

1.4 消息推送

消息推送证书配置请参考Apple官方文档
https://developer.apple.com/cn/help/account

1.5 Sign in with Apple配置

参考苹果官网地址:

https://help.apple.com/developer-account/?lang=en#/devde676e696

1、 登录苹果开发者后台https://developer.apple.com/account
2、 选择Identifiers,找到对应app的identifer,如com.wing.sdkcn.lpw

Sign in with Apple配置

3、 点击对应identifer,进入App Id 配置界面,找到并勾选 Sign In with Apple,点击保存
Sign in with Apple配置

4、 然后点击 右上角 save 保存会出现 Modify App Capabilities 弹窗 点击 Confirm

Sign in with Apple配置

注:开启后 profile 将失效需要重新编辑 profile 文件给开发(即开发使用的开发证书、发布证书需要重新获取,并给到开发)

5、开发打开xcode工程,选择TARGETS–Signing&Capabilites-+Capability,弹出列表中,选择Sign in with Apple即可

Sign in with Apple配置

Sign in with Apple配置

6、开发使用步骤4新生成的签名文件,打包即可测试Sign in with Apple 登录

1.6 Sign in with Apple账号删除参数获取

1、苹果应用私钥&&私钥标识

登录苹果管理后台,找到Keys栏目,点击添加按钮

图片20

然后输入Key name,选择Sign in with Apple,点击右侧配置

图片20

选择对应应用的ID,然后点击Save
图片20

图片20

点击Register

图片20

点击Download,下载格式为.p8文件,保存。
图片20

WechatIMG775

其中Key ID 为私钥标识,copy保存。

打开下载的私钥文件,格式如下:
图片20

需要去除图中标记红色内容(—–BEGIN PRIVATE KEY—–、—–END PRIVATE KEY—–、换行)

如得到苹果应用私钥如下:
MIGTAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBHkwdwIBAQQgqrI54XKpKJW+JExnKZGdsa1LJ4pFPnyngbQjF+iHvZigCgYIKoZIzj0DAQehRANCAAT8kn1iPsR5COAruk/IiklsS9xzeRf7nfpcE7bn/Susrckpi+EDKdGmD6BOyKT+0OkpEDubkUaHlsyVM140A7fX

2、苹果账号TeamId

登录苹果管理后台,打开Account下的Membership模块,找到Team ID

图片20

1.7 Apple开发账号后台创建新应用



登录苹果管理后台,打开Certificates, Identifiers & Profiles模块
选择Identifiers,点击+号

图片20

选择App IDs,点击继续

图片20

选择App 类型,点击继续

图片20

填写描述以及Bundle ID,点击继续

图片20

点击Register按钮

图片20

此时,bundleid已经创建完成,接下来,需要创建打包需要的iOS App Development、Ad Hoc、App Store对应的证书文件。

Development:开发证书
Ad Hoc :打包证书,打包后只能安装到注册设备上
App Store :appstore证书,上线appstore打包证书

图片20

选择Profiles,点击+

图片20

选择iOS App Development,点击继续

图片20

选择刚才创建的buildid,点击继续

图片20

选择Select All,点击继续

图片20

选择Select All,点击继续

图片20

创建开发证书名字,点击Generate

图片20

点击Download
图片20

到此,则开发证书创建完成。创建Ad Hoc 、App store证书,步骤一致。完成后,需要把3个文件给到研发。

1.8 配置App Store 服务器通知


登录appstoreconnect后台,打开app选项,找到对应项目,然后在App信息-App Store 服务器通知,选择生产环境服务器URL,点击设置URL,其他URL规则如下

国外应用:https://api.wingsdk.com/sdkapi/v1/pay/apple_refund/{sdkAppId}.do
国内应用: https://api.wingsdk.cn/sdkapi/v1/pay/apple_refund/{sdkAppId}.do

然后选择版本1,然后保存

WechatIMG682

WechatIMG685

1.9 gamecenter权限设置

背景:从2023年8月16日开始,提供Game Center功能的新应用和应用更新需要包含Game Center授权,并在app Store Connect中配置Game Center功能,然后才能将其提交到app Store。App Store上现有的应用不受这一新要求的影响。

1.9.1 appstoreconnect 配置

登录appstoreconnect后台,选择对应用-要提交审核的版本,确保CameCenter 已开启。如已开启,则可忽略。如没有开启,点击开启,如下图
WechatIMG813

1.9.2 开发者后台配置

登录开发者后台 在Identifiers中,选择对应的应用的标识并点击开始编辑,选中 Game Center ,然后保存。如已开启,则可忽略

WechatIMG808

WechatIMG809

然后重新生成开发、生产证书给到研发。

1.9.3 Xcode配置

在TARGETS中,选中对应target,然后点击+Capability,选择Game Center,然后添加。查看项目名.emtitlements文件,确保内部已经添加了Game Center。如已添加,则可忽略

WechatIMG812

WechatIMG810

WechatIMG811

二、Facebook第三方后台配置

2.1 Facebook基础配置

  1. 请参考android的facebook登录配置
    与Android设置不同在“2. 添加Bundle ID”

向开发人员索取Bundle ID,设置到
图片20

2.facebook 应用面板->设置->基本->iOS->网址格式后缀(非必填)
url

2.5 Facebook添加开发者

请参考android的配置Facebook添加开发者

三、VK后台应用配置

请参考android部分的VK后台应用设置

四、Twitter后台应用配置

请参考android部分的Twitter后台应用设置

五、Instagram后台应用配置

请参考android部分的Instagram后台应用设置

六、智能客服 AIHelp后台应用配置

请参考android部分的智能客服 AIHelp后台应用设置

七、Firebase后台应用配置

7.1 现有Firebase添加应用

在浏览器中打开Firebase控制台点击添加已经在Google API存在的项目

1、点击项目进入详情,点击添加应用按钮

图片36

2、输入软件信息,bundle id,程序名字、appstoreID
图片36

3、然后点击注册应用,下载google配置文件放置项目根目录。

图片36

4、接下的步骤可以一直点击到下一步,直到项目创建完成。

图片36

7.2 现有项目获取配置文件(iOS)

登录firbase 管理后台,选择现有项目—设置—常规—您的应用,找到对应应用,下载最新的配置文件。

图片36

八、AppsFlyer后台应用配置

8.1 获取AppsFlyer的DevKey

在浏览器中打开appsflyer管理后台找到配置-应用配置-SDK验证下的Dev key(同一个账号下,所有应用的Dev key是相同的)

WechatIMG774

九、AbMob后台应用配置

参考 AdMob后台配置

WINGPLUS H5 SDK使用指南(v3.10.0)bak_20220623

wapublisher No Comments

一.简介

WINGPLUS H5 SDK主要是为满足HTML5类型游戏以及微端游戏需要,为此类游戏提供登录、支付、数据收集等通用功能。该SDK同时封装了H5SDK以及微端js SDK,不但适用于pc端与移动端的浏览器,facebook的gameroom,同样适用于客户端如android和iOS中的webview调用原生功能。只需对接一套SDK,无需判断运行环境,SDK内部已做处理。
注:本文所提到的H5端是指运行在pc端或移动端的H5类型的游戏或应用,而微端是指在android或iOS客户端中的webview里面运行的H5类型的游戏或应用。

二.功能简介

2.1.登录

SDK提供了有界面登录方式和无界面登录方式。有界面方式内置所有已经集成的登录方式,无需编写登录界面就可以集成多种登录方式。而无界面方式则需要CP提供相对应的登录界面来调用具体登录方式。
目前WINGPLUS H5 SDK 支持的登录方式如下表所示:

端类型 功能 支持渠道
H5端 无界面登录与有界面登录方式 Guest、Facebook、Google、应用内登录
微端(android) 同上 Google、Guest、Facebook
微端(iOS) 同上 Apple、Guest、Facebook

2.2.支付

各端支持的支付情况如下表所示:

端类型 功能 支持渠道
H5端 支付:支付是否可用,获取商品列表、购买商品等 Facebook、Web支付(Paypal、MOL、Xsolla等)
微端(android) 同上 Google
微端(iOS) 同上 Apple

2.3.账号绑定

在使用同一个第三方账号在不同端(pc浏览器、手机浏览器或者微端)登录同一款游戏时由于获取到的第三方账号信息不一致,可能会出现多个游戏角色的情况。为了在一个端找回另一个端的角色,达到引流的目的,我们推出了账号绑定功能。玩家可以将两个不同端的游戏角色进行绑定并灵活切换。此功能目前同时适用于H5端和微端。

2.4.数据收集

数据收集模块提供了数据收集的接口,多渠道灵活调用。数据收集包含了丰富的应用内的事件类型,还支持用户自定义事件类型。
各端支持的数据收集情况如下表所示:

端类型 功能 支持渠道
H5端 发送预定义事件及自定义事件 WING、Facebook
微端(android) 同上 WING、Appsflyer
微端(iOS) 同上 WING、Appsflyer

2.5.调试模式

调试模式提供窗口查看日志,帮助开发者更快的集成SDK与定位相关的开发问题。
各端支持的调试模式情况如下表所示:

端类型 开启调试模式方法
H5端 在WINGSDK后台添加测试设备
微端(android) 调用本文档的setDebugMode接口
微端(iOS) 调用本文档的setDebugMode接口

2.6 隐私政策

为了遵守欧盟近日发布的用户隐私政策,WINGSDK在用户首次登录时会显示用户隐私政策相关说明,用户需要同意才能进行下一步操作,在首次登录之后不会再出现此页面。此功能由WINGSDK内部处理,CP无需对接任何接口。

三.集成WINGPLUS H5 SDK

3.1.适用范围

WINGPLUS H5 SDK适用于HTML5类型的游戏或应用,比如在Facebook上线的页游,或者是同时拥有页游又有微端,而页游与微端功能有些功能不大相同但代码只有一套的游戏(比如支付,微端比H5端多了google/apple支付;而数据收集,微端比H5端多了appsflyer等渠道)。
WINGPLUS H5 SDK为这些游戏提供登录、支付、账号绑定、数据收集等基础功能,同时提供调试窗口,满足游戏能顺利运行的基本功能需求,更多的功能目前还在持续开发中。

3.2.如何集成

WINGPLUS H5 SDK推荐使用标签方式引入JS,同时也支持AMD、CommonJS等方式引入。

3.3.接口说明

以下是WINGPLUS H5 SDK各个接口的具体使用说明。

3.3.1.初始化

初始化方法:

初始化sdk库,在调用其他方法前,必须先调用此方法。

参数说明:

参数名 类型 必填 说明
appId string Y 应用ID
appKey string Y 应用秘钥
sdkType string N sdk类型:html5

示例:

3.3.2.登录

3.3.2.1.用户登录

方法:wingplus.user.login(paramObj);

说明:该方法分为不弹出窗口(明确指定了platform)和弹出窗口方式(platform不传值则弹出登录方式选择框)

参数说明:

参数名 类型 必填 说明
platform string N 见代码说明
success Object N 成功回调方法
fail Object N 失败回调方法
cancel Object N 取消回调方法

示例:

返回结果参数说明:

参数名 类型 必填 说明
code number Y 见代码说明
msg string Y 结果描述
platform string Y 见代码说明
userId number Y 用户ID
token string Y 用户token
puserId string N 平台用户ID

注:
1:platform 字段不传入时,将获取该应用可用的登录方式,用窗口展示给用户选择;
2:platform字段传入具体平台值时,不再弹出登录方式选择框,直接跳到对应的登录方式
3:针对Facebook Canvas游戏,sdk内部会根据游戏(Facebook后台的配置,参考第三方后台配置文档)链接中的from=fbcanvas参数来判断是否是Facebook Canvas游戏,调用方不需要设置platform参数

3.3.2.4.用户登出

方法:wingplus.user.logout();
说明:该方法是用来登出wingsdk的,此操作会删除sdk内部的一些缓存、登出第三方账号(如果可用)等。
参数:无
返回结果:无

3.3.3.支付

3.3.3.1.判断支付是否可用

方法:wingplus.pay.isPayServiceAvailable(callback);
参数说明:

参数名 类型 必填 说明
callback Object Y 回调函数,返回boolean结果

3.3.3.2.获取商品列表

方法:wingplus.pay.getProducts();

参数说明:

参数名 类型 必填 说明
success Object N 成功回调函数
fail Object N 失败回调函数
cancel Object N 取消回调函数

返回结果参数说明:

参数名 类型 必填 说明
code number Y 见代码说明
msg string Y 结果描述
productList Object N 数组对象,获取到商品列表时不为空,包含以下属性
productId string Y 商品Id,购买时需要用到
productName number Y 商品名称
productDesc string N 商品描述
gameCurrencyAmount number N 该商品对应的游戏币数量(目前iOS不可用)

示例:

3.3.3.3.购买商品

方法:wingplus.pay.pay(params);

参数说明:

参数名 类型 必填 说明
channel string N 见支付类型对照表,目前仅H5端有效。channel字段为可选字段,传入该值则直接使用对应支付方式,不弹出支付方式选择窗口,否则弹出所有支付方式选择窗口。目前Facebook Cavas(Facebook页游)中有自动检测机制,可以不传该值,会默认直接使用Facebook支付,不弹出支付方式选择窗口
productId string Y 产品ID
extInfo string N CP 扩展信息字段,限长512(JSON格式),WING服务器到CP服务器发货通知时原样返回给CP。如果CP的通知发货地址是动态变化的(比如每个服务区的地址都不一致),可以通过此字段设置:参数格式为标准JSON,参数名为 deliverUrl,参考格式{ “deliverUrl”:” http://game.com/deliver.do”, “otherInfo”:”otherInfo”,“merId”:””}merId字段(选填),收款商户ID,使用场景:同一个支付渠道下有多个不同的收款验证信息(或收款帐号)。如果是 APPLE支付渠道,merId使用客户端bundleId
success Object Y 必选,支付成功回调函数
fail Object N 可选,支付失败回调函数
cancel Object N 可选,支付取消回调函数

返回结果参数说明:

参数名 类型 必填 说明
code number Y 见代码说明
msg string Y 结果描述
amount string Y 不为空,商品ID,支付金额
currency string Y 不为空,支付币种
quantity number Y 不为空,购买数量,目前一般都是1
platform string N 可能为空,只适用于微端,支付渠道
orderId string N 可能为空,只适用于微端,订单Id
productId string N 可能为空,只适用于微端,商品Id
payment_id string N 可能为空,只适用于H5端的FACEBOOK支付渠道
request_id string N 可能为空,只适用于H5端的FACEBOOK支付渠道
signed_request string N 可能为空,只适用于H5端的FACEBOOK支付渠道
status string N 可能为空,只适用于H5端的FACEBOOK支付渠道

示例:

注:
1:对于网页支付方式如Paypal等,支付后在弹出窗口关闭时回调,result不返回数据
2:对于Facebook支付,支付完成后,result返回Facebook所有数据
如:

3.3.4.账号绑定

3.3.4.1.绑定

方法:wingplus.bind.bindModal(paramsObj);
说明:调用绑定界面,显示绑定Token,及绑定操作
参数说明:

参数名 类型 必填 说明
success Object Y 必选,成功回调函数
fail Object N 可选,失败回调函数

示例:

3.3.4.2.解绑

方法:wingplus.bind.unbindModal(paramsObj);
说明:调用解绑界面
参数说明:

参数名 类型 必填 说明
success Object Y 必选,成功回调函数
fail Object N 可选,失败回调函数

示例:

3.3.4.3.聚合绑定与解绑

方法:wingplus.bind.binds(paramsObj);
说明:聚合了绑定与解绑功能,如果账号还未绑定则弹出绑定窗口,如果已经绑定,则弹出解绑窗口。
参数说明:

参数名 类型 必填 说明
success Object Y 必选,成功回调函数
fail Object N 可选,失败回调函数

示例:

3.3.4.4.账号切换

方法:wingplus.bind.switchModal(paramsObj);
说明:调用切换界面
参数说明:

参数名 类型 必填 说明
success Object Y 必选,成功回调函数
fail Object N 可选,失败回调函数

示例:

3.3.5.公共参数设置

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

3.3.5.1.设置游戏用户id

wingplus.core.setGameUserId()

参数说明:

参数名 类型 必填 说明 备注
gameUserId string Y 游戏玩家ID

示例:

3.3.5.2.设置服务器id

wingplus.core.setServerId()

参数说明:

参数名 类型 必填 说明 备注
serverId string Y 区服ID

示例:

3.3.5.3.设置等级

wingplus.core.setLevel()

参数说明:

参数名 类型 必填 说明 备注
level number Y 等级

示例:

3.3.5.4.设置玩家昵称(目前仅微端有效)

wingplus.core.setNickname()

参数说明:

参数名 类型 必填 说明 备注
nickname string Y 昵称

示例:

3.3.5.5.展示收藏指引页(目前仅chipsgames平台中mobile端可用)

wingplus.user.showCollectGuide()

示例:

3.3.6.数据收集

使用SDK数据收集接口配合大数据平台,可以轻松统计玩家习惯以及充值等行为,为游戏的市场营销提供数据依据。
目前数据收集支持以下平台: WINGSDK,Facebook和Appsflyer(仅微端)。
WINGSDK数据收集使用在游戏的过程中打点的方式,如图所示:
图片5

1. 以上流程图中涉及到的几个接口是有时序要求的,请参考流程图中的逻辑步骤进行设置:setServerId、setGameUserId、setLevel、ghw_user_import事件、ghw_user_create事件
2. 其它的事件如ghw_level_achieved、ghw_user_info_update、ghw_gold_update等请根据对应业务逻辑,在对应业务发生时调用接口发送。

序号 事件(接口)名称 事件描述 事件作用 建议触发点 备注
1 setServerId 设置服务器ID 标记玩家当前所在的服务器,后台根据该字段统计每个服务器的数据 登录游戏服成功后
2 setGameUserId 设置玩家角色ID 标记玩家当前的游戏角色ID,后台根据该字段统计玩家的数据 登录游戏服成功后
3 setLevel 设置玩家当前等级 标记玩家当前的游戏角色等级 玩家等级发生变更后,如登录游戏服成功后、玩家完成升级后
4 ghw_user_import 玩家登录游戏服 记录玩家登录游戏服的动作,后台根据该事件统计导入数、登录数、导入留存等数据 玩家登录游戏服成功后 需要先调用setServerId、setGameUserId、setLevel接口
5 ghw_user_create 玩家创建角色 记录玩家创建角色的动作,后台根据该事件统计创角数 玩家创建角色成功后 需要先调用setServerId、setGameUserId、setLevel接口
6 ghw_user_info_update 更新玩家信息 更新玩家信息,后台根据此字段更新玩家昵称、VIP等级等信息 玩家信息发送变化时,如玩家改名成功后、玩家VIP等级发生变更
7 ghw_level_achieved 更新玩家等级 更新玩家等级,后台根据此字段更新玩家等级 玩家达到新的等级时 需要先调用setLevel接口更新玩家等级
8 ghw_gold_update 更新玩家货币状况 更新玩家货币数量,后台根据此字段更新玩家当前的货币数量 玩家货币数量发生变化时,如充值到账、消耗游戏币等

SDK内部集成多个数据收集渠道,对于同一个事件,不同的渠道对应的事件名称和参数值可能不尽相同,可以使用下面数据发送接口应对此类需求。

3.3.6.1.数据发送

方法:wingplus.track.trackEvent(WAEvent);

参数说明:

参数名 类型 必填 说明
WAEvent SDK内置对象WAEvent Y 详细查看事件对象

示例:

示例说明:setDefaultEventName方法用于设置发送事件的名称,GHW_PURCHASE为SDK定义的购买事件名称,所有SDK预定义的事件名称可以在下文的<事件常量>章节查看。

setDefaultValue为设置事件默认价值,
addDefaultEventValue为设置默认事件参数/值,其中SDK定义参数在下文<参数常量>章节可查看。
setChannelEventName为设置渠道自定义事件名称,用于发往第三方平台时更改事件命名。
setChannelEventValues为事件渠道自定义的参数/值,用于发往第三方平台时,替换默认事件参数。

3.3.6.2.预定义事件

WINGSDK包括了以下预定义事件。

3.3.6.2.1. ghw_initiated_purchase点击购买(虚拟货币)

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

3.3.6.2.2. ghw_purchase购买完成(虚拟货币)

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

参数名 类型 说明 必填 备注
itemName string 游戏内虚拟物品的名称/ID Y
itemAmount number 交易的数量 Y
price number 交易的总价 Y
3.3.6.2.3. ghw_level_achieved 等级增长事件

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

参数名 类型 说明 必填 备注
score number 账户分数 N
fighting number 战斗力 N
3.3.6.2.4. ghw_user_create 创建角色

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

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

说明:更新用户资料

参数名 类型 说明 必填 备注
roleType string 角色类型 N
nickname string 角色名(昵称) Y
vip number 等级 N
status number 状态 N 状态标识,-1: 锁定,1:未锁定
3.3.6.2.6. ghw_gold_update货币状况更新

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

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

说明:玩家任务信息统计

参数名 类型 说明 必填 备注
taskId string 任务Id Y 开通VIP、任务获得、公会贡献、解锁背包等
taskName string 任务名称 Y
taskType string 任务类型 Y
taskStatus number 任务状态 Y 状态标识:1->领取任务,2->开始任务,3->待领奖(任务完成)4->已领奖
3.3.6.2.8. ghw_user_import导入用户事件

说明:导入用户事件,玩家第一次进某个服时调用

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

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

3.3.6.3.自定义事件

自定义事件目前只支持事件名和累加值,见示例。

示例:

下面是WAEvent对象的具体说明。

3.3.6.4.事件对象

全局对象:wingplus.track.WAEvent

实例化
方法:builder()

参数:无

示例:

WAEvent对象是SDK提供的帮助类,用于封装需要SDK追踪的数据,可以使用链式调用的方式使用该对象。在使用前必须调用初始化方法builder()才能使用。下列是WAEvent剩余的所有方法,点击链接跳转到具体的方法查看说明。

序号 方法 必须 说明
1 setDefaultEventName Y 设置默认事件名称
2 setDefaultValue N 设置默认事件值
3 addDefaultEventValue N 设置一个事件参数
4 addAllDefaultEventValue N 设置多个事件参数
5 setChannelEventName N 设置渠道自定义事件名称
6 setChannelEventValues N 设置事件渠道自定义的参数/值
7 disableChannel N 禁用渠道
8 disableAllChannel N 禁用所有第三方渠道
9 getDisableChannels N 获取禁用渠道列表
10 getDefaultEventName N 获取默认事件名称
11 getDefaultValue N 获取默认事件价值
12 getDefaultEventValues N 获取默认事件参数对象
13 getChannelEventNames N 获取渠道事件名称列表(渠道-事件名称键值对)
14 getChannelEventValues N 获取渠道事件对象
15 getIsDisableAllChannel N 判断是否禁用所有其他渠道事件发送

1)设置默认事件名称
方法:setDefaultEventName(eventName)
此方法为所有渠道的单个事件设置默认事件名称,如果渠道没有单独设置则使用此默认值。

参数:

参数名 类型 必填 说明
eventName WA_EVENT_TYPE Y 事件名称

示例:

2)设置默认事件值
方法:setDefaultValue(val)
此方法为所有渠道的单个事件设置默认事件值,如果渠道没有单独设置则使用此默认值。

参数:

参数名 类型 必填 说明
val number Y 事件值,如商品价格

示例:

3)设置一个事件参数
方法:addDefaultEventValue(paramName, val)
此方法为所有渠道的单个事件设置事件参数,如果渠道没有单独设置则使用此默认参数。每次添加一个,可调用多次。

参数:

参数名 类型 必填 说明
paramName string Y 具体参数名
val all Y 具体参数值

示例:

4)设置多个事件参数
方法:addAllDefaultEventValue(obj)
此方法为所有渠道的单个事件设置事件参数,如果渠道没有单独设置则使用此默认参数。每次可添加多个,只可调用一次。

参数:

参数名 类型 必填 说明
obj JSON对象 Y 事件内容

示例:

5)设置渠道自定义事件名称,针对渠道需要设置特定的事件名称
说明:使用该方法单独为某一渠道设置事件名称,该事件名称将替换掉setDefaultEventName设置的事件名称。

方法:setChannelEventName(channelName, eventName)

参数:

参数名 类型 必填 说明
channelName string Y 平台名称
eventName string Y 事件名称

示例:

6)设置事件渠道自定义的参数/值
说明:使用该方法单独为某一渠道的某个事件设置参数值,如果不设置则使用addDefaultEventValue或addAllDefaultEventValue方法设置的默认参数。

方法:setChannelEventValues(channelName, obj)

参数:

参数名 类型 必填 说明
channelName string Y 平台名称
obj string Y 参数对象

示例:

7)禁用渠道
说明:发送某事件时,不发送该事件到指定渠道。

方法:disableChannel(channelName)

参数:

参数名 类型 必填 说明
channelName string Y 平台名称

示例:

8)禁用所有第三方渠道
说明:发送某事件时,不发送该事件到所有第三方渠道。

方法:disableAllChannel()

参数:无

示例:

9)获取事件信息方法列表
说明:使用下面方法可以获取前面方法设置的参数值。

方法 说明
getDisableChannels() 获取禁用渠道列表
getDefaultEventName() 获取默认事件名称
getDefaultValue() 获取默认事件价值
getDefaultEventValues() 获取默认事件参数对象
getChannelEventNames() 获取渠道事件名称列表(渠道-事件名称键值对)
getChannelEventValues() 获取渠道事件对象
getIsDisableAllChannel() 判断是否禁用所有其他渠道事件发送

示例:

3.3.7.调试

3.3.7.1 H5端调试模式

H5端的调试模式具体打开方式如下:
在WING SDK 管理后台 设置》测试设备 中添加设备 Client ID 到测试设备列表(如下图所示),可打开LOG 日志窗口。

添加测试设备

添加测试设备后,开发时浏览器打开开发者模式(一般浏览器快捷方式为F12),在控制台即可看到相关操作日志,开发者可以根据日志快速排查问题,提高效率。

3.3.7.2 微端调试模式

方法:wingplus.core.setDebugMode(boolean);
说明:开启/关闭微端的调试模式 (默认是关闭的)。
参数:boolean 是否为调试模式,true为调试模式,false非调试模式(默认)
返回结果:无

3.3.8.常量

以下是SDK内部预定义常量。

3.3.8.1.事件常量

以下是SDK预定义事件。

事件对象:wingplus.track.WAEvent.WA_EVENT_TYPE

事件名称对应常量:

事件名称 说明 备注
GHW_INITIATED_PURCHASE 点击购买 发送该事件前必须调用wingplus.track.setLevel方法设置等级
GHW_PURCHASE 购买完成 发送该事件必须要设置ITEM_NAME、ITEM_AMOUNT、PRICE、LEVEL参数或调用wingplus.track.setLevel方法
GHW_USER_CREATE 创建角色 必须要设置NICKNAME、REGISTER_TIME参数,可以有选择的设置ROLE_TYPE、GENDER、VIP、STATUS、BIND_GAME_GOLD、GAME_GOLD、FIGHTING等以上参数
GHW_USER_INFO_UPDATE 更新用户信息 可以有选择的设置ROLE_TYPE、NICKNAME参数
GHW_USER_IMPORT 导入用户 必须要设置IS_FIRST_ENTER
GHW_GOLD_UPDATE 消耗游戏币 必须要设置GOLD_TYPE、APPROACH、AMOUNT可以有选择的设置CURRENT_AMOUNT参数
GHW_TASK_UPDATE 玩家任务统计 必须要设置TASK_ID、TASK_NAME、TASK_TYPE、TASK_STATUS 参数
GHW_LEVEL_ACHIEVED 等级或分数 必须要提前调用wingplus.track.setLevel方法必须要设置SCORE、FIGHTING参数
GHW_SELF_ 用于自定义事件 事件名称可以为 GHW_SELF_ + 自定义字符串。如:wingplus.track.WAEvent.WA_EVENT_TYPE. GHW_SELF_+”custom_event_name”

3.3.8.2.参数常量

以下是SDK预定义事件的参数定义
参数对象:wingplus.track.WAEvent.WA_EVENT_PARAMETER_NAME

参数常量:

参数名称 说明 备注
ITEM_NAME string 游戏内虚拟物品的名称/ID
ITEM_AMOUNT number 交易的数量
TASK_ID string 任务ID
TASK_NAME string 任务名称
LEVEL number 级别或分数
GENDER number 性别, 0 女 1 男 2 未知
NICKNAME string 昵称
VIP number 等级
STATUS number 状态标识.-1: 锁定,1:未锁定
BIND_GAME_GOLD number 绑定钻石
GAME_GOLD number 用户钻石数
FIGHTING number 战斗力
PRICE number 价格
REGISTER_TIME number 注册时间戳,单位为毫秒(1970以后)
ROLE_TYPE string 角色类型
IS_FIRST_ENTER number 是否第一次导入用户,0:否, 1:是 默认为0
GOLD_TYPE number 货币类型钻石,绑定钻石,金币,军魂等。预定义有1和2:1→游戏货币;2→游戏绑定货币
APPROACH string 变更途径,开通VIP、任务获得、公会贡献、解锁背包等
AMOUNT number 变更货币数, 消耗用负数表示,获取用正数表示
CURRENT_AMOUNT number 用户变更以后该种货币的数量
TASK_TYPE string 任务类型
TASK_STATUS number 任务状态:状态标识:1→领取任务,2→开始任务,3→待领奖(任务完成),4→已领奖
SCORE number 得分数

3.3.8.3.第三方平台常量

参数对象:wingplus.track.WAEvent.TRACKING_CHANNEL

参数常量:

事件名称 说明
FB Facebook数据收集平台

四.代码说明

4.1.登录类型对照表:

平台类型 说明
GUEST 游客登录
FACEBOOK FACEBOOK平台
GOOGLE GOOGLE 平台
APPSELF 应用内登录
APPLE 苹果平台
KONGREGATE KONGREGATE平台

4.2.支付类型对照表:

支付类型 说明
FACEBOOK Facebook支付
PAYMENTWALL Paymentwall支付
BOACOMPRA Boacompra支付
MOL Mol支付
MOL_VC Mol点卡支付
XSOLLA Xsolla支付
XSOLLA_VC Xsolla 点卡支付
IPAYLINKS Ipaylinks支付
CODAPAY Codapay支付
UNIPIN UniPin支付
SAFECHARGE SafeCharge支付
GUDANGVOUCHER GudanGvoucher支付
ALIPAY 支付宝
UNIONPAY 银联
YEEPAY 易宝
PAYPAL PayPal支付

4.3.状态码

状态码 说明
200 成功
400 失败
401 请求未认证:访问受限资源是缺少认证信息,或者认证未通过
403 禁止访问:由于应用上下文原因或请求端上下文的原因被禁止访问资源,例如IP限制等
404 找不到被访问资源:接口不存在、页面不存在或对应的业务实体找不到
500 服务器内部故障
501 所请求接口或页面未实现
4010 无效appId: appId不存在或未开启
4011 无效osign:osign校验失败
4012 请求已过期:ots校验失败
4013 第三方平台验证失败
4014 访客登录验证失败,登录验证失败
4016 prePlatform验证失败
4017 用户不存在(没有找到)
4018 账户已经被其他用户绑定
4019 无效orderId
4020 订单验证失败
4022 闪退发送报告重复
4023 未找到渠道信息
4024 不可以执行解绑操作
4025 汇率转换失败
4026 支付渠道已关闭
4029 登录渠道已关闭
5001 切换到匿名
5002 facebook的objectType不能为空
5004 facebook token为空
5005 该设备不能支付或者不允许支付
5006 支付过程中出错
-100 取消操作
-200 SDK没有初始化
-202 没有登录
-203 登录失败
-204 登录没有获取到相应的权限
-211 登录的平台账户和当前用户不匹配
-401 设备不支持
-402 网络不可用
-509 支付:订单时间间隔限制(在特定的时间内重复下订单)

WINGSDK_iOS使用指南(v3.9.7)

wapublisher No Comments

WINGSDK_iOS使用指南(v3.9.7)

一、简介

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、Game Service,游戏互动更简单;
4、社区,提高玩家的积极性和互动。

1.5 应用墙模块

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

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

1.6消息推送

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

1.7 广告

WINGSDK广告功能,可以向玩家展示视频广告,并且可以实现奖励机制。

1.8 智能客服 AIHelp

WINGSDK智能客服功能,集成机器人、人工客服,FAQ等功能。

1.9隐私政策

为了遵守欧盟以及Google等第三方的一些关于用户隐私的法律法规,WINGSDK实现了一套简单的用户隐私政策流程。分为两种类型,一种是自动的,针对的是对接了登录窗口方式的CP,这种情况CP无需接入任何新的接口;一种手动的,针对的是对接了接口登录的CP,这种情况CP需要对接新的接口,具体接口参考隐私政策接口章节。

1.10 用户中心

WINGSDK用户中心功能,可以向玩家展示充值中心账号、初始密码、信息内容。

二、快速集成

2.1 环境配置要求

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

2.2 集成SDK到项目

集成步骤:
1、集成相应库到项目中 参考:2.2.1 库的引用
2、添加依赖库,以及配置 参考: 2.2.2 工程构建配置
3、修改配置文件 参考: 2.2.3 WINGSDK基本配置
4、编译正常,可继续sdk代码集成 参考: SDK初始化

建议:cp可先运行demo,看下配置以及需要引用的第三方库,再接入
集成参考demo: demo代码下载地址

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)——可选

  • WAAiHelpImpl(AiHelp) ——可选

  • WAWebPayImpl(WebPay)——可选,如果需要第三方支付则需添加此模块

  • WAFirebaseImpl(Firebase)——可选

提示:使用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 工程构建配置

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

需要引用的库:
AppTrackingTransparency.framework
libz.1.dylib
Accelerate.framework
libc++.tbd
libresolv.tbd
WebKit.framework
sqlite3

2.2.3 WINGSDK基本配置(wa_sdk.plist)

在 WASdkIntf下,以及配置文件wa_sdk_track_config.plistwa_sdk.plist,如下图。
集成SDK到项目

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

关于wa_sdk_track_config.plist详见2.6.1 配置 (wa_sdk_track_config.plist)

2.3 SDK初始化

导入头文件
#import <WASdkIntf/WASdkIntf.h>

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

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

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

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

2.4 登录

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

2.4.1 登录对话框

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

2.4.1.1 实现协议 WALoginViewDelegate

登录结果说明 WALoginResult

字段名 类型 说明 备注
message String 登录结果消息
userId String WINGSDK用户id
token String WINGSDK用户token
pUserId NSString 用户在第三方平台的Id,GUEST登录时 值与userId一致
platform String 平台类型 当前登录的平台名称
pToken NSString 第三方平台的token
isGuestAccount int 是否游客登录 0 不是游客账号 1是游客账号

3.4.1.2 调用方法

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

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

+(void)clearLoginCache;
代码示例:

2.4.1.4 隐藏登录选择框

+(void)hide;
代码示例:

2.4.2 用户登录接口

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

2.4.2.1登录接口

(1)选择登录方式

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

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

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

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

2.4.3 用户登出

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

2.5 支付

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

2.5.1 初始化

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

2.5.2 查询商品

2.5.2.1 实现协议 WAInventoryDelegate

2.5.2.2 调用方法

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

注意:这里返回的库存商品信息是WINGSDK平台的商品信息,并非第三方平台的商品信息。
建议在商品页出来之前调用,最好是sdk初始化完后就开始调用,如下

2.5.3 购买商品

2.5.3.1 实现协议 WAPaymentDelegate

支付结果说明 WAIapResult

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

注意:如果需要在订单信息中记录当前玩家昵称,需要按3.1.4 设置玩家昵称设置玩家昵称。

2.5.3.2 调用方法

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

参数说明:

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

2.5.3.3 查询商品本地价格

通过查询商品信息,可以获取库存商品的本地价格,查询商品本地价格调用接口:
+ (void)queryChannelProduct:(NSString )channel
callBackBlock:(void(^)(NSArray
channelProductsArray,NSError *error))callBackBlock

代码示例

注意:这个接口需要在查询库存商品( queryInventoryWithDelegate)成功回调后使用。
参数说明:

参数名 类型 必填 说明 备注
chanel NSString Y 渠道名称 如苹果渠道 APPLE

实体结果说明 WAChannelProduct:

字段名 类型 说明 备注
channel NSString 渠道名称 传递的channel
productIdentifiere NSString 平台商品id
localeCurrencyCode NSString 本地货币code USD 、CNY
localFormattedPrice NSString 格式化价格 $999.99 、 ¥6,498.00
price NSDecimalNumber 价格 999.99、 6498

2.5.4支付服务是否可用

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

2.6 数据收集

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

  1. 以上流程图中涉及到的几个接口是有时序要求的,请参考流程图中的逻辑步骤进行设置:setServerId、setGameUserId、setLevel、setNickname、ghw_user_import事件、ghw_user_create事件
  2. 其它的事件如ghw_level_achieved、ghw_user_info_update、ghw_gold_update等请根据对应业务逻辑,在对应业务发生时调用接口发送。
序号 事件(接口)名称 事件描述 事件作用 建议触发点 备注
1 setServerId 设置服务器ID 标记玩家当前所在的服务器,后台根据该字段统计每个服务器的数据 登录游戏服成功后
2 setGameUserId 设置玩家角色ID 标记玩家当前的游戏角色ID,后台根据该字段统计玩家的数据 登录游戏服成功后
3 setNickname 设置玩家角色昵称 标记玩家当前的游戏角色昵称,后台订单记录中会记录该昵称 登录游戏服成功后
4 setLevel 设置玩家当前等级 标记玩家当前的游戏角色等级 玩家等级发生变更后,如登录游戏服成功后、玩家完成升级后
5 ghw_user_import 玩家登录游戏服 记录玩家登录游戏服的动作,后台根据该事件统计导入数、登录数、导入留存等数据 玩家登录游戏服成功后 需要先调用setServerId、setGameUserId接口
6 ghw_user_create 玩家创建角色 记录玩家创建角色的动作,后台根据该事件统计创角数 玩家创建角色成功后 需要先调用setServerId、setGameUserId、setLevel接口
7 ghw_user_info_update 更新玩家信息 更新玩家信息,后台根据此字段更新玩家昵称、VIP等级等信息 玩家信息发送变化时,如玩家改名成功后、玩家VIP等级发生变更
8 ghw_level_achieved 更新玩家等级 更新玩家等级,后台根据此字段更新玩家等级 玩家达到新的等级时 需要先调用setLevel接口更新玩家等级
9 ghw_gold_update 更新玩家货币状况 更新玩家货币数量,后台根据此字段更新玩家当前的货币数量 玩家货币数量发生变化时,如充值到账、消耗游戏币等

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

2.6.2 调用

2.6.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

2.6.2.2 工程启动时初始化

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

2.6.2.3 调用事件进行追踪

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

2.6.2.3.1 方法一

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

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

2.6.2.3.2 方法二

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

2.6.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

2.6.2.3.2.2 关于WAEvent 实例的构建

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

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

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

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

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

各渠道事件映射对应表

(3)设置默认累加值

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

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

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

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

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

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

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

(7)渠道开关设置

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

2.6.3 预定义事件

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

2.6.3.1 WAEventUserImport

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

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

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

2.6.3.2 WAEventInitiatedPurchase

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

2.6.3.3 WAEventPurchase

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

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

2.6.3.4 WAEventLevelAchieved

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

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

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

2.6.3.5 WAEventUserCreate

说明:创建游戏角色

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

2.6.3.6 WAEventUserInfoUpdate

说明:更新用户资料

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

2.6.3.7 WAEventGoldUpdate

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

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

2.6.3.8 WAEventTaskUpdate

说明:玩家任务信息统计

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

2.6.4 自定义事件

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

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

自定义事件目前只支持事件名和累加值,见示例。
例如:

附表 2.6.1 货币标识

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

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

附表 2.6.2 渠道名称表

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

2.6.5 获取 IDFA 弹出“询问用户是否授权”适配

应苹果要求,iOS14后,获取IDFA需要授权弹框。目前sdk默认为不弹框获取用户授权。如需弹框授权,需要以下步骤
1、xcode升级到12或者以后版本
2、接入sdk3.9.1或以后版本
3、Info.plist 中新增 key Privacy – Tracking Usage Description ,value 填写使用 IDFA 原因。其中原因将展示给用户

效果如图:
图片1

2.7. 隐私政策

如果CP对接的登录方式是接口登录方式,则可以使用以下几个接口来实现隐私政策流程,具体流程可参考下图。
图片1

2.7.1 获取隐私政策url

WINGSDK有自己的隐私政策,调用以下接口获取到隐私政策url(隐私政策内容为html页面)

示例:

2.7.2 获取隐私政策更新时间

隐私政策更新需要重新显示时可以调用以下接口获取最新隐私政策更新时间,和上一次保存的时间戳作对比,从而确定是否需要展示

示例:

2.7.3 显示隐私政策详情UI

当需要显示隐私政策详情时,可以调用以下接口显示出隐私政策详情界面

示例:

三、高级功能

3.1 公共参数设置

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

3.1.1 设置服务器ID

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

3.1.2 设置用户gameUserId

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

3.1.3 设置用户等级level

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

3.1.4 设置玩家昵称

设置游戏玩家的昵称,调用接口:
[WACoreProxy setNickName:@"测试角色名称"];
注意:
1.当玩家登录、登出游戏,或修改昵称时,需要及时调用这个接口设置玩家昵称。
2.调用该接口设置昵称后,玩家进行购买时会自动记录昵称到订单信息中。

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格式字符串)

实例:

字段说明:

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

3.4.1.2 调用方法

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

代码示例:

3.4.1.3 关于绑定解绑的通知

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

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

3.4.2 绑定第三方平台账户

3.4.2.1 实现协议WAAccountBindingDelegate

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

3.4.2.2 调用方法

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

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

示例代码:

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

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

示例代码:

3.4.4 解绑第三方平台账户

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

3.4.5 切换账户

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

3.4.6 新建账户

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

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

3.4.7获取账户信息

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

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

示例代码:

3.5 应用墙模块功能

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

3.5.1 应用墙使用

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

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

[WAApwProxy showEntryFlowIcon];

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

[WAApwProxy hideEntryFlowIcon];

3.6 社交

3.6.1 分享

3.6.1.1 实现协议 WASharingDelegate

3.6.1.2 调用方法

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

参数说明:

参数名 类型 必填 说明 备注
shareContent NSObject* Y 分享内容
shareWithUI BOOL Y 是否通过UI分享 设置为YES时直接通过UI分享,有界面。设置为NO时通过API分享,没有界面。注意:目前不支持这种方式,相关权限已被facebook收回,此值只能为false
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 游戏邀请)等,发送请求调用以下接口:

参数说明:

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

示例代码:

3.6.3 游戏邀请

3.6.3.1 查询可邀请好友列表

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

代码示例:

参数说明:

参数名 类型 必填 说明 备注
block String Y 回调
platform NSString Y 平台类型 平台类型在WAConstants类中定义,目前支持VK
duration long Y 过滤时间间隔 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友

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

3.6.3.2.1 实现协议 WAGameRequestDialogDelegate

3.6.3.2.2 调用方法

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

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

3.6.3.3 邀请成功记录

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

3.6.3.4 邀请安装奖励

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

3.6.3.5 邀请事件奖励

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

代码示例:

3.6.4 社区

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

3.6.4.2 查询当前应用关联的Group

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

示例代码:

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

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

示例代码:

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

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

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

示例代码:

3.6.4.5 加入Group

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

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

示例代码:

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

示例代码:

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。
iOS——推送配置

2)APNs静默推送权限设置

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

3.7.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:调用下面代码:

3.8 越狱检测

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

3.9 广告

3.9.1 检测可播放广告数量

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

示例代码:

3.9.2 显示广告

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

示例代码:

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

示例代码:

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

3.9.5 视频广告缓存完代理

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

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

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

3.10 智能客服 AIHelp

3.10.1. 判断是否开启AiHelp

说明:该接口返回布尔值,true表示已开启,false表示未开启。在使用其他AIHELP接口前请先判断这个接口,在返回true的情况下使用。示例如下:

3.10.2. 展示WING后台配置界面

参数说明:

参数名 类型 必填 说明 备注
language String Y 语言设置 如果使用默认配置传null,比如简体中文传zh_CN。
isVip boolean Y 是否vip用户 true表示vip用户,false是非vip用户。

说明:这个接口展示的界面由WING后台中SDK客服开关配置决定。如果后台未开启客服开关,此接口不生效。同时提供了无参数的重载方法WACscProxy.openAiHelp(),表示使用默认语言设置和设置非Vip用户。

3.10.3.设置客服系统语言

示例代码:

参数说明:

参数名 类型 必填 说明 备注
language NSString Y 语言名称 语言支持如下图

语言支持列表图:
图片1

3.11 用户中心(充值中心账号信息)

3.11.1 获取用户中心数据接口

3.11.1.1实现协议WAUserCenterNoticeDelegate

WAUserCenterResult说明

字段名 类型 说明 备注
code int 状态码 参照5.1.1 状态码说明
msg string 错误信息
userCenterInfo string 用户中心文字内容
userName string 用户名
password string 初始密码 如果用户修改过密码,此字段为空

3.11.1.2 调用方法

3.11.2 显示用户中心弹窗

3.11.2.1实现协议WAUserCenterNoticeUIDelegate

1)用户中心界面关闭回调接口

2)用户中心界面错误回调接口

3.11.2.2调用方法

3.12 调用评分界面

cp可根据需求,调用appStore评分界面,调用方法

系统要求:iOS10.3及以上系统才可以调起评分界面。

3.13 账号删除

3.13.1 UI 版本

sdk内部已经完成了UI展示,以及请求接口操作,CP只需要调用即可。

类名:WAUserProxy
方法名:requestDeleteAccoutUI
返回值:callback
调用方法:WAUserProxy.requestDeleteAccoutUI

调用示例:

3.13.2 接口 版本

接口版本为,cp需要自己做UI,然后调用sdk接口进行删除操作。

3.13.2.1 第三方账号删除授权接口

描述:如果是SIGGINWITHAPPLE登录(可通过接口[WAUserProxy getCurrentLoginPlatform]获取登录方式),需要单独授权一次拿到授权信息,然后再调用请求删除账号接口,目前只支持SIGGINWITHAPPLE
类名:WAUserProxy
方法名:deleteAccounAuthorizationWithPlatform
请求参数:paltform,登录平台
调用方法:WAUserProxy.deleteAccounAuthorizationWithPlatform
调用示例:

WADeleteRequestModel说明

字段名 类型 说明 备注
deletePlatform string 删除平台(Facebook,Apple)
deleteToken string 删除平台accessToken

3.13.2.2 请求删除账号接口

类名:WAUserProxy
方法名:requestDeleteAccout
请求参数:(WADeleteRequestModel*)deleteResult,如无则传递nil。此参数通过调用第三方账号删除授权接口回掉获取。如signinwithappie需要传递此参数
返回值:callback
调用方法:WAUserProxy.requestDeleteAccout
调用示例:

3.13.2.2 取消删除账号接口

类名:WAUserProxy
方法名:cancelRequestDeleteAccoutWithUserid
返回值:callback
调用方法:WAUserProxy.cancelRequestDeleteAccoutWithUserid
调用示例:

四、第三方配置

4.1 Facebook相关配置

4.1.1 Facebook基本配置

游戏如需使用Facebook相关登录、社交、数据收集功能,需要进行以下配置。如果不需要相关功能,请忽略此章节
具体配置请参考第三方后台配置—iOS版 二、Facebook第三方登录后台配置
1、在facebook开发者平台创建一个Facebook应用,创建完之后会生成App ID和App Secret
这里的App ID要配置在项目当中,作为客户端与后台服务器连接的标识
iOS-Facebook基本配置
iOS-Facebook基本配置

注:从3.9.7版本开始,需要配置FacebookClientToken,获取方式:设置-高级-客户端口令

2、在Xcode中配置相应的信息,主要是在info.plist文件中配置URL Schemes、FacebookAppID、FacebookDisplayName、FacebookClientToken。注意一定要对应到facebook后台该App的App ID和Display Name、FacebookClientToken。参考步骤1的截图。

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

(2)Whitelist Facebook Apps

4.1.2 Facebook登录权限对照表

权限 类型 权限取值 说明
读取用户配置 string public_profile
读取好友列表 string user_friends

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消息推送

c) 导出App推送证书p12文件,进入appsflyer后台–配置-应用配置-卸载模块
上传p12证书与密码,点击验证。开启卸载衡量开关
图片1

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。
iOS-VK配置1
iOS-VK配置2

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

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,作为客户端与后台服务器连接的标识。
iOS-Instagram配置
可复制下面代码到info.plist中在修改为对应clientId、clientSecret和redirectUri

4.8 智能客服 AIHelp 相关配置

如果不需要AiHelp 功能,请忽略此章节
具体配置请参考WINGSDK第三方后台配置-智能客服 AIHelp 相关章节

4.8.1 在AiHelp开发者平台创建一个AiHelp应用,创建完之后会生成appId、domain和appSecret(appKey)

图片27
可复制下面代码到info.plist中在修改为对应appId、domain和appSecret(appKey)

注:从3.9.7版本开始,项目中的domain如果为gamehollywoodhk@aihelp.net,接入新版本后,可能后闪退,需要把domain的@改成.
如 gamehollywoodhk.aihelp.net

4.8.2 配置权限

Privacy – Photo Library Additions Usage Description

4.9 Firebase相关配置

如果不需要Firebase 功能,请忽略此章节
具体配置请参考WINGSDK第三方后台配置-Firebase相关章节

4.9.1 接入

1、引入WAFirebaseImpl库到项目
2、引用GoogleService-Info.plist配置文件到项目中
图片27

Firebase SDK会自动收集事件,详情请参考:Firebase自动收集事件
完成以上两个步骤,即完成Firebase 模块的接入工作

4.9.2 调试

firebase analytics调试方法
1、在xcode中,选择Product > Scheme > Edit scheme…
2、在左侧菜单选择Run
3、选择Arguments 项
4、在Arguments Passed On Launch区域,添加-FIRAnalyticsDebugEnabled
图片27
5、运行项目后,登录firebase 管理后台,项目—分析—DebugView模块,可查看到调试设备上传事件
图片27

五、附录

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 账号解绑关闭
WACodeUserCenterClosed 4059 用户中心未开启
WACodeCanNotSwitchToAnonymous 5001 切换到匿名
WACodeFbObjectType 5002 facebook的objectType不能为空
WACodeFbGiftListRequestPrameterLack 5003 请求gift列表缺少appid,appSecret,objectType参数
WACodeFbTokenNull 5004 facebook token为空
WACodeCanNotMakePayment 5005 该设备不能支付或者不允许支付
WACodePaymentError 5006 支付过程中出错
WACodeCancelled -100 取消操作
WACodeSdkUninitialized -200 SDK没有初始化
WACodeContentCanNotBeShared -201 内容不可分享,一般是传入的内容为空,或者其他
WACodeNotLogin -202 没有登录
WACodeLoginFailure -203 登录失败
WACodeNoPermission -204 登录没有获取到相应的权限
WACodeFileSizeLimit -206 文件大小超出限制
WACodeCurrentIDNotMatch -211 登录的平台账户和当前用户不匹配
WACodeDeviceNotSupported -401 设备不支持
WACodeNetworkUnavailable -402 网络不可用
WACodePayReOrderTimeLimit -509 支付:订单时间间隔限制(在特定的时间内重复下订单)

5.1.2 平台取值

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

5.1.3 请求类型说明

取值值 说明 备注
INVITE 邀请
REQUEST 普通请求

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

5.2 事件说明

5.2.1 SDK 预定义事件名

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

5.2.2 SDK 预定义参数名

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

WINGSDK_iOS使用指南(v3.9.5)

wapublisher No Comments

一、简介

1.1 用户模块

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

1.1.1 登录弹窗

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

1.1.2 匿名登录

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

1.1.3 第三方平台登录

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

1.1.4 内置账户管理界面

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

1.1.5 账号绑定与解绑

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

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

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

1.1.6 账号切换

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

1.2 支付模块

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

1.3 数据收集模块

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

1.4 社交模块

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

1.5 应用墙模块

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

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

1.6消息推送

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

1.7 广告

WINGSDK广告功能,可以向玩家展示视频广告,并且可以实现奖励机制。

1.8 智能客服 AIHelp

WINGSDK智能客服功能,集成机器人、人工客服,FAQ等功能。

1.9隐私政策

为了遵守欧盟以及Google等第三方的一些关于用户隐私的法律法规,WINGSDK实现了一套简单的用户隐私政策流程。分为两种类型,一种是自动的,针对的是对接了登录窗口方式的CP,这种情况CP无需接入任何新的接口;一种手动的,针对的是对接了接口登录的CP,这种情况CP需要对接新的接口,具体接口参考隐私政策接口章节。

1.10 用户中心

WINGSDK用户中心功能,可以向玩家展示充值中心账号、初始密码、信息内容。

二、快速集成

2.1 环境配置要求

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

2.2 集成SDK到项目

集成步骤:
1、集成相应库到项目中 参考:2.2.1 库的引用
2、添加依赖库,以及配置 参考: 2.2.2 工程构建配置
3、修改配置文件 参考: 2.2.3 WINGSDK基本配置
4、编译正常,可继续sdk代码集成 参考: SDK初始化

建议:cp可先运行demo,看下配置以及需要引用的第三方库,再接入
集成参考demo: demo代码下载地址

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)——可选

  • WAAiHelpImpl(AiHelp) ——可选

  • WAWebPayImpl(WebPay)——可选,如果需要第三方支付则需添加此模块

  • WAFirebaseImpl(Firebase)——可选

提示:使用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 工程构建配置

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

需要引用的库:
AppTrackingTransparency.framework
libz.1.dylib
Accelerate.framework
libc++.tbd
libresolv.tbd
WebKit.framework
sqlite3

2.2.3 WINGSDK基本配置(wa_sdk.plist)

在 WASdkIntf下,以及配置文件wa_sdk_track_config.plistwa_sdk.plist,如下图。
集成SDK到项目

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

关于wa_sdk_track_config.plist详见2.6.1 配置 (wa_sdk_track_config.plist)

2.3 SDK初始化

导入头文件
#import <WASdkIntf/WASdkIntf.h>

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

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

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

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

2.4 登录

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

2.4.1 登录对话框

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

2.4.1.1 实现协议 WALoginViewDelegate

登录结果说明 WALoginResult

字段名 类型 说明 备注
message String 登录结果消息
userId String WINGSDK用户id
token String WINGSDK用户token
pUserId NSString 用户在第三方平台的Id,GUEST登录时 值与userId一致
platform String 平台类型 当前登录的平台名称
pToken NSString 第三方平台的token
isGuestAccount int 是否游客登录 0 不是游客账号 1是游客账号

3.4.1.2 调用方法

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

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

+(void)clearLoginCache;
代码示例:

2.4.1.4 隐藏登录选择框

+(void)hide;
代码示例:

2.4.2 用户登录接口

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

2.4.2.1登录接口

(1)选择登录方式

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

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

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

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

2.4.3 用户登出

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

2.5 支付

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

2.5.1 初始化

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

2.5.2 查询商品

2.5.2.1 实现协议 WAInventoryDelegate

2.5.2.2 调用方法

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

注意:这里返回的库存商品信息是WINGSDK平台的商品信息,并非第三方平台的商品信息。
建议在商品页出来之前调用,最好是sdk初始化完后就开始调用,如下

2.5.3 购买商品

2.5.3.1 实现协议 WAPaymentDelegate

支付结果说明 WAIapResult

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

注意:如果需要在订单信息中记录当前玩家昵称,需要按3.1.4 设置玩家昵称设置玩家昵称。

2.5.3.2 调用方法

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

参数说明:

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

2.5.3.3 查询商品本地价格

通过查询商品信息,可以获取库存商品的本地价格,查询商品本地价格调用接口:
+ (void)queryChannelProduct:(NSString )channel
callBackBlock:(void(^)(NSArray
channelProductsArray,NSError *error))callBackBlock

代码示例

注意:这个接口需要在查询库存商品( queryInventoryWithDelegate)成功回调后使用。
参数说明:

参数名 类型 必填 说明 备注
chanel NSString Y 渠道名称 如苹果渠道 APPLE

实体结果说明 WAChannelProduct:

字段名 类型 说明 备注
channel NSString 渠道名称 传递的channel
productIdentifiere NSString 平台商品id
localeCurrencyCode NSString 本地货币code USD 、CNY
localFormattedPrice NSString 格式化价格 $999.99 、 ¥6,498.00
price NSDecimalNumber 价格 999.99、 6498

2.5.4支付服务是否可用

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

2.6 数据收集

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

  1. 以上流程图中涉及到的几个接口是有时序要求的,请参考流程图中的逻辑步骤进行设置:setServerId、setGameUserId、setLevel、setNickname、ghw_user_import事件、ghw_user_create事件
  2. 其它的事件如ghw_level_achieved、ghw_user_info_update、ghw_gold_update等请根据对应业务逻辑,在对应业务发生时调用接口发送。
序号 事件(接口)名称 事件描述 事件作用 建议触发点 备注
1 setServerId 设置服务器ID 标记玩家当前所在的服务器,后台根据该字段统计每个服务器的数据 登录游戏服成功后
2 setGameUserId 设置玩家角色ID 标记玩家当前的游戏角色ID,后台根据该字段统计玩家的数据 登录游戏服成功后
3 setNickname 设置玩家角色昵称 标记玩家当前的游戏角色昵称,后台订单记录中会记录该昵称 登录游戏服成功后
4 setLevel 设置玩家当前等级 标记玩家当前的游戏角色等级 玩家等级发生变更后,如登录游戏服成功后、玩家完成升级后
5 ghw_user_import 玩家登录游戏服 记录玩家登录游戏服的动作,后台根据该事件统计导入数、登录数、导入留存等数据 玩家登录游戏服成功后 需要先调用setServerId、setGameUserId接口
6 ghw_user_create 玩家创建角色 记录玩家创建角色的动作,后台根据该事件统计创角数 玩家创建角色成功后 需要先调用setServerId、setGameUserId、setLevel接口
7 ghw_user_info_update 更新玩家信息 更新玩家信息,后台根据此字段更新玩家昵称、VIP等级等信息 玩家信息发送变化时,如玩家改名成功后、玩家VIP等级发生变更
8 ghw_level_achieved 更新玩家等级 更新玩家等级,后台根据此字段更新玩家等级 玩家达到新的等级时 需要先调用setLevel接口更新玩家等级
9 ghw_gold_update 更新玩家货币状况 更新玩家货币数量,后台根据此字段更新玩家当前的货币数量 玩家货币数量发生变化时,如充值到账、消耗游戏币等

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

2.6.2 调用

2.6.2.1 导入头文件

#import <WASdkIntf/WASdkIntf.h>

2.6.2.2 工程启动时初始化

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

2.6.2.3 调用事件进行追踪

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

2.6.2.3.1 方法一

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

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

2.6.2.3.2 方法二

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

2.6.2.3.2.1 调用示例

步骤一 构建WAEvent实例

步骤二 发送数据:

2.6.2.3.2.2 关于WAEvent 实例的构建

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

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

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

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

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

各渠道事件映射对应表

(3)设置默认累加值

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

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

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

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

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

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

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

(7)渠道开关设置

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

2.6.3 预定义事件

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

2.6.3.1 WAEventUserImport

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

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

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

2.6.3.2 WAEventInitiatedPurchase

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

2.6.3.3 WAEventPurchase

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

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

2.6.3.4 WAEventLevelAchieved

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

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

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

2.6.3.5 WAEventUserCreate

说明:创建游戏角色

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

2.6.3.6 WAEventUserInfoUpdate

说明:更新用户资料

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

2.6.3.7 WAEventGoldUpdate

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

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

2.6.3.8 WAEventTaskUpdate

说明:玩家任务信息统计

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

2.6.4 自定义事件

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

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

自定义事件目前只支持事件名和累加值,见示例。
例如:

附表 2.6.1 货币标识

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

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

附表 2.6.2 渠道名称表

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

2.6.5 获取 IDFA 弹出“询问用户是否授权”适配

应苹果要求,iOS14后,获取IDFA需要授权弹框。目前sdk默认为不弹框获取用户授权。如需弹框授权,需要以下步骤
1、xcode升级到12或者以后版本
2、接入sdk3.9.1或以后版本
3、Info.plist 中新增 key Privacy – Tracking Usage Description ,value 填写使用 IDFA 原因。其中原因将展示给用户

效果如图:
图片1

2.7. 隐私政策

如果CP对接的登录方式是接口登录方式,则可以使用以下几个接口来实现隐私政策流程,具体流程可参考下图。
图片1

2.7.1 获取隐私政策url

WINGSDK有自己的隐私政策,调用以下接口获取到隐私政策url(隐私政策内容为html页面)

示例:

2.7.2 获取隐私政策更新时间

隐私政策更新需要重新显示时可以调用以下接口获取最新隐私政策更新时间,和上一次保存的时间戳作对比,从而确定是否需要展示

示例:

2.7.3 显示隐私政策详情UI

当需要显示隐私政策详情时,可以调用以下接口显示出隐私政策详情界面

示例:

三、高级功能

3.1 公共参数设置

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

3.1.1 设置服务器ID

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

3.1.2 设置用户gameUserId

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

3.1.3 设置用户等级level

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

3.1.4 设置玩家昵称

设置游戏玩家的昵称,调用接口:
[WACoreProxy setNickName:@"测试角色名称"];
注意:
1.当玩家登录、登出游戏,或修改昵称时,需要及时调用这个接口设置玩家昵称。
2.调用该接口设置昵称后,玩家进行购买时会自动记录昵称到订单信息中。

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格式字符串)

实例:

字段说明:

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

3.4.1.2 调用方法

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

代码示例:

3.4.1.3 关于绑定解绑的通知

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

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

3.4.2 绑定第三方平台账户

3.4.2.1 实现协议WAAccountBindingDelegate

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

3.4.2.2 调用方法

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

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

示例代码:

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

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

示例代码:

3.4.4 解绑第三方平台账户

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

3.4.5 切换账户

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

3.4.6 新建账户

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

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

3.4.7获取账户信息

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

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

示例代码:

3.5 应用墙模块功能

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

3.5.1 应用墙使用

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

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

[WAApwProxy showEntryFlowIcon];

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

[WAApwProxy hideEntryFlowIcon];

3.6 社交

3.6.1 分享

3.6.1.1 实现协议 WASharingDelegate

3.6.1.2 调用方法

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

参数说明:

参数名 类型 必填 说明 备注
shareContent NSObject* Y 分享内容
shareWithUI BOOL Y 是否通过UI分享 设置为YES时直接通过UI分享,有界面。设置为NO时通过API分享,没有界面。注意:目前不支持这种方式,相关权限已被facebook收回,此值只能为false
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 游戏邀请)等,发送请求调用以下接口:

参数说明:

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

示例代码:

3.6.3 游戏邀请

3.6.3.1 查询可邀请好友列表

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

代码示例:

参数说明:

参数名 类型 必填 说明 备注
block String Y 回调
platform NSString Y 平台类型 平台类型在WAConstants类中定义,目前支持VK
duration long Y 过滤时间间隔 单位为分钟,当过滤时间间隔大于0时,在这个时间间隔内不会出现已经发出邀请的好友

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

3.6.3.2.1 实现协议 WAGameRequestDialogDelegate

3.6.3.2.2 调用方法

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

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

3.6.3.3 邀请成功记录

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

3.6.3.4 邀请安装奖励

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

3.6.3.5 邀请事件奖励

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

代码示例:

3.6.4 社区

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

3.6.4.2 查询当前应用关联的Group

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

示例代码:

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

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

示例代码:

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

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

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

示例代码:

3.6.4.5 加入Group

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

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

示例代码:

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

示例代码:

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。
iOS——推送配置

2)APNs静默推送权限设置

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

3.7.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:调用下面代码:

3.8 越狱检测

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

3.9 广告

3.9.1 检测可播放广告数量

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

示例代码:

3.9.2 显示广告

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

示例代码:

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

示例代码:

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

3.9.5 视频广告缓存完代理

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

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

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

3.10 智能客服 AIHelp

3.10.1. 判断是否开启AiHelp

说明:该接口返回布尔值,true表示已开启,false表示未开启。在使用其他AIHELP接口前请先判断这个接口,在返回true的情况下使用。示例如下:

3.10.2. 展示WING后台配置界面

参数说明:

参数名 类型 必填 说明 备注
language String Y 语言设置 如果使用默认配置传null,比如简体中文传zh_CN。
isVip boolean Y 是否vip用户 true表示vip用户,false是非vip用户。

说明:这个接口展示的界面由WING后台中SDK客服开关配置决定。如果后台未开启客服开关,此接口不生效。同时提供了无参数的重载方法WACscProxy.openAiHelp(),表示使用默认语言设置和设置非Vip用户。

3.10.3.设置客服系统语言

示例代码:

参数说明:

参数名 类型 必填 说明 备注
language NSString Y 语言名称 语言支持如下图

语言支持列表图:
图片1

3.11 用户中心(充值中心账号信息)

3.11.1 获取用户中心数据接口

3.11.1.1实现协议WAUserCenterNoticeDelegate

WAUserCenterResult说明

字段名 类型 说明 备注
code int 状态码 参照5.1.1 状态码说明
msg string 错误信息
userCenterInfo string 用户中心文字内容
userName string 用户名
password string 初始密码 如果用户修改过密码,此字段为空

3.11.1.2 调用方法

3.11.2 显示用户中心弹窗

3.11.2.1实现协议WAUserCenterNoticeUIDelegate

1)用户中心界面关闭回调接口

2)用户中心界面错误回调接口

3.11.2.2调用方法

3.12 调用评分界面

cp可根据需求,调用appStore评分界面,调用方法

系统要求:iOS10.3及以上系统才可以调起评分界面。

四、第三方配置

4.1 Facebook相关配置

4.1.1 Facebook基本配置

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

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

(2)Whitelist Facebook Apps

4.1.2 Facebook登录权限对照表

权限 类型 权限取值 说明
读取用户配置 string public_profile
读取好友列表 string user_friends

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。
iOS-VK配置1
iOS-VK配置2

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

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,作为客户端与后台服务器连接的标识。
iOS-Instagram配置
可复制下面代码到info.plist中在修改为对应clientId、clientSecret和redirectUri

4.8 智能客服 AIHelp 相关配置

如果不需要AiHelp 功能,请忽略此章节
具体配置请参考WINGSDK第三方后台配置-智能客服 AIHelp 相关章节

4.8.1 在AiHelp开发者平台创建一个AiHelp应用,创建完之后会生成appId、domain和appSecret(appKey)

图片27
可复制下面代码到info.plist中在修改为对应appId、domain和appSecret(appKey)

4.8.2 配置权限

** iOS10需要在工程的info.plist添加权限:
Privacy – Photo Library Usage Description
Privacy – Camera Usage Description
** iOS11需要在工程的info.plist添加权限:
Privacy – Photo Library Additions Usage Description

4.9 Firebase相关配置

如果不需要Firebase 功能,请忽略此章节
具体配置请参考WINGSDK第三方后台配置-Firebase相关章节

4.9.1 接入

1、引入WAFirebaseImpl库到项目
2、引用GoogleService-Info.plist配置文件到项目中
图片27

Firebase SDK会自动收集事件,详情请参考:Firebase自动收集事件
完成以上两个步骤,即完成Firebase 模块的接入工作

4.9.2 调试

firebase analytics调试方法
1、在xcode中,选择Product > Scheme > Edit scheme…
2、在左侧菜单选择Run
3、选择Arguments 项
4、在Arguments Passed On Launch区域,添加-FIRAnalyticsDebugEnabled
图片27
5、运行项目后,登录firebase 管理后台,项目—分析—DebugView模块,可查看到调试设备上传事件
图片27

五、附录

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 账号解绑关闭
WACodeUserCenterClosed 4059 用户中心未开启
WACodeCanNotSwitchToAnonymous 5001 切换到匿名
WACodeFbObjectType 5002 facebook的objectType不能为空
WACodeFbGiftListRequestPrameterLack 5003 请求gift列表缺少appid,appSecret,objectType参数
WACodeFbTokenNull 5004 facebook token为空
WACodeCanNotMakePayment 5005 该设备不能支付或者不允许支付
WACodePaymentError 5006 支付过程中出错
WACodeCancelled -100 取消操作
WACodeSdkUninitialized -200 SDK没有初始化
WACodeContentCanNotBeShared -201 内容不可分享,一般是传入的内容为空,或者其他
WACodeNotLogin -202 没有登录
WACodeLoginFailure -203 登录失败
WACodeNoPermission -204 登录没有获取到相应的权限
WACodeFileSizeLimit -206 文件大小超出限制
WACodeCurrentIDNotMatch -211 登录的平台账户和当前用户不匹配
WACodeDeviceNotSupported -401 设备不支持
WACodeNetworkUnavailable -402 网络不可用
WACodePayReOrderTimeLimit -509 支付:订单时间间隔限制(在特定的时间内重复下订单)

5.1.2 平台取值

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

5.1.3 请求类型说明

取值值 说明 备注
INVITE 邀请
REQUEST 普通请求

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

5.2 事件说明

5.2.1 SDK 预定义事件名

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

5.2.2 SDK 预定义参数名

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