了解Metaframe方法和事件

window.metaframe对象

加载脚本后,metaframe对象在应用程序的全局window对象中可用。metaframe对象包含管理Web应用中Metaframe所需的方法列表。

window.metaframe.create方法

方法签名:

Copy
Full screen
Small screen
    window.metaframe.create: (parameters: {
     loginProjectId: string,
     merchantId?: number,
     projectId?: number,
     orbsApiHostId?: string,
     isMobile?: boolean,
     isCollapsed?: boolean,
     layoutSettings?: {
         desktop: {
           widgetMarginTop?: number,
         },
         mobile: {
           widgetMarginTop?: number,
         },
       },
    }) => void;
    

    在您的Web应用中初始化元框架。

    参数类型描述
    parameters
    object包含启动元框架参数的对象。
    parameters.loginProjectId
    string登录管理器ID。要获取该ID,请打开发布商帐户,然后前往登录管理器 > 仪表板 > 您的登录管理器项目部分。必需
    parameters.merchantId
    string商户ID。可在您的发布商帐户中找到该参数:
    • 公司设置 > 公司部分。
    • 在发布商帐户任意页面的浏览器地址栏的URL中。URL的格式如下:https:​//publisher.xsolla.com/<merchant ID>/<Publisher Account section>
    如果在发布商帐户的项目设置中启用了虚拟货币背包功能,则此项为必需
    parameters.projectID
    string项目ID。您可以在您的发布商帐户项目名称旁边。
    如果在发布商帐户的项目设置中启用了背包功能,则此项为必需
    parameters.orbsApiHostId
    string主机ID。请发送邮件至integration@xsolla.com联系集成团队或发送至csm@xsolla.com联系您的客户成功经理来获取该值并提供项目ID和商户ID。
    如果在发布商帐户的项目设置中启用了虚拟货币功能,则此项为必需
    parameters.isMobile
    booleanMetaframe是否默认使用移动版布局。
    parameters.isCollapsed
    boolean小组件默认是否以折叠(最小化)状态显示。默认值为true
    parameters.layoutSettings
    object包含自定义小组件布局参数的对象。
    parameters.layoutSettings.desktop
    object包含自定义桌面版小组件布局参数的对象。必需
    parameters.layoutSettings.desktop.widgetMarginTop
    number元框架小组件相对于视口的上边距(单位:px)。默认值为16
    parameters.parameters.layoutSettings.mobile
    object包含自定义移动版小组件布局参数的对象。必需
    parameters.layoutSettings.mobile.widgetMarginTop
    number元框架小组件相对于视口的上边距(单位:px)。默认值为72
    注:
    移动版本中的小组件位置可以在发布商帐户中配置。详细信息请参阅设置移动版本部分。

    window.metaframe.setIsMobile方法

    方法签名:

    Copy
    Full screen
    Small screen
      window.metaframe.setIsMobile(isMobile: boolean)
      

      将Metaframe从桌面版切换到移动版或反向切换。

      参数类型描述
      isMobile
      boolean是否将Metaframe切换到移动版本。如果设置为true,Metaframe将切换到移动版本。如果设置为false,Metaframe将切换到桌面版本。
      注:
      移动版本中的小组件位置可以在发布商帐户中配置。详细信息请参阅设置移动版本部分。

      window.metaframe.partnerActions对象

      该对象包含在Metaframe中触发操作的方法。

      使用此对象的方法之前,必须确保Metaframe已完全加载。为此,请订阅Metaframe加载事件。如果该事件已处理,则此对象的方法可用。

      设置Metaframe加载事件侦听器的示例:

      Copy
      Full screen
      Small screen
      window.addEventListener("@metaframe-partner-events:app-loaded", () => {
      
       //Here you can use partner actions
      
      });
      

      window.metaframe.partnerActions.openBackpackItemPage方法

      方法签名:

      Copy
      Full screen
      Small screen
        openBackpackItemPage: (itemId: string) => void;
        

        打开Backpack部分中指定商品的页面。

        要使该方法正常工作,必须满足以下条件:

        • 发布商帐户中启用了背包功能。
        • 用户已通过认证进入了Metaframe。

        参数类型描述
        itemId
        string调用API方法创建商品时传递的商品内部ID。

        window.metaframe.partnerActions.openLogin方法

        方法签名:

        Copy
        Full screen
        Small screen
          openLogin: () => void;
          

          打开用户授权表单。如果用户已授权,浏览器控制台将显示错误信息。

          window.metaframe.partnerActions.openProfile方法

          方法签名:

          Copy
          Full screen
          Small screen
            openProfile: () => void;
            

            为当前用户打开Profile区段。如果用户未授权,浏览器控制台将显示错误信息。

            window.metaframe.partnerActions.openWallet方法

            方法签名:

            Copy
            Full screen
            Small screen
              openWallet: () => void;
              

              为当前用户打开Wallet区段。如果用户未授权,浏览器控制台将显示错误信息。

              注:
              要使此方法正常工作,必须在小组件中配置Wallet区段

              window.metaframe.partnerActions.openBackpack方法

              方法签名:

              Copy
              Full screen
              Small screen
                openBackpack: () => void;
                

                为当前用户打开Backpack区段。如果用户未授权,浏览器控制台将显示错误信息。

                注:
                要使该方法正常工作,必须满足以下条件:
                • 发布商帐户中启用了背包功能。
                • 用户已通过认证进入了Metaframe。

                window.metaframe.partnerActions.openCustomMiniApp方法

                方法签名:

                Copy
                Full screen
                Small screen
                  openCustomMiniApp: (params: {miniAppName: string}) => void;
                  

                  在满足以下条件之一时,打开指定的Iframe类型自定义区段:

                  • 如果指定自定义区段设置中的用户登录前显示此应用开关已启用,且当前用户未授权。
                  • 如果指定用户区段设置中的用户登录后显示此应用开关已启用,且当前用户已授权。

                  如果不满足条件,浏览器控制台将显示错误信息。

                  注:
                  要使此方法正常工作,必须在小组件中配置Iframe类型的自定义区段。 调用此方法前,请验证元框架小组件是否已成功加载指定的自定义区段。为此,请跟踪自定义区段的加载事件
                  参数类型描述
                  params
                  object参数对象。
                  params.miniAppName
                  stringIframe类型自定义区段设置中指定的应用名称。必需

                  window.metaframe.partnerActions.pushNotification方法

                  方法签名:

                  Copy
                  Full screen
                  Small screen
                    pushNotification: (params: {
                      type: string; // use “success”, “warning”, “error” or “info”
                      text: string;
                      button?: {
                        text: string;
                        onClick: () => void;
                      };
                      durationInMs?: number;
                    }) => void;
                    

                    将新通知推送到通知栈。

                    参数类型描述
                    params
                    object参数对象。
                    paramps.type
                    string通知类型。可选值:“success”“warning”“error”“info”必需
                    paramps.text
                    string通知文本。必需
                    params.button.text
                    string按钮文字。必需
                    params.button.onClick
                    () => void单击按钮时调用的函数。必需
                    params.durationInMs
                    number通知在屏幕上的显示时长(单位:毫秒)。

                    window.metaframe.partnerActions.setIsCustomMiniAppVisible方法

                    方法签名:

                    Copy
                    Full screen
                    Small screen
                      setIsCustomMiniAppVisible: (params: {
                        miniAppName: string;
                        isVisible: boolean;
                      }) => void;
                      

                      显示或隐藏指定的自定义区段。

                      注:
                      要使此方法正常工作,必须在小组件中配置自定义区段。 调用此方法前,请验证元框架小组件是否已成功加载指定的自定义区段。为此,请跟踪自定义区段的加载事件
                      参数类型描述
                      params
                      object参数对象。
                      params.miniAppName
                      string在自定义区段设置中指定的应用名称。必需
                      params.isVisible
                      boolean是否在小组件中显示指定的自定义区段。必需

                      小组件事件

                      您可以订阅以下Metaframe事件:

                      参数类型
                      @metaframe-partner-events:app-loaded调用window.metaframe.create方法后成功加载Metaframe时,触发此事件。
                      @metaframe-partner-events:not-authorized-mini-apps-loaded当元框架成功加载在设置中启用了用户登录前显示此应用开关的自定义区段时触发此事件。
                      @metaframe-partner-events:authorized-mini-apps-loaded当元框架成功加载所有已配置的小组件区段(包括在设置中启用了用户登录后显示此应用开关的自定义区段)时触发此事件。
                      @metaframe-partner-events:login-successful用户成功登录Metaframe时触发此事件。它包含一个带有用户授权令牌的detail对象。
                      @metaframe-partner-events:logout-successful用户成功退出系统时触发此事件。
                      @metaframe-partner-events:mini-app-menu-button-clicked:<YOUR_MINI_APP_NAME>当用户单击元框架自定义区段时触发此事件。
                      @metaframe:custom-action:<ACTION_ID>用户在Metaframe中选择操作类型的自定义区段时,触发此事件。有关更多信息,请参阅跟踪自定义区段的事件

                      跟踪自定义区段的事件

                      您可以在元框架中添加“操作”类型的自定义区段。此区段将显示为一个按钮,单击后执行相应操作,如打开网站。

                      要跟踪单击自定义区段的事件,您需要订阅@metaframe:custom-action:<ACTION_ID>事件,其中<ACTION_ID>是在发布商帐户中设置自定义区段时生成的操作ID。

                      设置自定义区段点击事件侦听器的示例:

                      Copy
                      Full screen
                      Small screen
                      document.addEventListener("@metaframe:custom-action:00000000-0000-0000-0000-000000000000", () => {
                      
                       // Your code here...
                      
                      })
                      
                      本文对您的有帮助吗?
                      谢谢!
                      我们还有其他可改进之处吗? 留言
                      非常抱歉
                      请说明为何本文没有帮助到您。 留言
                      感谢您的反馈!
                      我们会查看您的留言并运用它改进用户体验。
                      上次更新时间: 2024年12月12日

                      发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

                      报告问题
                      我们非常重视内容质量。您的反馈将帮助我们做得更好。
                      请留下邮箱以便我们后续跟进
                      感谢您的反馈!