Unity3d ╋ QuickSDK接入教程总篇

版权声明:欢迎转载 https://blog.csdn.net/cao554872678/article/details/85015130

Unity3d ╋ QuickSDK接入教程总篇

随着渠道资源越来越丰富,SDK的接入也变得也来越复杂,100个SDK接入能把程序员整疯,因此很多聚合SDK应运而生,像棱镜SDK,易接等等。今天主要介绍的是另外一款QuickSDK,功能与前面说的类似,因为项目用到,所以在这里把接入经验跟大家分享一下。

1.SDK接入流程(部分QuickSDK及游戏客户端代码)

SDK接入流程都是大同小异,主要包括登录和支付,以下是登录流程:

1.打开SDK客户端界面:代码调用SDK客户端提供的登录方法。将玩家在SDK客户端界面中输入的玩家名称与密码传递给SDK暴露的方法。

    /// <summary>
    /// 登录账号
    /// </summary>
    public void OnClickLoginAccount()
    {
        Debug.LogError("AndroidSDKManager2 : OnClickLoginAccount");
        QuickSDK.getInstance().login();
    }

2.SDK客户端向SDK服务器请求:SDK客户端向SDK服务器传递玩家输入的用户名,密码等信息。同时还需要传递APP信息,比如APPID,APPKEY等验证信息。这些信息能够标识唯一的应用。

3.SDK服务器会向SDK客户端返回:token值保存了玩家的验证信息。以上就是一个SDK服务器返回的信息。这个信息包含了APPID(APP的唯一标识),data(根据用户名,密码等信息进行的加密数据),time(请求时间)。

4. SDK客户端将token值等数据传递给游戏客户端,游戏客户端再将数据传递给游戏服务器。游戏服务器拿到游戏客户端返回的数据之后,将数据传递给SDK服务器进行验证。

​
/// <summary>
/// 登录成功回调
/// </summary>
/// <param name="userInfo"></param>
public override void onLoginSuccess(UserInfo userInfo)
{
        WindowManager.CloseWaittingWindow();
        AndroidSDKManager2.Instance.LoginState = SDK_LOGIN_STATES.SUCCESSFUL;
        JsonData jd = new JsonData();
        jd["sid"] = userInfo.token;
        jd["app_id"] = "";
        jd["channel"] = QuickSDK.getInstance().channelType().ToString();//渠道类型
        jd["sub_channel"] = QuickSDK.getInstance().channelType().ToString();
        jd["channel_name"] = QuickSDK.getInstance().channelName();//渠道名称
        jd["device_id"] = GameMain.MacAddress;
        //jd["uid"] = userInfo.uid;//账户id
        jd["uid"] = QuickSDK.getInstance().userId();//渠道id
        Debug.LogError("渠道id:" + QuickSDK.getInstance().userId());
        AndroidSDKManager2.Instance.GetKeySuc = false;
        HttpLite.HttpRequest(REQUEST_URL_FOR_LAST_LOGIN_SETTING, GetUserLastLoginSetting, jd.ToJson());
        WindowManager.OpenWaitServerWindow();
}

5. SDK服务器对游戏服务器传递过来的数据进行验证后,将验证结果返回给游戏服务器。文档:https://www.quicksdk.com/doc-15.html

http://checkuser.sdk.quicksdk.net/v2/checkUserInfo?token=@178@83@173@158@157@88@108@86@118@98@117@107@105@106@108@99@104@120@108@103@112@123@125@106@96@101@104@110@104@115@105@101@169@187@175@156@163@183@152@164@101@155@134@217@160@158@157@87@115@103@102@105@101@99@105@99@99@110@105@92@85@154@157@152@165@163@158@163@121@151@90@112@90@100@102@87@157@151@219@196@217@215@134@165@121@163@225&uid=D2A864635A709FD302080B508FF98D49&product_code=64345624204336603757759703868145

6. 游戏服务器拿到SDK服务器返回的登录验证结果(如果成功,SDK服务器则会返回类似channelId和userId的东西,以便对此用户进行唯一标示)。对登录结果的数据进行自定义的拼接,已生成一个唯一ID,在此我们给这个唯一的ID起名叫login_key。然后把这个playerId在服务器进行保存,并将登录的结果和login_key返回给客户端。至此,一个SDK的登录流程就已经完成了。

进入游戏有两种方式,都是利用服务器发过来的login_key值:

  • 登录成功之后直接调用进入游戏代码,进入游戏
  • 登录成功之后界面上存在登录按钮,点击进入游戏

以下是支付流程:

简单介绍支付流程中的9个步骤:

在支付模块中,我们并没有像登录模块一样把游戏逻辑与集成SDK放在一起,而是把SDK与SDK服务器放在了一起,因为我并不确定SDK与SDK服务器之间的具体通信步骤。

由于现在只接了Apple的支付,所以支付服务器是Apple服务器。

支付服务器也可以是支付宝,银联等服务器。

1. 当用户在商城中点击支付按钮时,游戏客户端向游戏服务器发送消息,告知服务器购买的是什么商品。

我们的方法时为买个付费点分配一个唯一ID,游戏客户端向服务器发送这个唯一ID,由服务器向客户端返回具体信息。

2. 游戏服务器接收到客户端发送的唯一ID后,由游戏服务器向游戏客户端返回订单相关的信息(比如,订单号、价格、商品、购买时间等信息)。

3. 游戏客户端接收到游戏服务器返回的信息后,通过调用SDK暴露的方法进行支付。

4. 支付服务器对SDK发送的订单信息进行处理。

此后还会回调SDK的方法,弹出支付界面让用户支付,这个过程不是我们所关心的,所以不添加这个过程。

5. 支付服务器对用户输入的账号,密码进行验证,将登录结果返回给SDK。

6. SDK会将支付结果返回给游戏客户端和游戏服务器。

这个过程并不能保证先后顺序

7. 游戏服务器接收到SDK返回的支付结果后,会在后台将相关的道具加到这个用户的数据库中。

8. 游戏客户端此时虽然支付成功,但是没有及时同步道具。

所以此时客户端要每隔一段时间向服务器进行请求(规定请求间隔与最大请求次数)。

直到游戏服务器将购买的道具同步到客户端为止。

猜你喜欢

转载自blog.csdn.net/cao554872678/article/details/85015130
今日推荐