华为接入
第一步:进入网站下载国内 我做的是国内,国外的还没做,有需要的可以联系我

华为sdk接入hms2.5.3 第二步:下载自己相关的需要的文件,但是HMSAgent是必须下载华为sdk接入hms2.5.3第三步:根据自己使用的工具进行下载,这里我用的ce 而且为了省事直接用的最后一个包
华为sdk接入hms2.5.3第四步:把下载好的解压然后,然后运行Agent下的bat生成src文件拷贝到自己创建的项目工程里,这里的工程要自己新建不能在demo的基础上做不然容易出错华为sdk接入hms2.5.3
第五步:创建好项目src复制过去肯定报错 因为没有添加jar和资源,所以我们要在解压,放入新项目的相应位置,然后就ok了
华为sdk接入hms2.5.3
第六步:以上配置完成下面就是抽调接口,华为更新 可以让我们更容易对一些方法抽调灵活使用,废话不多说直接上代码

初始化:直接调用这里就可以了
    HMSAgent.init(mActivity);
    LxLogger.d("HuaWei初始化", "HuaWei初始化");
登陆:
 // showLog("game login: begin");
        HMSAgent.Game.login(new LoginHandler() {
            @Override
            public void onResult(int retCode, GameUserData userData) {
                if (retCode == HMSAgent.AgentResultCode.HMSAGENT_SUCCESS && userData != null) {
                 //   showLog("game login: onResult: retCode=" + retCode + "  user=" + userData.getDisplayName() + "|" + userData.getPlayerId() + "|" + userData.getIsAuth() + "|" + userData.getPlayerLevel());
                    // 当登录成功时,此方法会回调2次,
                        // 第1次:只回调了playerid;特点:速度快;在要求快速登录,并且对安全要求不高时可以用此playerid登录
                        // 第2次:回调了所有信息,userData.getIsAuth()为1;此时需要对登录结果进行验签
                    if (userData.getIsAuth() == 1) {
                        // 如果需要对登录结果进行验签,请发送请求到开发者服务器进行(安全起见,私钥要放在服务端保存)。
                        // 下面工具方法仅为了展示验签请求的逻辑,实际实现应该放在开发者服务端。
                        GameLoginSignUtil.checkLoginSign(appId, cpId, game_priv_key, game_public_key, userData, new ICheckLoginSignHandler() {
                            @Override
                            public void onCheckResult(String code, String resultDesc, boolean isCheckSuccess) {
                             //   showLog("game login check sign: onResult: retCode=" + code + "  resultDesc=" + resultDesc + "  isCheckSuccess=" + isCheckSuccess);
                            //这里给服务器传入相应的登陆参数:
                            }
                        });
                    }
                } else {
                    //showLog("game login: onResult: retCode=" + retCode);
                }
            }
            @Override
            public void onChange() {
                // 此处帐号登录发生变化,需要重新登录
              //  showLog("game login: login changed!");
                login();
            }
        }, 1);
支付接口:参数一一对应,这是最重要的和参数的类型
 public void pay(Hashtable<String, String> productInfo) {
  final PayReq request = new PayReq();
  request.amount = productInfo.get("amount");
  request.productName = productInfo.get("productName");
  request.productDesc = productInfo.get("productDesc");
  request.requestId = productInfo.get("requestId");
  request.applicationID = "";// 应用ID,在华为开发者联盟上获取的APP ID。
  request.merchantId = "";// 商户ID。来源:在华为开发者联盟上获取的“支付ID”
  request.serviceCatalog = "X6";// 游戏设置为"X6",应用设置为"X5"
  request.sdkChannel = 3; // 游戏设置为3,应用设置为1。
  request.sign = PaySignUtil.calculateSignString(request, pay_priv_key);
  LxPluginWrapper.runOnMainThread(new Runnable() {
   @Override
   public void run() {
    // TODO Auto-generated method stub
    HMSAgent.Pay.pay(request, new PayHandler() {
     @Override
     public void onResult(int retCode, PayResultInfo payInfo) {
      // TODO Auto-generated method stub
      if (retCode == HMSAgent.AgentResultCode.HMSAGENT_SUCCESS && payInfo != null) {
       boolean checkRst = PaySignUtil.checkSign(payInfo, pay_pub_key);
       LxLogger.d("game pay: onResult: pay success and checksign=" + checkRst);
       if (checkRst) {
        // 支付成功并且验签成功,发放商品
       } else {
        // 签名失败,需要查询订单状态:对于没有服务器的单机应用,调用查询订单接口查询;其他应用到开发者服务器查询订单状态。
       }
      } else if (retCode == HMSAgent.AgentResultCode.ON_ACTIVITY_RESULT_ERROR
        || retCode == PayStatusCodes.PAY_STATE_TIME_OUT
        || retCode == PayStatusCodes.PAY_STATE_NET_ERROR) {
       // 需要查询订单状态:对于没有服务器的单机应用,调用查询订单接口查询;其他应用到开发者服务器查询订单状态。
      } else {
       LxLogger.d("game pay: onResult: pay fail=" + retCode);
       // 其他错误码意义参照支付api参考
      }
     }
    });
   }
  });
 }
上传信息接口:也是接口最重要
public void submitLoginGameRole(Map<String, String> data) {
  LxLogger.d("submitLoginGameRole");
  for (Map.Entry<String, String> entryData : data.entrySet()) {
   LxLogger.d("key:" + entryData.getKey() + " value:" + entryData.getValue());
  }
  GamePlayerInfo playerInfo = new GamePlayerInfo();
  // HashMap<String, String> playerInfo = new HashMap<String, String>();
  /**
   * 将用户的等级等信息保存起来,必须的参数为RoleInfo.GAME_RANK(等级)/RoleInfo.GAME_ROLE(角色名称)
   * /RoleInfo.GAME_AREA(角色所属区)/RoleInfo.GAME_SOCIATY(角色所属公会名称)
   * 全部使用String类型存放
   */
  /**
   * the CP save the level, role, area and sociaty of the game player into
   * the SDK
   */
  playerInfo.area = data.get("0");
  playerInfo.rank = data.get("roleLevel");
  playerInfo.role = data.get("roleName");
  playerInfo.sociaty = data.get("zoneName");
  HMSAgent.Game.savePlayerInfo(playerInfo, new SaveInfoHandler() {
   @Override
   public void onResult(int retCode) {
    // TODO Auto-generated method stub
    LxLogger.d("game savePlayerInfo: onResult=" + retCode);
    LxLogger.d("result.rtnCode != Result.RESULT_OK");
   }
  });
 }
悬浮窗接口:
华为sdk接入hms2.5.3
退出接口:
public void exit() {
  LxLogger.d("exit");
  System.exit(0);
 }
接口基本已经全部完成了下面是清单文件配置,这个应该就不用说的 按着要求一步一步配置就可以 了 




          

相关文章:

  • 2022-02-07
  • 2022-12-23
  • 2021-09-09
  • 2021-10-15
  • 2021-11-21
  • 2022-12-23
  • 2022-12-23
  • 2021-06-15
猜你喜欢
  • 2022-12-23
  • 2021-11-15
  • 2021-09-14
  • 2021-10-15
  • 2022-12-23
  • 2022-02-07
  • 2022-02-07
相关资源
相似解决方案