当前位置: 首页>移动开发>正文

android brv接入 华为android设备接入

在客户端接入华为登陆和华为支付

一、 集成 SDK

下载SDK

包括两个:HMS Agent(下载 .zip 文件,后面需要进行自定义处理)和 HMS SDK(提供:Gradle 依赖或下载 .jar 文件)。

注意:使用的HMS SDK Agent的主版本号必须与HMS SDK相同。例如HMS SDK Agent 2.6.3.301,2.6.3即为主版本号。

下载 SDK

HMS SDK 使用 Gradle 依赖方式

配置仓库,在工程的 build.gradle 文件如下位置添加:

allprojects {
repositories {
jcenter()
maven {url 'http://developer.huawei.com/repo/'}
}
}

在模块 build.gradle 文件中添加如下依赖:

String HMSSDKVer = '2.6.3.301'
implementation 'com.huawei.android.hms:hwid:'+ HMSSDKVer // 登陆
implementation 'com.huawei.android.hms:iap:' + HMSSDKVer // 支付

注意:版本号要同 Agent 保持一致

集成 Agent

在1.1中下载的 Agent 包,解压缩,根据实际情况运行其中的脚本。执行下面操作的前提是 appid 已经申请下来。

首先进入 HMSAgent_2.6.3.301/ 目录,在命令行运行脚本:

// 在Mac下执行,为了避免换行符的问题需要先执行下
cat GetHMSAgent_cn.sh | tr "^M" "\n" > GetHMSAgent_cn_new.sh
// 注意 ^M是通过:Ctrl+v 、Ctrl+M 输入得到的,复制或输入^M无效
// 接着修改下文件权限
chmod 777 GetHMSAgent_cn_new.sh
// 执行文件
./GetHMSAgent_cn_new.sh

接下来就按提示根据实际情况进行输入和选择。

看到输出提示“按回车键结束”后,可以看到在脚本所在目录中看到目录copysrc,将AppManifestConfig.xml中的内容添加到工程的 AndroidManifest.xml文件中,将 java/目录中的 com/ 目录整体拷贝到工程中。

到此添加集成 SDK 完成。

二、接入

调用 init 接口,在 Application 的 onCreate 方法中初始化 HMSAgent。

HMSAgent.init(this);

调用 connect 接口

HMSAgent.connect(this, new ConnectHandler() {
@Override
public void onConnect(int rst) {
LogUtil.d("huawei connect:" + rst);
}
});

注意:必须在应用启动后就调用该接口

调用checkUpdate接口

调用该接口,当华为市场上传了新版本,那么将出现升级新版本的提示框,用户确认后,将自动下载安装新版本。

HMSAgent.checkUpdate(this, new CheckUpdateHandler() {
@Override
public void onResult(int rst) {
LogUtil.d("huawei checkUpdate:" + rst);
}
});

注意:该方法也必须在应用启动时调用,否则会影响审核。

调用登录方法

HMSAgent.Hwid.signIn(true, new SignInHandler() {
@Override
public void onResult(int rst, SignInHuaweiId result) {
// 打印返回码
LogUtil.d("huawei sign resutlCode: " + rst);
if (rst == HMSAgent.AgentResultCode.HMSAGENT_SUCCESS && null != result) {
// 打印用户信息
LogUtil.d("userInfo = " + result.toString());
} else {
// 提示登录失败码
ToastUtil.show(LoginActivity.this, rst);
}
}
});

调用支付方法

// payReq 支付请求类实例,最好是服务器端给到这些数据
HMSAgent.Pay.pay(payReq, new PayHandler() {
@Override
public void onResult(int retCode, PayResultInfo payInfo) {
if (retCode == HMSAgent.AgentResultCode.HMSAGENT_SUCCESS && payInfo != null) {
// 此处如果是本地处理逻辑的话需要校验签名是否正确,如果是服务器处理的话就是成功支付后的逻辑
} else if (retCode == HMSAgent.AgentResultCode.ON_ACTIVITY_RESULT_ERROR
|| retCode == PayStatusCodes.PAY_STATE_TIME_OUT
|| retCode == PayStatusCodes.PAY_STATE_NET_ERROR) {
// 需要重新获取订单状态
} else {
ToastUtil.show(context, "支付失败, code = " + retCode);
}
}
});

三、集成、接入中遇到的问题

脚本执行的时候遇到问题:

a) 执行脚本后无反应

b) 提示:exec format error

c) 提示:parse error near 'elif'

解决办法:上面集成 Agent 中已给出解决办法。

一开始 HMS Agent 同 HMS SDK 版本不一致,导致初始化失败,提示-1000。


https://www.xamrdz.com/mobile/49q1959924.html

相关文章: