鸿蒙next 手游sdk重磅来袭

2024-08-15  本文已影响0人  xq9527

前言导读

各位同学大家好,有段时间没有更新博客, 最近在开发鸿蒙next手游sdk 所以就想分享一下 那么废话不多说我们正式开始。

效果图 :

image.png image.png image.png

具体实现

import { XPopup } from '@chinalike/popup'
/**
 * 创建人:xuqing
 * 创建时间:2024年7月28日21:59:59
 * 类说明:对外接口
 *
 *
 */
import { CustomCenterPopup } from '../components/popup/CustomCenterPopup'
import Logger from '../utils/Logger'
import { RoleInfo } from '../bean/RoleInfo'
import { ServiceInfo } from '../bean/ServiceInfo'
import { LoginCallback } from '../callback/LoginCallback'
import { DataStoreController } from './DataStoreController'
import { ExitCenterPopup } from '../components/popup/ExitCenterPopup'

export  class GameSdk {
  public  static instance: GameSdk | null = null



 public  static getInstance() {
    if (!GameSdk.instance) {
      GameSdk.instance = new GameSdk()
    }
    return GameSdk.instance
  }
  // 设置方法为私有
  private  constructor() {

  }
  public  init(){
    Logger.error("GameSdk --> init")
  }

  public  login(logincallback :LoginCallback) {
    DataStoreController.getInstance().setLoginCallback(logincallback);
    XPopup.Builder().asCustomPopup(new CustomCenterPopup()).show()
  }
  //区服上报
  public  servicelogin(servieinfo:ServiceInfo){
    Logger.error("servieinfo  -- > "+servieinfo.getSid());
    Logger.error("servieinfo  -- > "+servieinfo.getRole_id());
    Logger.error("servieinfo  -- > "+servieinfo.getRole_name());
    Logger.error("servieinfo  -- > "+servieinfo.getRole_level());
    Logger.error("GameSdk --> servicelogin")


  }
  // 登记变化上报
  public  updateroleinfo(roleinfo:RoleInfo){
    Logger.error("roleinfo  -- > "+roleinfo.getSid());
    Logger.error("roleinfo  -- > "+roleinfo.getRole_id());
    Logger.error("roleinfo  -- > "+roleinfo.getRole_name());
    Logger.error("roleinfo  -- > "+roleinfo.getRole_level());
    Logger.error("GameSdk --> updateroleinfo");
  }

  public  pay(){
    Logger.error("GameSdk --> pay")
  }

  public  exitgame(){
    XPopup.Builder().asCustomPopup(new ExitCenterPopup()).show()
    Logger.error("GameSdk --> exitgame")
  }

  public aboutToAppear(){

    Logger.error("GameSdk --> aboutToAppear")

  }

  public  onPageShow(){

    Logger.error("GameSdk --> onPageShow")

  }

  public aboutToDisappear(){
    Logger.error("GameSdk --> aboutToDisappear")

  }

  public  onPageHide(){

    Logger.error("GameSdk --> onPageHide")
  }

  onBackPress(){
    Logger.error("GameSdk --> onBackPress")

  }
}

回调接口

export  interface  LoginCallback{

  loginsuccess?: (data?:string) => void

  loginerror?: (error?:string) => void
}
public  servicelogin(servieinfo:ServiceInfo){
  Logger.error("servieinfo  -- > "+servieinfo.getSid());
  Logger.error("servieinfo  -- > "+servieinfo.getRole_id());
  Logger.error("servieinfo  -- > "+servieinfo.getRole_name());
  Logger.error("servieinfo  -- > "+servieinfo.getRole_level());
  Logger.error("GameSdk --> servicelogin")


}
public  updateroleinfo(roleinfo:RoleInfo){
  Logger.error("roleinfo  -- > "+roleinfo.getSid());
  Logger.error("roleinfo  -- > "+roleinfo.getRole_id());
  Logger.error("roleinfo  -- > "+roleinfo.getRole_name());
  Logger.error("roleinfo  -- > "+roleinfo.getRole_level());
  Logger.error("GameSdk --> updateroleinfo");
}

接入测试

import { RoleInfo } from '../bean/RoleInfo';
import { ServiceInfo } from '../bean/ServiceInfo';
import { GameSdk } from '../out/GameSdk';
import Logger from '../utils/Logger'


@Entry
@Component
struct Indextwo {
  @State message: string = 'Hello World';

  build() {
    Column(){
      Button('初始化')
        .height(45)
        .margin({top:45})
        .onClick(()=>{
          GameSdk.getInstance().init();
        })
      Button('登录')
        .height(45)
        .margin({top:45})
        .onClick(()=>{
          GameSdk.getInstance().login({
            loginsuccess(data){
              Logger.error("登录成功回调  --- > "+data)
            },
            loginerror(error){
              Logger.error("登录失败回调")
            }
          });
        })
      Button('区服登录上报')
        .height(45)
        .margin({top:45})
        .onClick(()=>{

          let serviceinfo:ServiceInfo=new ServiceInfo();
          serviceinfo.setSid("1");
          serviceinfo.setRole_id("1000");
          serviceinfo.setRole_name("漩涡鸣人");
          serviceinfo.setRole_level("3000");
          GameSdk.getInstance().servicelogin(serviceinfo);
        })
      Button('角色等级上报')
        .height(45)
        .margin({top:45})
        .onClick(()=>{
          let roleinfo:RoleInfo=new RoleInfo();
          roleinfo.setSid("1");
          roleinfo.setRole_id("1000");
          roleinfo.setRole_name("漩涡鸣人");
          roleinfo.setRole_level("3000");
          GameSdk.getInstance().updateroleinfo(roleinfo);
        })

      Button('支付')
        .height(45)
        .margin({top:45})
        .onClick(()=>{
          GameSdk.getInstance().pay();
        })
      Button('退出游戏')
        .height(45)
        .margin({top:45})
        .onClick(()=>{
          GameSdk.getInstance().exitgame();

        })

    }.width('100%')
    . height('100%')
  }

  aboutToAppear(){
    GameSdk.getInstance().aboutToAppear()
  }

  onPageShow?(){

    GameSdk.getInstance().onPageShow()

  }


  aboutToDisappear?(){
    GameSdk.getInstance().aboutToDisappear()

  }

  onPageHide?(){
    GameSdk.getInstance().onPageHide()
  }


  onBackPress?(){
    GameSdk.getInstance().onBackPress()

  }

}

测试接入登录回调数据

image.png

我们可以在控制台看到我们登录回调回来的数据返回,我们在游戏接入方拿到数据后只需要需要验证的数据去服务端验证登录接口即可

如何打包

[图片上传失败...(image-dc89f3-1723773586449)]

image.png image.png image.png

最后总结:

1 鸿蒙截止目前,不支持对App包进行二次重签名,从而无法实现二次重打包。如果SDK有变更,只能重新出Har给研发重新接入,并由研发出游戏包。 2 鸿蒙可以将代码和资源封装成Har,类似于Android的aar文件。研发可将Har文件放入工程,并进行依赖。 3 目前各大头部厂商都加速鸿蒙的原生app 开发我相信游戏行业也会跟进的所以我觉得各位是时候学习一波鸿蒙了。今天的文章就讲到这里有兴趣的同学可以继续研究 如果你觉得文章还不错麻烦给我三连 关注点赞和转发 如果了解更多鸿蒙开发的知识 可以关注坚果派公众号 。 谢谢

上一篇 下一篇

猜你喜欢

热点阅读