在前端开发的世界里,我们常常面临着多设备适配、快速迭代和用户体验优化的挑战。随着移动应用的复杂性不断增加,如何高效地开发和测试应用,同时确保它们在各种设备上都能提供出色的用户体验,成为了我们关注的焦点。
最近在开发鸿蒙系统应用的时候,关注到了鸿蒙 DevEco Studio
预览版的新特性,以及鸿蒙开发下如何解决前端开发不同设备适配和测试的思路,受益匪浅。它不仅提供了强大的开发工具和测试支持,还引入了一些独特的功能,如近场服务和App Linking,这些功能能够显著提升应用的交互性和用户体验。
本文将重点探讨鸿蒙开发中的三个关键模块:DevEco Studio、云测试与云调试,以及特色功能近场服务和App Linking。这些工具和功能如何帮助前端开发者更高效地开发应用,设置更多设备,同时提升用户体验。
一、鸿蒙 DevEco Studio:更强的生态结合能力
目前DevEco Studio最新版是 DevEco Studio 6.0.0 Beta5,提供了丰富的项目模板,帮助前端开发者快速创建HarmonyOS
应用项目。
新手一般都是基于Empty Ability,主要是用于Phone、Tablet、2in1、Car、Wearable、TV设备的模板,展示基础的Hello World功能。属于入门新手第一个模板项目。
DevEco Studio除了还提供了丰富的调试工具和实时预览UI的功能(实时预览和动态预览),方便开发者,在没有真机的情况下进行创作和开发。
实时预览主要指的是开发界面UI代码过程中,如果添加或删除了UI组件只需Ctrl+S进行保存,然后预览器就会立即刷新预览结果。
动态预览可以在预览器中操作应用/元服务的界面交互动作,如单击、跳转、滑动等。
历史上开发App的同学肯定很喜欢这个功能,因为它可以像web一样实时的反馈操作和效果。
DevEco Studio还有一个我特别喜欢的功能,就是数据模拟功能,由于代码的运行环境与真机设备上的运行环境不同,调用部分接口时无法获取到有效的返回值(例如获取电池电量信息等,在预览场景下batteryInfo.voltage返回的是一个固定的值0),就无法在预览时查看到不同返回值带来的界面变化。因此,Hamock提供了预览场景的模拟功能,在不改变业务运行逻辑的同时,开发者可以模拟UI组件上的属性或方法,或模拟import的模块接口。
import { MockKit, when, MockSetup } from '@ohos/hamock';
import { batteryInfo } from '@ohos.power';
// 创建一个 MockKit 实例
const mockKit = new MockKit();
// 模拟 batteryInfo.voltage 的返回值
when(mockKit.mock(batteryInfo, 'voltage')).thenReturn(3700); // 假设电压为 3700mV
// 使用模拟后的 batteryInfo
console.log(batteryInfo.voltage); // 输出 3700
上面就是一个实际的数据模拟方法,非常的方便。以上就是我历史上比较喜欢的一些DevEco Studio的功能。
除了以上的便利功能,还有一个Inspector双向预览的亮点能力非常值得一说,开启双向预览功能后,支持代码编辑器、UI界面和Component Tree组件树三者之间的联动:
在预览界面可以通过组件的属性面板修改可修改的属性或样式,在预览界面修改后,预览器会自动同步到代码编辑器中修改源码,并实时的刷新UI界面;同样的,如果在代码编辑器中修改源码,也会实时刷新UI界面,并更新组件树信息及组件属性。做到双向的预览同步。而且选中属性后,代码部分和预览界面也会同步高亮,非常方便定位和调试。
二、云测试与云调试:前端开发的设备适配的神器
1,云测试功能介绍和特点。
云测试是鸿蒙系统为开发者提供的一项强大工具,旨在解决开发者在设备机型不足和设备管理困难等问题上的痛点。通过云测试,开发者可以提前检测应用的兼容性、稳定性和性能,显著提升应用的上架效率。
云测试平台提供了300+鸿蒙真机,覆盖了华为的多种设备型号,可以通过设备列表进行常用的测试设备筛选和保存,减少了重复选择机型操作。
云测试平台还支持多种专项测试,包括兼容性测试、稳定性测试和性能测试等,并设置对应的测试时间,应用和。这些测试可以帮助开发者提前发现并解决应用在不同设备上的问题,确保应用的高质量发布。
最终生成如下的测试报告:
2,云调试功能介绍和优势
云调试是鸿蒙系统为开发者提供的另一项强大工具,旨在解决开发者在远程调试上的痛点。通过云调试,开发者可以快速获取目标机型,进行便捷的远程调试,快速复现和修改应用问题。
云调试功能允许开发者快速连接到远程设备,实时查看应用的运行状态,可以打开调试界面上传应用,类似一台可控的云手机。
应用上传完成之后可以通过HiLog查看应用的日志,支持导出。
当然也支持shell调试和截屏操作,如果用过云手机的同学应该比较了解这种远程调试的方法,非常方便处理不同机型上的兼容性问题。
三、特色功能:近场服务与App Linking
1,近场服务特色功能介绍
这个也是我比较喜欢的一个特色功能,顾名思义,它的功能是基于位置感知技术,通过小艺建议、花瓣地图等渠道智能推荐用户所需的服务。我以文旅行业为场景举几个例子:
景区门票推荐:当用户靠近景区时,通过位置感知技术,系统可以自动向用户推荐景区门票购买服务,用户无需手动搜索,即可快速获取购票信息并完成购买。
文创产品推荐:当用户在景区的文创商店附近时,近场服务可以向用户推荐相关的文创产品,增加用户的购买意愿。
以文创产品推荐为例子,开发者可以基于信标设备向用户推送内容卡片,通过意图注册和意图推送,让用户看到喜欢的商品推荐,进入开发者自己的APP落地页。具体的接入文档可以 查看这里。
2,App Linking特色功能介绍
App Linking可以通过系统分享能力,实现扫码直达应用内容。它支持 Android、iOS、HarmonyOS 和 Web 等多种平台的跳转链接。无论用户是否已经安装了该应用,App Linking 都能够按照您指定的方式进行跳转,告别了传统的scheme link方式,还要兼容不同的生态系统。
他的使用场景比如用户在社交媒体上分享应用的内容链接,其他用户点击该链接后,可以直接拉起对应应用,查看链接内容。或者在广告中使用 App Linking 链接,用户点击链接后可以直接跳转到应用内指定页面,提升广告的转化率。
它的接入方法也非常简单,只需要应用开发者在服务域名上部署一个applinking.json,配置跳转规则以及在应用中接入App Linking SDK就可以了。
下边是一个Java的伪代码的接入方式,需要初始化App Linking的SDK,然后处理传入的参数,然后指定跳转的规则,以及注册和创建App Linking的分享链接。
// 1. 初始化 App Linking SDK
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化 App Linking SDK
AGConnectAppLinking.initialize(this);
// 检查是否有传入的链接
handleIncomingLink();
}
// 2. 处理传入的链接
private void handleIncomingLink() {
Intent intent = getIntent();
if (intent != null && intent.getData() != null) {
Uri uri = intent.getData();
if (uri != null) {
// 解析链接中的参数
String deepLink = uri.getQueryParameter("deep_link");
if (deepLink != null) {
// 处理深度链接
handleDeepLink(deepLink);
}
}
}
}
// 3. 处理深度链接
private void handleDeepLink(String deepLink) {
// 根据深度链接跳转到应用内的具体页面
if (deepLink.equals("home")) {
// 跳转到首页
startActivity(new Intent(this, HomeActivity.class));
} else if (deepLink.equals("product")) {
// 跳转到产品详情页
startActivity(new Intent(this, ProductActivity.class));
} else {
// 默认跳转到首页
startActivity(new Intent(this, HomeActivity.class));
}
}
// 4. 创建并分享 App Linking 链接
public void createAndShareLink(String deepLink) {
// 构建 App Linking 链接
AGConnectAppLinking.Builder builder = AGConnectAppLinking.newBuilder(this);
builder.setDeepLink(deepLink);
builder.setFallbackLink("https://example.com/fallback");
builder.setAnalyticsParameters("utm_source=example&utm_medium=example&utm_campaign=example");
// 生成长链接
String longLink = builder.buildLongLink();
// 分享链接
shareLink(longLink);
}
// 5. 分享链接
private void shareLink(String link) {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, link);
startActivity(Intent.createChooser(shareIntent, "Share Link"));
}
4. 四、总结
本文介绍了鸿蒙DevEco Studio与云测试的大部分功能点,其中DevEco Studio通过丰富的模板和实时预览调试工具等,显著提升了开发效率,同时也让我们更加期待一下鸿蒙PC版本下的DevEco Studio版本的公测。
云测试与云调试借助300+的鸿蒙真机,解决了设备适配难题,确保应用的高质量发布。而近场服务和App Linking则通过智能推荐和一步直达,优化了用户的前端体验。
这些工具和功能不仅提高了开发效率,还增强了应用的市场竞争力。随着鸿蒙系统的持续发展,我们期待更多鸿蒙的创新,为开发者和鸿蒙用户带来更多的开发体验与便利。