分发应用

Google Play EMM API 支持以下公开应用和专用应用分发方法:

  • 用户可以从 Google Play 企业版商店手动安装应用。
  • IT 管理员可以在用户的设备上远程安装应用。

通过 Google Play 企业版商店手动安装应用

您可以在 Devicepolicy 中定义可供用户安装的应用,并通过调用 Devices.update 进行设置。配置新设备时,您应在将 Google Play 企业版帐号添加到设备之前设置政策,否则在将帐号添加到设备后的短时间内,系统不会应用政策。

Play 商店的受管理行为由 policy.productAvailabilityPolicy 的值定义:

  • all:Play 商店中的所有公开应用均可供下载。
  • whitelist:只有 policy.productPolicy 中列出的应用可用。

在这两种情况下,policy.productPolicy 中的所有应用都会默认添加到企业的商店布局中。选择 whitelist 后,企业的商店布局是 Google Play 企业版商店的首页;如果选择 all,则可以在“工作应用”标签页中访问该布局。您可以允许客户通过嵌入 Google Play 企业版 iframe(请参阅使用 Google Play 企业版 iframe 整理应用)或集成自定义商店布局 API 来自定义企业的商店布局。

在用户的设备上远程安装应用

如需在用户设备上远程安装(也称为“推送安装”)应用,请在 Devicepolicy 中设置 policy.productPolicy.autoInstallPolicy。配置新设备时,您应在将 Google Play 企业版帐号添加到设备之前设置政策,否则在将帐号添加到设备后的短时间内,系统不会应用政策。

autoInstallMode 可以设置为:

  • doNotAutoInstall:系统不会自动安装应用。
  • autoInstallOnce:应用会自动安装一次,如果用户卸载应用,就不会再次安装。
  • forceAutoInstall:应用会自动安装,如果用户卸载应用,系统就会再次安装它。在受管设备上,DPC 应使用 DevicePolicyManager.setUninstallBlocked 禁止卸载。

如果失败(连接丢失、缺少存储空间等),系统会自动重试安装,直到安装成功。我们采用指数退避算法重试策略,以避免在发生不可恢复的故障时浪费电量和数据。

安装优先级

您可以通过设置 autoInstallPriority 来选择安装顺序。优先级必须是无符号整数,默认值为 0。应用将按递增顺序或优先级进行安装,这意味着系统会先安装优先级值较低的应用。

安装限制条件

您可以设置每个应用的安装限制条件,只需设置 autoInstallConstraint 即可控制设备在安装过程中所需的状态:

  • 设备是否应连接到 Wi-Fi 网络
  • 设备是否应在充电
  • 以及设备是否应该处于空闲状态(即未被用户主动使用)。

如果未立即满足约束条件,则受影响的安装将加入队列,直到满足约束条件。

autoInstallConstraint 中,AND 规则会在字段之间应用。例如,对于下面的 autoInstallConstraint,设备必须在充电并连接到不按流量计费的网络(例如 Wi-Fi)时才能安装应用:

"autoInstallConstraint": [
  "chargingStateConstraint" : "chargingRequired",
  "networkTypeConstraint" : "unmeteredNetwork"
]

在新配置的设备上自动安装应用

首次配置设备时,Google Play EMM API 会发送 NewDeviceEvent 通知。如需将应用自动推送到新配置的设备上,请监听 NewDeviceEvent 通知。从每个 NewDeviceEvent 中检索 userIddeviceId,然后调用 Devices.update 为该设备设置政策。

如需了解如何订阅 EMM 通知,请参阅设置 EMM 通知

分发用于封闭式测试的应用

封闭式测试可让应用开发者从可信用户那里获得关于其应用的早期版本的反馈。开发者可以在 Google Play 管理中心内设置封闭式测试。您可以使用 Play EMM API,让 IT 管理员能够将封闭式应用(也称为轨道)分发给特定用户。借助此功能,您的企业客户不仅可以测试第三方应用,还可以测试内部开发的专用应用。

符合条件的应用

在开发者将企业添加到应用的封闭式测试人员列表之前,应用应满足以下条件:

  • 该应用的正式版已在 Google Play 上发布。
  • 在 Play 管理中心内,应用的定价和分发范围页面启用了 Google Play 企业版的高级功能
  • 应用的任何封闭式版本都符合版本代码要求

将企业添加到封闭式测试中

应用开发者可以将企业添加到使用封闭式 Alpha 版测试使用 Google 网上论坛进行 Alpha 版测试方法的测试中。如需查看相关说明,请参阅有关如何设置开放式测试、封闭式测试或内部测试的指南。开发者需要输入每个参与企业的组织 ID(也称为“企业 ID”)。IT 管理员可以按以下步骤向第三方应用开发者提供其组织的 ID:

  1. 登录 Google Play 企业版商店
  2. 点击管理员设置
  3. 复制组织信息框中的组织 ID 字符串,并将其发送给开发者。

针对专用应用的其他要求

对于专用应用,开发者还需要在 Play 管理中心的定价和分发范围页面中添加每个参与该计划的企业的组织 ID。有关说明,请参阅发布专用应用

向用户分发封闭式轨道

如需检索特定应用可供企业使用的轨道列表,请调用 Products.get。响应中包含的 appTracks[] 列表包含每个应用可用的轨道。appTracks[].trackAlias 是您可以在 EMM 控制台中显示的轨道的用户可读名称,appTracks[].trackId 是轨道的机器可读 ID。

如需向用户授予对应用的封闭式轨道的可见性,请在 Devicepolicy 中设置 policy.productPolicy[].trackIds[]。如果设备有多个轨道,将安装版本代码最高的可用版本。

在某些情况下,例如以下情况,系统会自动从 Products.get 调用中移除 trackId:

  • 轨道的 APK 已提升到其他轨道或正式版。
  • 正式版更新后的版本高于轨道。
  • 开发者停止了轨道。

跟踪付费应用许可

对于付费应用,Grouplicenses 对象会跟踪企业拥有的许可数量以及使用中的许可数量。您可以调用 Grouplicenses.get 来获取应用的许可详细信息。

在设备上安装付费应用之前,企业必须拥有应用可用的许可。如果有许可,则会在设备上安装应用并创建 Entitlements 对象。Entitlements 对象会将许可与用户关联起来,并减少应用的可用许可数量。如果没有可用的许可,应用安装就会失败,且不会创建任何 Entitlements 对象。

免费分发的应用不能使用 GrouplicensesEntitlements 对象。