目录

联运应用需完成以下内容的开发:

业务

必选/可选

(中国大陆)

必选/可选

(非中国大陆)

说明

应用初始化

必选

可选

  • 中国大陆发布的应用:在应用启动时进行华为联运服务的初始化,用于数据统计和公告展示。

  • 中国大陆以外发布的应用:不强制要求。

初始化华为分析

强烈推荐

可选

联运应用建议在应用启动时初始化华为分析服务,便于您统计和分析应用基础数据。

升级

必选

可选

  • 中国大陆发布的应用:应用启动时必须使用华为升级接口进行应用升级。

  • 中国大陆以外发布的应用:不强制要求。

认证服务

强烈推荐

强烈推荐

联运应用推荐接入认证服务,可以帮助开发者统一管理包括华为帐号、微信、邮箱、匿名帐号等多种帐号类型的用户,使开发者免于自行搭建用户认证系统。

帐号

有条件可选

可选

  • 中国大陆发布的应用:有帐号体系则必须接入华为帐号服务。

  • 中国大陆以外发布的应用:不强制要求。

应用内支付

必选

必选

联运应用必须接入华为应用内支付。

应用外支付

推荐

不支持

联运应用需要在华为应用市场应用详情页面展示商品时接入,目前仅支持发布地区包含中国大陆的应用。

崩溃服务

推荐

推荐

联运应用推荐接入崩溃服务,实时监测应用的崩溃情况,快速解决崩溃问题。

A/B测试

推荐

推荐

联运应用推荐使用A/B测试服务,通过分组实验判断不同方案优劣,优化应用体验。

性能管理推荐

推荐

联运应用推荐使用性能管理服务,实时监控应用的性能情况,快速精准修复性能问题,持续提升用户体验。

应用初始化

场景介绍

用户点击应用图标打开应用,应用后台启动时需要对应用进行初始化,用于数据统计和公告展示。

说明:
如果您的应用有闪屏广告,请在闪屏广告结束后再进行应用初始化。

业务流程

  1. 用户在移动设备中点击应用图标启动应用。

  2. 应用执行启动程序,加载应用相关资源,具体启动程序由开发者自行完成。

  3. 应用在启动程序中调用JosApps.getJosAppsClient方法获取JosAppsClient实例。

  4. HMS SDK返回当前应用的JosAppsClient实例。

  5. 应用调用JosAppsClient.init方法进行应用初始化。

  6. 如果AppGallery Connect中配置了应用公告,HMS SDK将向用户弹出公告页面。

注意事项

开发步骤

本功能涉及的关键开发步骤如下:

调用JosApps.getJosAppsClient方法初始化JosAppsClient对象,并调用JosAppsClient.init方法进行初始化。

如果在应用启动时初始化,getJosAppsClient方法中signInHuaweiId可传入null。

  1. private void init() {
  2.    JosAppsClient appsClient = JosApps.getJosAppsClient(this, null);
  3.    appsClient.init();
  4.    Log.i(TAG, "init success");
  5. }

init方法不返回执行结果,应用无需关注执行结果。

初始化华为分析

场景介绍

华为分析服务(Huawei Analytics)预置大量分析模型,可帮助您清晰地了解用户的行为方式,从而实现用户、产品、内容的深度洞察,让您实现基于数据驱动的运营,可以就应用营销和产品优化制定明智的决策。

联运服务建议开发者在应用启动时初始化华为分析服务,用于采集华为预定义的自动采集事件,包括:

自动采集事件的详细说明请参考自动采集事件。

注意事项

不同终端平台的限制:

隐私说明

华为分析服务作为数据处理者不会主动收集用户的个人数据,由开发者按适用的法律法规决定采集哪些个人数据,并维护个人用户在其个人数据方面享有的权利。如果开发者有采集用户数据,请参考 样例 在应用中提供隐私声明。

开发步骤

在应用启动时,初始化HUAWEI Analytics Kit。

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3.    super.onCreate(savedInstanceState);
  4.    setContentView(R.layout.activity_main);
  5.    //打开SDK日志开关
  6.    HiAnalyticsTools.enableLog();
  7.    HiAnalyticsInstance instance = HiAnalytics.getInstance(this);    
  8. }    

初始化完成后,HUAWEI Analytics Kit将自动采集系统级事件和Activity页面事件,开发者可以通过华为分析功能进行一些基础数据分析,详细指导请参见华为分析操作指南。

如果开发者需要实现更复杂的预置事件和自定义事件埋点与上报,请参见华为分析开发指南。

升级

应用升级的详细步骤请参见应用升级检测。

认证服务

如果您的应用需要支持第三方帐号(华为帐号、微信、QQ、Facebook等)、邮箱、手机、匿名账号等登录方式,您可能需要在服务端构建一个用户认证系统来统一管理这些帐号的登录功能,这将消耗大量的系统构建和维护成本。

AppGallery Connect认证服务可以帮助您免于自行搭建用户认证系统,您无需另外购买和搭建服务器,只需在应用客户端简单调用认证服务提供的API即可为您的应用实现用户注册、登录等功能,极大的缩短您的应用开发周期,降低您的系统构建成本。

认证服务不依赖华为帐号,它支持华为帐号、微信、QQ、Facebook、微博、Google、Twitter、邮箱、手机、匿名帐号等多种帐号登录方式,您可以在您任意渠道的应用中使用它,让它来帮您统一管理应用的用户登录功能。另外,认证服务不限于在华为设备中运行,其他非华为的Android设备和iOS设备也可以运行认证服务。

联运应用建议您在接入华为帐号服务前接入认证服务,详细指导请参见认证服务开发指南。

帐号

联运应用接入华为帐号功能,需要参考华为帐号开发指南开发华为帐号相关功能。

应用内商品支付

联运应用接入华为支付,需要参考华为支付开发指南开发应用内支付支付相关功能。

应用外商品支付

应用外商品是指在AppGallery Connect的商品管理系统(PMS)中创建的商品,进行了商品营销配置后,可以直接在华为应用市场的应用详情页中展示商品宣传图、商品名称、商品描述,供用户点击购买。

注意:

应用外PMS商品支付功能目前仅支持发布地区包含中国大陆的应用。


应用外商品支付分为以下两种方式:

        - 兑换码支付:开发者可以提前在华为AppGallery Connect中配置商品兑换码,用户使用兑换码购买华为应用市场的商品后,华为服务器直接通知开发者服务器完成商品发货。

 - HMS Core发起支付:用户点击购买华为应用市场的商品后由华为HMS Core发起支付,在支付完成后由华为服务器通知开发者服务器完成商品发货。

DeepLink方式的应用外商品支付仅需在配置商品营销信息时配置DeepLink地址,用户点击购买后将直接跳转到该DeepLink地址,后续支付和发货流程与应用内商品支付流程一致,参见华为支付开发指南。

兑换码支付方式仅需参考配置虚拟商品配置商品兑换码,并在配置商品营销信息时配置发货地址即可,无需额外代码开发。

HMS Core发起支付的方式需要开发者开发商品直购和掉单查询功能,本章节将具体介绍此功能的开发。

前提条件

已参见配置商品营销信息配置商品营销信息。

商品直购

接收发货通知:

1、商品直购成功后,华为数字商品服务器会调用通知发货接口通知开发者服务器对已经完成购买的商品发货。

请求消息样例:

  1. POST {第三方应用服务器url} HTTP/1.1
  2. Content Type : application/json ; charset=UTF-8
  3. {  
  4.  "data": {
  5.    "developerId": "234234234",
  6.    "appId": "1231333",
  7.    "orderId": "sdfsfff32324324234234",
  8.    "productNo": "product344",
  9.    "openId": "openId13123",
  10.    "count": 1,
  11.    "ts": 12312313123131123
  12.  },
  13.  "sign": "string"
  14. }  

2、开发者参见获取验签公钥获取用于验证订单信息的公钥。

3、开发者服务器收到发货通知后,参考验签示例对发货通知消息的sign字段验签,并根据查询订单相关数据的有效性,向华为服务器返回处理结果。

返回消息样例:

  1. {
  2.  "error": {
  3.    "errorCode": 0,
  4.    "errorMsg": "string"
  5.  }  
  6. }  
  7. or  
  8. {  
  9.    "data": {
  10.    "result": 0
  11.  }
  12. } 

4、开发者根据商品ID和当前用户信息完成发货操作,此部分由开发者自行完成。

发货成功主动通知:

1、开发者参考创建API客户端章节创建用于访问华为服务器接口的API客户端。

说明:

API客户端仅需创建一次。

2、开发者调用获取Token接口获取用于API客户端认证的的access_token。

3、开发者服务器在发货成功后调用发货成功通知接口向华为服务器发送通知,传入access_token。通知成功后华为服务器刷新订单状态。

请求消息样例:

  1. {  
  2.  "orderId": "string",
  3.  "productNo": "string",
  4.  "openId": "string",
  5.  "status": 0
  6. "ts": 12312313123131123
  7. }    

响应消息样例:

  1. {
  2.  "error": {
  3.  "errorCode": 0,
  4.  "errorMsg": "string"
  5.  }  
  6. }    
  7. or     
  8. {  
  9.  "data": {
  10.  "result": 0
  11.   }    
  12. }    

掉单查询

商品直购后通知发货过程可能发生通知发货失败而产生掉单,此时华为服务会将该订单标识为未发货状态。当应用启动时需要主动查询当前华为帐号是否有未发货的订单,如果有掉单数据需通知开发者服务器发货。开发者服务器完成发货后通知华为服务器发货成功,华为服务器将订单状态修改为发货状态。

开发步骤:

1、应用启动时主动调用JosApps.getProductClient方法初始化ProductClient实例。

  1. ProductClient productClient =  JosApps.getProductClient(this);

2、应用调用ProductClient.getMissProductOrder方法查询未发货的订单。

说明:

本步骤仅为建议,开发者可根据查询结果感知当前设备中是否存在已登录的华为帐号,正式的查询将在步骤4中进行。

HMS SDK会根据当前设备中已经登录授权的华为帐号查询该帐号的掉单数据。如果当前设备中未登录华为帐号,则不返回数据。

  1. productClient.getMissProductOrder(this)
  2.         .addOnSuccessListener(new OnSuccessListener<ProductOrderList>() {
  3.             @Override
  4.             public void onSuccess(ProductOrderList productOrderInfos) {
  5.                 if (productOrderInfos == null) {
  6.                     LogUtil.i("QueryDPSMissProductList", "not have miss product");
  7.                     return;
  8.                 }
  9.                 StringBuffer stringBuffer = new StringBuffer();
  10.                 for (ProductOrderInfo productOrderInfo : productOrderInfos) {
  11.                     stringBuffer
  12.                             .append("TradeId:").append(productOrderInfo.getTradeId()).append("\r\n")
  13.                             .append("ProductNo:").append(productOrderInfo.getProductNo()).append("\r\n")
  14.                             .append("OrderId:").append(productOrderInfo.getOrderId()).append("\r\n")
  15.                             .append("Sign:").append(productOrderInfo.getSign()).append("\r\n")
  16.                             .append("--------------\r\n:");
  17.                 }
  18.                 LogUtil.i("QueryDPSMissProductList", stringBuffer.toString());
  19.             }
  20.         }).addOnFailureListener(new OnFailureListener() {
  21.             @Override
  22.             public void onFailure(Exception e) {
  23.                 if (e instanceof ApiException) {
  24.                     ApiException apiException = (ApiException) e;
  25.                     LogUtil.i("QueryDPSMissProductList", "getMissProductOrder failed:" + apiException.getStatusCode());
  26.                 }
  27.             }
  28.         });

3、引导用户进行华为帐号授权登录。

说明:

为了更好的用户体验,建议开发者将华为帐号与开发者自己的帐号体系绑定,以便于用户可以同时浏览华为帐号和非华为帐号购买的订单。

4、用户的华为帐号授权登录后,应用再次调用ProductClient.getMissProductOrder方法确认掉单数据。

5、应用调用ProductOrderInfo.getSign方法获取订单信息中的签名字符串,使用获取验签公钥中获取的验签公钥参考对掉单数据验签对订单信息进行验签。

6、验签通过后,应用客户端通知应用服务端发货。开发者服务器发货完成后向华为服务发送通知,具体参见发货成功通知。

崩溃服务

AppGallery Connect崩溃服务是一个轻量级崩溃分析服务,它可以零代码快速集成。集成崩溃服务后您可以通过崩溃报告了解您的应用崩溃情况,实时监测应用质量,详细指导请参见崩溃服务开发指南。

A/B测试

A/B测试是一种对照实验方法,为目标制定多个实现方案,让一部分用户使用A方案,另一部分用户使用B方案,根据用户反馈来做方案选择,提高决策效率的同时降低决策风险,详细指导请参见A/B测试操作指南。

性能管理

AppGallery Connect性能管理服务提供分钟级应用性能监控能力,开发者可以在AppGallery Connect查看和分析性能管理服务收集到的应用性能数据,从而全面了解所开发应用的性能特点,快速精准修复应用存在的性能问题,持续提升应用的用户体验。详细指导请参见性能管理开发指南。