Android Management API开发:安卓应用内能否获取设备ID/名称
以下方案均满足无需使用设备专属二维码、无需生成单设备专属策略配置的限制要求:
方案1:后端通过AMAPI状态上报通道直接获取设备ID
在你当前使用的通用策略中配置deviceReportSettings参数,设置合理的设备状态上报频率,同时在AMAPI管理后台绑定你自有后端可访问的Pub/Sub消息订阅通道。配置生效后,所有绑定该通用策略的设备会主动上报状态数据,消息体中直接包含AMAPI全局唯一的设备标识name(格式为enterprises/{企业ID}/devices/{设备ID},即你需要的设备ID/名称)、硬件序列号、设备型号等字段,你的后端只要消费该订阅通道的消息,就能直接拿到全量设备的ID映射,不需要在设备端App做额外开发。方案2:设备端App通过系统受管接口直接读取设备ID
如果你需要设备端App主动把设备ID推送到自有服务器,只需要在通用策略中给你的工作配置区所属App添加READ_DEVICE_IDENTIFIERS授权,授权后App可以直接调用系统DevicePolicyManager接口拿到AMAPI分配的设备标识,参考实现代码:val devicePolicyManager = getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager // 该字段返回值即为AMAPI侧的设备唯一名称/ID val amapiDeviceId = devicePolicyManager.enrollmentSpecificId你之前尝试的托管配置方案只能拿到策略维度的公共元数据,本身就不支持下发单设备维度的动态标识,属于方案选型不匹配,不是配置错误。
方案3:后端定时拉取AMAPI设备列表做ID匹配
如果不想修改现有策略配置、也不想调整端上权限,可以在你自有后端加定时任务,定期调用AMAPI的设备列表拉取接口,接口返回的全量设备记录中每条都带name(设备ID)、硬件序列号、WiFi MAC地址等字段,你可以用端上可直接获取的硬件标识作为匹配键,把AMAPI的设备ID和你自有后端的设备记录做关联即可,全程不需要对单设备做单独配置。
注意:不要尝试通过托管配置通道传递单设备ID,托管配置是策略维度的全局静态配置,原生不支持按设备动态注入参数,这条路无法满足需求。
内容的提问来源于stack exchange,提问作者J Ramesh

