附加指南

本章节包含与now.gg云(now.gg Cloud)相关的附加指南,以帮助您方便地配置我们的服务和API。

可用的附加指南

提供以下指南:




用于保存用户状态的云存储设置

游戏通常会将用户的进度保存在本地的设备文件中以保持游戏会话之间的连续性。now.gg在云上提供此功能,确保为用户提供无缝的游戏体验。

本部分重点介绍如何设置now.gg云存储,通过定义保存的文件路径和排除的文件路径,以保存和恢复用户的游戏进度数据。

定义“保存”(‘Save’)和“排除”(‘Excluded’)文件路径是一项基本实践,可以减少游戏的加载时间,以增强用户体验并确保now.gg云存储的最优利用。

要设置云存储,您应指定以下内容:

  • 要保存的文件路径
    表示应保存在云上的文件或文件夹的位置。通常要保存的文件存储在 /data/data/<package_name>/<file_name>
  • 要排除的文件路径
    表示您不想在云上保存的文件和文件夹的位置。

配置文件路径

您可以为now.gg云发布的任何新应用配置此设置。如果您的应用已经发布,您将需要发布一个新的版本。

配置文件的路径:

  • 登录到 nowStudio.
  • 您可以:
    • 添加一个新的应用。
    • 发布一个新的版本。
  • 在应用内容(’App Contents’)标签:
    • 提供要保存的文件路径(Save File Path(s))和排除的文件路径(Excluded File Path(s)):
    • 点击保存Save
  • 单击左侧导航栏中的发布Release

注意:

  • 如果您有多个文件路径,请用换行符而不是空格或逗号来分隔每个路径。
  • 对于保存的文件路径,只有您指定的文件和文件夹才会被保存并恢复到下一个用户会话。
  • 对于排除的文件路径(可选),您指定的文件和文件夹将不会保存在云上。

重要信息

  • 游戏的加载时间取决于要为用户会话恢复的游戏数据的大小。
    • 为了获得无缝的应用体验,我们建议保存文件大小不超过15MB。
      • 文件大小建议适用于单个文件或多个文件的总大小。
    • 包含较大的文件可能会影响游戏的加载时间。
  • 我们建议您避免在应用内使用任何Android标识符,例如 Android id,以获得更好的体验。



准备应用程序文件

通过本指南,您可以准备要上传到nowStudio的应用程序文件。

要使用nowStudio创建发布,您需要准备应用程序文件。我们接受独立的APK,或者APK和资源(Assets)Zip文件。

您可以准备以下任何一个内容:

  • 独立的APK文件
    • 您可以提供包含所有资源的完整APK。
  • APK和资源Zip文件
    • 游戏通常会在启动时下载必要的资源,从而导致游戏体验延迟。借助now.gg,您可以提供包含APK和资源的Zip包来明显的减少游戏加载的时间并且用户能立即开始游戏。

1. 准备一个APK文件

本节提供准备要上传到nowStudio的APK文件的说明。

准备一个符合以下要求的APK文件:

  • ARM的64位Android应用程序。
  • 一个包含所有资源的完整APK。

当您准备好APK后,您可以继续在nowStudio上 添加您的应用程序


2. 准备APK和资源(Assets)的Zip文件

本节提供在nowStudio上为您的应用/游戏准备APK和资源的Zip包说明。

游戏通常会在启动时下载必要的资源,从而导致游戏体验的延迟。借助now.gg,您可以提供包含APK和资源的Zip包来明显减少游戏加载的时间并且用户能立即开始游戏。

流程

1. 创建包(Zip文件)

您应该按照以下指定的格式和内容创建您应用和资源的Zip文件:

  • APK文件
  • metadata.json
  • 资源目录(Assets directory)
    • 资源1(Asset1)
    • 资源1(Asset2)
    • 其他资源(文件或目录)(OtherAssets (file or directory))
  • Obb目录
    • main.<包版本码>.<包名>.obb(main.<package version code>.<package name>.obb)
    • patch.<包版本码>.<包名>.obb(patch.<package version code>.<package name>.obb)
以下是游戏APK+资源包的示例以供参考:

重要信息

  • 应用程序包(App bundle)中的资源文件夹可以包含多个对象。
    • 它们可以包括任何文件或目录。
  • 我们建议您向我们提供资源或Obb,或同时提供两者,具体取决于您的偏好。但是要成功处理您的上传,必须使用其中的一个。
    • 如果您没提供资源或者Obb,请使用另外一个流程来 只提交APK文件

2. 创建清单文件(Manifest)

以下JSON示例演示了清单文件metadata.json所需的格式:

{
    "assets": [
        {    
            "name": "asset1.xyz",
            "location": "/data/media/0/Android/data/<packageName>/files"
        },
        {
            "name": "asset2.unity3d",
            "location": "/data/media/0/Android/data/<packageName>/files"
        },
        {
            "name": "OtherAssets",
            "location": "/data/data/<packageName>/files"
        }
    ]
}

3. 添加您的应用

准备好APK和资源的Zip文件后,您可以继续在nowStudio上添加您的应用程序。




添加和配置自定义域

如果您想将应用程序托管在now.gg以外的域上,本指南将详细介绍为应用程序添加自定义域的过程。

另外除了now.gg云,您还可以通过在nowStudio上为您的应用程序添加自定义域来在其他域上托管您的应用程序。

介绍了以下方案:

  • 为新应用添加一个自定义域。
  • 为已发布的应用添加一个自定义域。

1. 为新应用添加自定义域

本节介绍为新的应用程序添加自定义域的步骤。

请按照以下操作:

  • 添加新应用程序后。
  • 所有应用程序(All Apps)部分选择您的应用程序。
    • 点击应用程序名称前的查看详情(View Details)
  • 产品(Production)中,点击信息(Information)
  • 在给定字段中输入自定义域(custom domain)地址,如下所示:

    注意:请确保您拥有要添加的域。
  • 请确保您填写了其他必需的详情。
  • 点击保存(Save)
    • 我们的团队将验证您提供的域详情。一旦域详情得到验证,您就可以继续映射您的域。
  • 在您提供了所有必要的应用程序信息后,您可以继续为您的应用程序 创建发布版本
  • 收到映射详情后,您可以点击“信息”(Information)标签中的“映射详情”(’Mapping details’)来查看,如下图所示:
  • 提供了域映射详情,如下图所示:
  • 您可以使用提供的详情配置DNS提供商。
  • 在您对DNS提供商执行所提供的配置后,您的游戏将在您的域上可用。


2. 为已发布的应用程序添加自定义域

本节介绍为已发布应用程序添加自定义域的步骤。

请执行此下操作:

  • 从所有应用程序(All Apps)中选择您的应用程序。
    • 点击应用程序名称前的查看详情(View Details)
  • 在左侧边栏的产品(Production)中点击信息(Information)
  • 点击右下角的编辑(Edit)按钮。
    (这将使您能够编辑所提供的字段)
  • 在给定字段中输入自定义域地址,如下所示:

    注意:请确保您拥有要添加的域。
  • 点击保存(Save)
  • 一条确认信息将显示在屏幕上,如下图所示:
  • 我们的团队将验证您提供的域详情。一旦域详情得到验证,您就可以继续映射您的域。
  • 收到映射详情后,您可以点击“信息”(’Information’)标签中的“映射详情”(’Mapping details’)来查看,如下所示:
  • 提供了域映射详情,如下图所示:
  • 您可以使用提供的详情配置DNS提供商。
  • 在您对DNS提供商执行所提供的配置后,您的游戏将在您的域上可用。



使用Nowgg命令行界面(nowgg CLI)上传应用程序

nowgg CLI是一种命令行工具,可让您轻松地将应用构建上传到nowStudio。本指南将详细介绍这一功能。

前提条件

  • 应用程序ID(App ID)
  • 发布者令牌(Publisher Token)
    • 用于识别发布者公司。
    • 您的发布者令牌位于nowStudio的 账户信息 章节。

使用 nowgg CLI

在macOS或者Windows打开任意终端(terminal)。

安装和初始化

1. 安装nowgg CLI工具

  pip install nowgg

2. 初始化nowgg CLI

  nowgg init --token "<your_publisherToken_from_nowStudio>"

使用nowgg CLI将应用程序上传到nowStudio

1. 将应用程序上传到应用库

  nowgg upload --app_id <your_app_id> --file_path "/directory/sample.apk" --apk_version <app_version_name> --version_code <app_version_code>

注意:您的应用将上传到nowStudio的 应用程序库

2. 上传应用到测试环境并触发部署

  nowgg upload --app_id <your_app_id> --file_path "/directory/sample.apk" --apk_version <apk_version> --version_code <app_version_code> --deploy 

重要信息

  • 每个测试环境都有一个唯一的 app_id,您可以用它在该测试环境上创建发布草稿。
    • 例如,如果您的app_id1234,那么测试环境1的 app_id 就是 1234_t1
  • --deploy 会触发使用 app_id 标识的测试环境上的部署流程。

帮助

  nowgg -h
   nowgg init -h
   nowgg upload -h

重要信息

  • 在运行nowgg命令时,如果收到“命令无法识别”(‘command not recognized’)的错误,请考虑在PATH中添加 <python directory>\<Scripts>
  • 如果收到任何“权限相关错误”(’permission-related errors’),请以管理员身份(Administrator)运行命令。



理解订阅(Subscriptions)

以下文档重点介绍了nowStudio提供的订阅功能的重要方面。

订阅是now.gg上的应用内产品,向用户收取访问您应用内内容或服务的定期费用。

nowStudio提供多功能的“订阅”功能,使您能够轻松创建、管理和销售订阅。应用内产品和订阅产品的主要区别在于,应用内产品向用户收取的是一次性费用,而订阅涉及的是定期性费用。

要理解如何在nowStudio中创建和管理订阅:

要理解如何使用now.gg支付模块在应用程序中实现订阅,请参考以下指南:

重要:除本页信息外,您还应参考 now.gg政策

订阅概述

本节介绍订阅。

  • 订阅
  • 计费周期
    • 自动续订
  • 权益(Benefits)
  • 订价
    • 价格变动

订阅

订阅提供了一组用户可以在指定时间段内访问的权益。您可以在同一应用程序中拥有多个订阅,以代表不同的权益集或单个权益集的不同等级,例如“黄金”和“钻石”套餐。用户通过在now.gg上的应用购买订阅,从而获得订阅的访问权限。


计费周期

now.gg可以让您选择订阅的持续时间。可用的计费周期为:

  • 每4周
  • 每月
  • 每2个月
  • 每3个月
  • 每4个月
  • 每6个月
  • 每8个月
  • 每年

自动续订

now.gg的订阅是自动续订的。用户可以在指定的计费周期内购买订阅,并在每个周期结束时自动续订,确保不间断的订阅体验直到取消订阅。用户、开发者或now.gg可以取消订阅。


权益(Benefits)

您最多可以向订阅添加四项权益,帮助用户理解他们将收到哪些权益。您应该突出显示与您的订阅相关的核心权益。


被拒绝的支付

如果续订支付被拒绝,now.gg将提示用户解决支付问题。如果未解决,订阅将自动过期。




使用嵌入模块在您的网站上启用云游戏

now.gg嵌入(Embed)Javascript 模块为开发者提供了框架,使他们能够在网站上无缝嵌入云游戏。

通过now.gg嵌入模块,开发者能:

  • 在任何网页上轻松嵌入游戏。
  • 实现嵌入的高级功能,应用和嵌入了其游戏的网页能进行事件驱动(event-driven)的通信。
  • 通过在其网站上嵌入游戏,让游戏获得更好的曝光度,从而提高用户参与度和留存率。

前提条件

在集成now.gg嵌入模块之前,必须满足以下前提条件:

  • 将域名加入白名单 – now.gg嵌入将只在被我们列为白名单的域名里工作。请通过 dev-support@now.gg 联系我们,提供您希望加入的白名单的域名列表。
  • clientId – 请通过 dev-support@now.gg 联系我们,获取您的 clientId
  • appId – 请按照 此处说明的步骤,获取您的appId。

实施嵌入模块

要集成now.gg嵌入模块:

  1. 将嵌入模块添加到您的网站。
  2. 在Iframe中启动游戏。
  3. 此外,您可以使用下一个章节集成嵌入高级功能。

重要信息

  • 确保您的游戏已部署在测试生产环境,并且您已获得用于嵌入的游戏链接。
  • 您可以按照以下链接创建发布并部署您的应用程序:

1. 添加嵌入模块

第一步是将嵌入模块添加到您的网站。

要将now.gg嵌入模块添加到您的网站,请在脚本标签中添加模块资源的JavaScript,如下所示:

<script type="text/javascript" src="https://cdn.now.gg/external/sdk/ifp-sdk-1.2.0.min.js"></script>

2. 在Iframe中启动游戏

在添加了now.gg嵌入模块资源后,您可以使用now.gg嵌入功能初始化模块,以在您的网站上嵌入游戏。

操作步骤如下:

  • 首先定义 iframeParentElementappEventCallbackFunction,和 sdkEventCallbackFunction
  • 接下来,使用必要的参数调用 NowIfp 类的 init 函数,以启动云游戏,如下所示:
const iframeParentElement = document.getElementById("your_iframe_element");

// 用于处理从Android应用发送的事件的回调函数。
const appEventCallbackFunction = (event) => {
    console.log(event.name); 
    console.log(event.data);
    // 于此进行基于事件的处理
}; 

// 用于处理javascript 模块事件的回调函数。
const sdkEventCallbackFunction = (event) => {
    console.log(event.name); 
    console.log(event.msg);
    // 于此进行基于事件的处理
}; 


NowIfp.init({
    clientId: <"your_clientId"> ,
    appId: <"your_production_appId/your_test_track_appId"> , \\ appId 示例 - 测试环境: "1234_t1" | 生产环境: "1234"
    iframeParentElement: iframeParentElement,
    customData: {} // 用于应用特定的自定义处理
    appLaunchData: {
        // 传递启动参数给Iframe,它将被序列化并在launch intent传给应用。
        [key]: [value]
    } 
    appEventCallback: appEventCallbackFunction,
    sdkEventCallback: sdkEventCallbackFunction,
    isNowLoginEnabled: true
});

获取您的appId

使用本节内容,您可以在nowStudio中找到您的 appId

重要信息

  • appId 是您的应用程序在nowStudio中的唯一标识符。
  • nowStudio会为您的应用程序在测试和生产环境中生成不同的 appId
    • 在测试环境, 只有在应用程序部署后,才能看到 appId
    • 在生产环境, appId 也会在您添加应用程序后在 应用详情章节 中显示。
1. 测试环境的appId
  • 要查找测试环境的appId:
  • 导航到所有应用(All Apps)> 选择您的应用(Select your app)> 测试环境(Test Track)
    • appId 列在线上测试发布(live test release)中,如下所示:
2. 生产环境的appId
  • 要查找生产环境的appId:
  • 导航到所有应用(All Apps)> 选择您的应用(Select your app)> 发布(Release)
    • appId 列在线上生产发布(live production release)中,如下所示:

参数

参数 类型 是否必需 概要
clientId string 唯一的客户端标识符。
appId string 在nowStudio上与您的应用程序/游戏关联的App ID。会为生产和测试环境生成不同的appId。如 – 生产appId:“1234”。测试appId:“1234_t1”
iframeParentElement element 用于嵌入播放器渲染的iframeParentElement。
customData object 您希望传递给now.gg后端的任何应用特定数据。
appLaunchData object 作为应用launch intent extras发送的额外数据。- 参考 – 定义appLaunchData 章节。
appEventCallback function 用于处理应用相关事件的回调函数。参考在Iframe中启动游戏章节
sdkEventCallback function 用于处理SDK相关事件的回调函数。参考在Iframe中启动游戏章节
isNowLoginEnabled boolean true – 启动应用时将触发 now.gg 登录。
false – 启动应用时不会触发 now.gg 登录。

您的游戏现在已嵌入到您的网页中,由now.gg云提供支持。


通过嵌入实现高级功能

本节说明如何在您的网站(HTML 页面)中实现嵌入式游戏的高级功能。

通过使用 now.gg Embed Module,您可以进一步提升嵌入游戏的体验:

  • 从 now.gg Cloud 上的应用传递事件和数据到 HTML 页面。
  • 在应用启动时将启动参数传递到应用。
  • 从 HTML 页面传递事件和数据到应用。
前提条件

1. 从应用传递事件到 HTML 页面

集成 now.gg Events 模块后,可以从 now.gg Cloud 上的应用向嵌入的 HTML 页面传递事件和数据。

有关详细信息,请参阅 now.gg Events Module 文档中的“将事件和数据发送到 HTML 页面”部分:

2. 从 HTML 页面传递参数到应用

您现在可以从 HTML 页面向应用传递启动参数。以下示例代码说明了如何定义 appLaunchData 并将其传递给 NowIfp.init,以及如何在应用中检索它。

a. 定义 appLaunchData

appLaunchData 作为参数传递给 NowIfp.init(),并作为启动意图参数传递给应用。以下代码说明了如何将 appLaunchData 传递给 NowIfp.init()

NowIfp.init({
     clientId: <"your_clientId">,
     appId: <"your_appId">,
     iframeParentElement: iframeParentElement,
     customData: {}, // 应用特定的自定义处理
     appLaunchData: {
           [key]: [value]
     }, // 作为启动参数传递
     appEventCallback: appEventCallbackFunction,
     sdkEventCallback: sdkEventCallbackFunction,
     isNowLoginEnabled: true
 });
b. 在应用中检索 appLaunchData

此步骤中,应用可以检索从 HTML 页面传递的 appLaunchData

有关更多信息,请参阅 now.gg Events Module 文档中的“检索应用启动数据”部分:

重要信息

  • appLaunchData 仅在应用启动时传递,无法在应用运行时传递。

3. 从 HTML 页面传递事件和数据到应用

通过使用 now.gg Embed 模块的 NowIfp 接口,您可以从 HTML 页面向应用发送自定义事件和关联数据,如以下示例所示:

a. 向 Android 应用发送事件

通过 NowIfp 接口,您可以从 HTML 页面向应用发送自定义事件和数据。以下是代码示例:

const sendEventToApp = () => {
     const eventName = 'CustomEvent';
     const eventData = JSON.stringify({
         Sample: 'case'
     });
     NowIfp.sendEventToApp(eventName, eventData);
 };

重要信息

  • 确保 now.gg Embed 模块 (NowIfp) 已正确初始化,并在运行环境中可访问。

参考

函数 类型 摘要
sendEventToApp void 从 JavaScript 将自定义事件发送到应用。

事件结构

  • eventName: 标识事件类型的字符串。
  • eventData: 包含事件特定信息的 JSON 字符串。

错误处理

  • EVENT_SEND_ERROR: 模块未初始化或未收到 AppLaunched 事件时发生。
b. 在 Android 应用中处理事件
您可以在 Android 应用中处理从 HTML 页面发送的事件和数据。

有关更多信息,请参阅 now.gg Events Module 文档的“在应用中处理事件”部分:


演示项目

本节展示了now.gg Embed Module的演示HTML页面,并解释了与Embed Module相关的端到端流程。

请按照以下步骤查看Embed Module演示:

  • 点击这里启动now.gg Embed Module演示。
  • 传递应用启动数据
    • 如果希望在启动时添加appLaunchData
    • 点击+按钮。
    • 可以通过字段提供输入。
  • 模块初始化
    • 点击初始化Embed Module按钮,初始化模块并启动云游戏。
    • 初始化事件将通过sdkEventCallback捕获,如下所示。
    • 初始化成功后,嵌入的游戏开始运行。
  • 发送事件到应用
    • 点击发送事件到应用按钮,将自定义事件及相关数据发送到您的应用。



×

目录

附加指南

目录

  • 开始使用
  • 附加指南

文档版本 1.0

文本已复制到剪贴板
copyLinkText
有疑问?请通过以下方式联系我们: dev-support@now.gg