跳到主要内容

问题汇总

登录对接

1. 无法搜索到当前接入的游戏

参考调试说明,或联系平台人员,告知需要调试的迅雷平台用户 ID。

2. 如何查看迅雷平台用户 ID ?

  1. 登录迅雷个人中心
  2. 页面中显示的数字账号就是迅雷平台用户 ID。

3. 无法进入游戏,启动游戏报错?

  1. 前往开放平台的游戏列表,查看对应游戏的配置项,检查 游戏启动链接 服务端回调地址 是否正确配置。
  2. 检查后端的登录功能是否已经正确接入。

支付对接

1. 无法调起内购支付?

检查后端的内购支付功能是否已经正确接入。

iOS 特性

1. localStorage 无法持久化导致游戏进度丢失

一些游戏会将游戏进度保存在本地的 localStorage ,这在许多浏览器场景(包括未开启“阻止跨站跟踪”的 Safari 浏览器)没有问题。

然而,iOS 迅雷客户端使用的 WKWebView 默认开启“阻止跨站跟踪”。这导致端内的浏览器在 iframe 内页面的 localStorage 数据会随浏览器进程的关闭而丢失,从而导致用户进度丢失,引发负反馈。

解决方案

我们提供了一个 storage-proxy SDK 来尽量规避此问题,这需要游戏方在 html 顶部引入一个脚本。

<!-- 此脚本用于代理iOS环境下的localStorage方法,src中type=child的参数必须保留 -->
<!-- 此脚本需要在游戏涉及localStorage的操作之前引入 -->
<script src="https://xlgamebox-youxi.xunlei.com/xl-libs/storage-proxy/1.0.0.js?type=child"></script>

<!-- ……任意代码…… -->

<!-- 非强制要求,但建议引入上面的storage-proxy脚本后,再引入迅雷游戏的JS-SDK -->
<script src="https://static2-youxi.a.88cdn.com/backend/xl-lib/xl-game.min.2.2.0.js"></script>

SDK 核心原理是在 iOS 端通过代理用户的 localStorage,在 setItem removeItem clear 的同时持久化一份数据到父 window ;同时在页面每次启动时,会将父 window 持久化的数据写入到 localStorage,进而模拟 localStorage 的持久化能力

注意
  • 由于 SDK 的机制问题(存在异步操作),storage-proxy 脚本需要尽可能早的引入,且不建议添加 deferasync 属性,也不建议使用动态插入的方式。
  • 如游戏同时接入了 小川科技 的小游戏平台,且使用了他们提供的 storage-proxy.1.0.0.js 脚本 解决相同问题,请勿将这个脚本和此处提供的脚本同时引入。
  • 虽然上述方法能尽量解决 iOS 端进度丢失问题,但仍然建议有条件的游戏方将游戏进度保存在服务器。

其它

1. 游戏接入方需要提供几个回调地址?

一个游戏仅需要提供一个回调地址,不同的接口功能通过消息类型 notify_type 字段来区分

2. 鸿蒙系统(非鸿蒙 Next)上游戏页面反转了 360°?

游戏方调用了 requestFullscreen 做游戏横向全屏,在部分鸿蒙系统上存在兼容性问题。解决方案:改用其他全屏方案,或使用前端 SDK 的全屏功能