接入必读

来自AnySDK 文档
跳转至: 导航搜索

常规方式手工接入SDK有什么弊端?开发者为什么需要使用AnySDK?

  目前国内有大大小小上百家手游渠道,每一个渠道都会要求开发者在游戏中正确接入相应渠道的登录及支付SDK,能让玩家使用在渠道注册的账户来登录游戏,并发起支付在游戏内充值。也就是说只有接入了渠道SDK的游戏才能通过渠道审核并上架。在接入SDK的过程中会有以下一些问题:

  1. 由于每一家渠道SDK的设计不同,SDK里自带的资源文件,代码jar包,功能接口数量等都是完全不一样。
  2. 不能在同一份游戏代码中同时嵌入多家SDK的内容,因此开发者必须维护多套游戏代码项目来分别接入各家渠道SDK。
  3. 服务端的开发者也需要去研究每家渠道设计的不同加密算法及数据校验方式,来开发订单数据校验和用户登录安全认证接口。
  4. 开发者须手动去写jni函数进行java层代码与C++层代码的双向调用(其他语言同理),这就要求开发者对java语法和jni规则比较熟悉。

  根据AnySDK收集的数据显示,一个有经验的开发者平均接入一款渠道SDK需要耗费的时间(客户端接入+服务端对接)大概在两天到三天之间,而如果是之前没有接入SDK经验的开发者,这个时间会增加到两倍,因为有很多渠道的特殊需求及“潜规则”需要了解更严重的问题是,当游戏要接入上线的渠道非常多的时候,这个耗费的时间数量会成倍增长,也就是说你接入前一款SDK时候所做的工作并不能减少你接入下一款SDK需要的工作量。
  AnySDK的出现就是为了替广大开发者解决这些问题,AnySDK是一款为开发者加速接入第三方SDK的工具。

  1. 可以帮开发者实现只接入一次就可以批量打出所有渠道包,并且不再需要关心SDK的版本更新和处理因为渠道服务端接口变化造成的紧急重复更新工作。
  2. AnySDK提供了各个语言版本的框架,开发者只需选择自己熟悉的开发语言即可。
  3. 大量减少接入时间,根据AnySDK的文档操作接入一次,花费的时间跟手工接入一个渠道SDK的时间相同,然后就可以通过AnySDK提供的打包工具打出包含了不同SDK的渠道包。

AnySDK如何实现一次接入,批量打包?

  简单的来说,就是四个字——”统一接口”。AnySDK提供了五个不同语言游戏引擎版本的框架供开发者选择自己熟悉的语言版本来集成,不用关心C++/JS/Lua/C#如何去调用java层的一个函数。在AnySDK Framework中,总共有六大类接口——分别是用户,支付,统计,分享,广告和推送。开发者只需要根据自己的需求来调用相应的函数,比如想要打出的渠道包能登录,能支付,并能显示广告。那么就只需要根据AnySDK的文档调用login,payForProduct,showAds等函数,传入相应的参数就可以,真正调用相应SDK函数的工作由AnySDK来完成。
  同样的,在服务端,开发者也不用关心某家渠道的文档规定了开发者需要以什么样的加密方式和校验算法来校验渠道服务器推送到游戏服务器的订单数据,开发者需要做的,只是根据AnySDK提供的文档来对接收到的数据做一次安全性校验就可以确认当前订单是来自哪个渠道,是否支付成功等。各渠道间不同的协议和规范由AnySDK去帮开发者完成统一。

接入AnySDK的流程是什么?如何理解母包及渠道包的概念?

  开发者首先要做的就是参照AnySDK的文档 (http://docs.anysdk.com/CppTutorial) 来将AnySDK framework集成到游戏项目当中。然后直接运行项目,观察是否成功调用了初始化,登录,支付等函数。
  当开发者直接运行接入了AnySDK framework的项目测试调用相应函数没有问题之后,就意味着接入AnySDK Framework已经成功,这时候运行项目所编译出的apk包称之为”母包”。顾名思义,这个APK包用于生成包含渠道SDK的”渠道包”,”渠道包”就是用于提交给各渠道审核,审核通过之后分发给最终玩家的APK包。简单来说,”母包”就是 游戏代码 + AnySDK Framework;”渠道包”就是 游戏代码 + AnySDK Framework + 渠道SDK(包括代码+资源)。
  那么如何生成渠道包呢?AnySDK提供了一个功能强大的界面化打包工具,通过简单的四步就可以把“母包”生成“渠道包”。

  1. 首先,选择你要打包的APK所属的渠道(如百度91,360等)。
  2. 其次,选择你希望在当前渠道的APK包中集成的SDK(比如91渠道,根据渠道要求,你要在APK中集成百度游戏的用户和支付SDK)。
  3. 然后,就是为你选择的的每一个SDK配置相应的开发者参数(开发者想要使用任何一个SDK都必须先去SDK提供方的网站去申请相应的开发者参数,这是非常重要的一步)。
  4. 选择是否需要添加渠道闪屏(根据渠道要求,目前所有要求添加闪屏的渠道AnySDK都已经提供了闪屏选项,并可以根据渠道的规定来修改游戏icon,添加相应的渠道角标)。
  5. 最后,点击打包按钮,等待10-20s之后打包工具就会生成渠道包,开发者可以直接点击”安装”按钮将渠道包直接安装在手机上来测试生成的渠道包工作是否正常。


  当开发者通过”母包”生成了相应渠道的”渠道包”并通过测试之后,就可以将这些APK包上传到相应的渠道开发者后台来申请渠道审核并上架。如果打出的渠道包在测试过程中发现了某些接口运行结果异常,则需要开发者修改母包中的代码,修复bug之后再重复上面编译打包的过程来生成渠道包,进行再次提交测试。

如何理解AnySDK登录流程?什么是”登录验证地址”?

  在上面有讲解过手工接入渠道SDK最基本的登录流程,那么使用AnySDK 进行登录实际上就是对这个流程做了大幅度的简化,这里分为客户端和服务端开发者需要实现的代码逻辑来讲解。
  首先是客户端,在游戏代码中先初始化AnySDK Framework

  1. 当接收到框架初始化成功的回调函数之后直接调用Login函数即可显示出SDK的登录界面。
  2. 当玩家输入了正确的用户名和密码之后AnySDK 就会自动处理后续的登录及用户验证流程。
  3. 当完成用户登录验证之后就会自动回调到开发者在前一步设置的用户系统监听函数。
  4. 开发者就可以在登录成功的回调函数中处理后续的游戏逻辑。

整个登录过程客户端只需要调用一个接口就可以了。
  那么服务端需要做什么呢

  1. 在客户端调用login接口之后AnySDK Framework会请求“登录验证接口地址”(此地址在打包工具中参数配置页面进行配置,而在未经过打包工具的“母包”中,则是请求代码中初始化AnySDK Framework时填入的第三个url参数)
  2. 这个接口负责负责将客户端请求过来的所有参数转发给AnySDK服务器(客户端请求过来的参数个数是不确定的,因为每个SDK登录验证需要的参数都是不同的,所以在这个接口中需要遍历解析所有的请求参数,然后全部转发给AnySDK 服务器。在AnySDK的文档中已经提供了现成的代码供开发者直接部署使用)去做登录验证,
  3. AnySDK服务器会返回登录验证结果,开发者将验证结果的完整数据再返回给客户端就可以了。

注意,上面这个过程是一次HTTP连环请求,也就是说下面这个过程:

客户端 ——请求——>  游戏服务器(登录验证接口) ——请求——>  AnySDK服务器(跟渠道服务器交互) ——返回——>  游戏服务器 ——返回——>游戏客户端

是在同一次HTTP请求中完成的。只要客户端AnySDK Framework 回调了登录成功的函数,就说明整个登录验证流程完全走通了。

如何理解AnySDK支付流程?什么是”支付通知地址”?


  在客户端代码中发起一笔订单支付非常简单,只需要调用payForProduct函数,传入玩家当前选择的道具信息,就可以调出SDK支付界面(在母包中则是弹出一个简单的确认支付的对话框)。当玩家在支付界面中完成支付之后即会回调执行开发者设置的支付监听函数。在支付成功的回调函数中,开发者需要跟游戏服务器做通讯确定当前订单是否支付成功。
  开发者需要在渠道SDK管理后台的“支付回调地址”一栏填入AnySDK 提供的当前渠道统一支付回调地址(这个地址显示在打包工具中参数配置界面上"渠道通知地址一栏"),然后在打包工具参数配置界面“支付通知地址”一栏配置游戏服务器提供的”支付通知接口地址”。只需要按照AnySDK 的格式来统一进行验证就可以实现订单支付结果的获取。整个支付过程即是下面这个流程:

客户端 : 调用支付接口发起支付  ——>  接到SDK支付成功回调 ——>  去游戏服务器确认支付结果
服务端 :渠道服务器完成扣款流程 ——>  推送数据给AnySDK服务器 ——>  AnySDK服务器做数据校验,并格式化为统一格式 ——> 推送数据给游戏服务器 ——>  游戏服务器校验订单数据

  当游戏客户端带着订单号去游戏服务器确认当前订单支付结果是支付成功之后,此时一笔完整的订单支付流程就算走完了,此时就可以根据游戏的逻辑进行游戏内物品的发放。在支付过程中具体需要实现的代码请参照 http://docs.anysdk.com/PaymentNotice 文档页面。象订单校验等功能都提供了现成的实现代码供开发者使用。

签名文件、闪屏、角标、包名后缀如何配置?

  首先,是打包用的签名文件

  1. 在AnySDK 打包工具中目前有两个地方可以配置打包使用的签名文件,分别是游戏管理和渠道参数两个界面上。
  2. 在打包过程中如果检测到开发者有在渠道参数界面配置当前渠道包使用的签名文件,就使用此签名文件进行签名。
  3. 如果没有配置当前渠道专用的签名文件,则会去检测是否在游戏管理界面配置此apk通用的签名文件,有配置则用其进行签名打包。
  4. 如果两边都没有进行配置,那么会使用打包工具自带的一个默认签名文件进行签名,并会在打包界面上进行提示。


  其次,就是关于闪屏和角标,打包工具内已经提供了渠道相关的快捷选项,当开发者选择打包某个要求添加闪屏和角标的渠道包的时候,在渠道参数配置界面可以选择是否添加渠道闪屏,添加横屏还是竖屏闪屏资源,然后在渠道参数配置界面点击下一步会跳转到icon管理界面,在这个界面,开发者可以为已选择的渠道包进行icon的修改,添加各渠道需要的角标图案,还可以进行位置自定义并微调。

  最后,还有包名后缀,在Android开发中,包名是一个非常重要的参数,它是用来确认两个应用是否相同的唯一标志。目前有很多渠道市场要求开发者上传的apk包的包名要以渠道规定的后缀结尾,以区分不同渠道下载的同一款游戏。AnySDK 为开发者提供了方便的包名后缀自动添加功能,在打包参数界面开发者只需要配置好当前渠道包需要添加的包名后缀,在打包过程中工具就会自动帮开发者修改当前渠道包的package属性,一步到位生成符合渠道要求的包。