背景
盒马跟苹果合作,在配送&餐饮场景率先适配支持iOS实时活动&灵动岛,登上Apple中国区官网和App Store Today推荐。不仅获得巨大品牌宣传声量和社区传播,同时也把盒马优质服务透传给消费者,赢得大家认可。具体技术方案参见社区前述文章《盒马iOS Live Activities&灵动岛 配送场景实践》。
今年发布的鸿蒙4.0系统,推出的实况窗功能跟苹果灵动岛颇为相似,在盒马的配送&餐饮场景也非常合适;同时以盒马用户分布来看,盒马Android用户中华为手机占比很高,鸿蒙受众体量庞大,因此我们与华为的产品和研发团队进行沟通对接,讨论在盒马的探索落地。
跟美团、航旅纵横一起,盒马是第一批支持HarmonyOS 4实况窗功能的三方应用,整个探索落地节奏和时间还是比较紧张的。7月基于华为beta版实况通知API进行联调开发,8月初赶在华为开发者大会前上线,同时进行多轮体验细节优化,8月底华为正式对外开放实况服务。
盒马App版本5.73.0刚上线一周,订单配送和门店取餐实况通知数据表现非常亮眼,通知点击率相比普通push消息高达数十倍,随着App版本升级和鸿蒙4.0系统用户覆盖率上升,实况通知业务数据应该还会有很大增长空间。也欢迎各位技术发烧友们,下载更新盒马App至5.73.0及以上版本,抢先体验华为实况窗功能。
用户在盒马App购买即时配送商品,想知道订单配送状态,之前需要频繁打开盒马App进入订单详情查看;通过配送服务接入实况通知,桌面锁屏和胶囊屏订单状态实时感知更便捷。
订单状态 | 履约状态(前端) | 推送域 | 实况通知文案(变量信息高亮展示) |
已付款 | 待发货 | 交易 | 标题:支付成功 内容:订单将于指定时间内配送,请关注 |
待发货 | 商品准备中 (开始拣货) | 履约 | 标题:商品准备中 内容:小二正在全力作业,包裹即将出发 |
配送中 | 配送中 | 履约 | 标题:骑手配送中 【正常】据您2.8公里,预计30分钟送达 【雨】距您300米,骑手正风雨兼程赶来 【雪】距您300米,下雪中,骑手正赶来 【恶劣天气兜底】距您300米,天气恶劣,骑手正赶来 |
交易完成 | 配送完成 | 交易 | 标题:配送完成 内容:您的订单已成功送达 |
实况胶囊效果
盒马鲜生门店海鲜岛堂食点餐时,用户付款取号后,之前经常要去服务台问餐品进度,取餐时要给顾客发短信或者打电话,遇到人多或者顾客过号经常会有客诉。通过餐饮服务接入实况通知,锁屏桌面出餐状态更新,菜品制作进度尽在掌握。
订单状态 | 菜品进度 | 推送域 | 实况通知文案 |
已付款 | 已点餐 (无取餐码) | 交易 | 标题:Z准备中 内容:点餐成功,请关注实时动态。 |
配送中 | 待分料 | 餐饮 | 标题:Z准备中 内容:前方N单制作中,预计X分钟出餐 |
分料完成/加工中 | 餐饮 | 标题:Z待加工 内容:已备货完成,即将入锅。 | |
烹饪中 | 餐饮 | 标题:Z加工中 内容:厨师正在为您精心烹饪 | |
已出餐 (自动展开) | 餐饮 | 标题:Z已出餐 | |
交易完成 | 已取餐 | 餐饮 | 标题:Z已取餐 |
交易关闭 | 已关闭 | 餐饮 | 标题:订单关闭 内容:抱歉给您带来不便,感谢支持与理解 |
核心流程大致以下三步:
盒马的业务特点是线下门店+线上App融合的新零售创新业态,在盒马App里面要实现一个实况通知推送,涉及到很多跨团队合作。详细业务流程如上图所示,以生鲜配送为例,各角色核心职责为:
盒马App跟集团淘系其他App一样,消息服务接入集团统一Agoo推送平台。端侧AccsSDK封装了华为Push SDK的初始化和服务注册能力,对外并不暴露获取华为PushToken的接口。我们采取了一些hack办法复写AccsSDK部分代码逻辑,在初始化时 调用getToken方法获取PushToken;在消息接收服务中调用onNewToken方法刷新PushToken。并且把它做成全局通用方法,避免不同场景对PushToken过度获取与更新,导致华为推送服务的不稳定。
支付成功接口返回实况通知数据示例:
"liveActivityDTOs": [
{
"content": {
"itemPic": "//img.alicdn.com/bao/uploaded/i3/3991285532/O1CN011qjhdMs6GYWlIaI_!!3991285532.gif",
"title": "支付成功",
"content": "订单将于指定时间内配送"
},
"id": "3447600912033344233",
"scenario": "fulfill_delivery_track"
}
]
Android 应用可以调用 NotificationManager notify 接口创建实况通知,开发者可以指定id和Notification对象。Id即为实况通知activityId,由开发者生成,在设备内要保持唯一,以免影响到实况通知的正确更新。
在盒马实际场景,我们可以使用订单号来创建activityId,实际情况下配送订单和点餐订单两种场景生成activityId的逻辑是不一样的。具体为:
盒马不同用户购买的商品往往不一样,辅助区的商品图片需要根据用户订单商品个性化展示。但是华为官方技术和设计文档对辅助区做了限制:“44*44vp,支持展示:图片、胶囊带文字、icon & logo、纯文本”。这意味着不支持网络图片的渲染,我们采取做法是 对服务端返回的商品图片链接进行处理,其中对于普通商品图,通过Phenix图片库直接下载到本地,转成Bitmap;对于Gif动图,通过网络库下载获取Gif图片第一帧,再转成Bitmap;最后调用华为原生API更新到辅助区。
样例 | 场景 | 映射关系 | 示例 |
配送 | 配置文案:取‘标题信息’ | 骑手配送中 | |
餐饮 | 配置文案:取‘标题信息’ | 500g小青龙已出餐 |
样例 | 场景 | 映射关系 | 补充说明 |
配送 | 图标 盒马LOGO 主文本 标题 副文本 部分内容 | 状态&部分内容取值:
| |
餐饮 | 图标 盒马LOGO 主文本 标题 副文本 取餐码 |
作者:黄定磊(图地)
来源:微信公众号:阿里巴巴终端技术
出处:https://mp.weixin.qq.com/s/6jQS8ifmZPIr_p31sm28IQ
页面更新:2024-02-19
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号