架构库 李嘉文的架构规范

MSDK浏览器

MSDK浏览器是承载微社区的重要载体,因此我们必须对它有充足的了解,这样才能在开发过程中少走一些弯路。


MSDK是什么

MSDK是为自研及第三方手游开发团队提供的,旨在帮助手游开发商快速接入主要平台并上线运营的公共组件和服务库。

MSDK浏览器是什么

内置浏览器是MSDK提供的一个可以在游戏内部浏览网页的Webview组件,游戏可在游戏内拉起Web页面如营销活动页面, 论坛, 攻略等。此Webview中还提供了分享到QQ和微信的功能,还支持页面上下滑动时隐藏导航栏、工具栏的效果(默认关闭,可配置开关),并在Useragent中增加MSDK标识(格式:MSDK/版本号)。 展示效果

msdk浏览器内核

  • 在iOS系统中调用原生内核。

  • 在Android系统中,如果安装QQ浏览器则调用x5内核,如果未安装QQ浏览器,则调用原生内核。

msdk浏览器UA

  • iOS
    Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C92 MSDK/2.15.0i

  • Android
    Mozilla/5.0 (Linux; Android 7.0; MI 5 Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36 MSDK/2.16.0a

MSDK浏览器登录态

假设浏览器拉起URL,实际截包会看到访问的URL如下:

/gac/index.html?sig=***&timestamp=**&appid=***&openid=***
&algorithm=v1&msdkEncodeParam=***&version=1.6.2i&encode=2

其中 msdkEncodeParam 传输的实际上是下面参数加密得到的密文(url encode):

acctype=wx&appid=100732256&openid=ol7d0jsVhIm3BQwlNG9g2f4puyUg&access_token=OezXcEiiB
SKSxW0eoylIeCKi7qrm-vXrr62qKiSw2otDBgCzzKZZfeBOSv9fplYsIPD844sNIDeZgG3IyarYcGCNe8XuYK
HncialLBq0qj9-rVGhoQVkgSYJ8KXr9Rmh8IvdqK3zsXryo37sMJAa9Q&platid=0`

被加密的登录态参数如下表:

接口名方法
参数名参数说明
acctype账号类型,取值为qq或wx
appid游戏ID
openId用户授权后平台返回的唯一标识
access_token用户授权票据
pay_token手Q平台支付票据(MSDK2.15.0版本新增)
platid终端类型,取值为0表示iOS,1表示android

MSDK浏览器JS接口

MSDK内置浏览器增加了对Javascript接口的支持,目前JS接口覆盖分享以及关闭内置浏览器接口。另iOS版MSDK除了上述接口外还提供了在Safiri中打开制定URL接口,打开相机、图库获取照片接口。

1.Javascript封装层

2.Javascript分享接口

3.Javascript关闭内置浏览器

4.通过JS在Safiri中打开指定URL

5.通过JS打开iOS图库、相机获取照片