SEO教程

SEO教程

Products

当前位置:首页 > SEO教程 >

如何成为小网站发布后的网络维护专员?主要负责哪些工作内容?

96SEO 2026-02-20 04:58 0


设备连接同一无线网络#xff0c;安装分布式手写板应用。

如何成为小网站发布后的网络维护专员?主要负责哪些工作内容?

进入应用#xff0c;点击允许使用多设备协同#xff0c;点击主页上查询…介绍

本篇Codelab使用设备管理及分布式键值数据库能力实现多设备之间手写板应用拉起及同步书写内容的功能。

操作流程

设备连接同一无线网络安装分布式手写板应用。

进入应用点击允许使用多设备协同点击主页上查询设备按钮显示附近设备。

选择设备确认若已建立连接启动对方设备上的手写板应用否则提示建立连接。

输入PIN码建立连接后再次点击查询设备按钮选择设备提交启动对方设备应用。

建立连接前绘制的内容在启动对方设备后同步此时设备上绘制的内容会在另一端同步绘制。

点击撤销按钮两侧设备绘制内容同步撤销。

相关概念

[设备管理]模块提供分布式设备管理能力。

[分布式键值数据库]分布式键值数据库为应用程序提供不同设备间数据库的分布式协同能力。

相关权限

本篇Codelab使用了设备管理及分布式键值数据库能力需要手动替换full-SDK并在配置文件module.json5文件requestPermissions属性中添加如下权限

[分布式设备认证组网权限]ohos.permission.ACCESS_SERVICE_DM。

[设备间的数据交换权限]ohos.permission.DISTRIBUTED_DATASYNC。

约束与限制

本篇Codelab部分能力依赖于系统API需下载full-SDK并替换DevEco

Studio自动下载的public-SDK。

本篇Codelab使用的部分API仅系统应用可用需要提升应用等级。

环境搭建

10。

鸿蒙指导参考qr23.cn/AKFP8k点击或者复制转到。

硬件要求

鸿蒙HarmonyOS与OpenHarmony文档籽料mau123789是v直接拿取

开发板类型[润和RK3568开发板]。

OpenHarmony系统4.0

环境搭建

完成本篇Codelab我们首先要完成开发环境的搭建本示例以RK3568开发板为例参照以下步骤进行

[获取OpenHarmony系统版本]标准系统解决方案二进制。

以4.0

Release版本为例

Studio的安装和开发环境配置。

开发环境配置完成后请参考[使用工程向导]创建工程模板选择“Empty

代码结构解读

本篇Codelab只对核心代码进行讲解对于完整代码我们会在gitee中提供。

代码区

主界面由导航栏及绘制区域组成导航栏包含撤回按钮及查询设备按钮。

绘制区域使用Canvas画布组件展示绘制效果。

Index.ets文件完成界面实现使用Column及Row容器组件进行布局。

Index.ets

撤回按钮Image($r(app.media.ic_back)).width($r(app.float.ic_back_width)).height($r(app.float.ic_back_height))...Blank()//

查找设备按钮Image($r(app.media.ic_hop)).width($r(app.float.ic_hop_width)).height($r(app.float.ic_hop_height))...}.width(CommonConstants.FULL_PERCENT).height(CommonConstants.TITLE_HEIGHT)Row()

{//

绘制区域Canvas(this.canvasContext).width(CommonConstants.FULL_PERCENT).height(CommonConstants.FULL_PERCENT)...}....width(CommonConstants.FULL_PERCENT).layoutWeight(CommonConstants.NUMBER_ONE)}.height(CommonConstants.FULL_PERCENT).width(CommonConstants.FULL_PERCENT)}...

}分布式组网

创建设备管理器。

设备管理器创建完成后注册设备上线离线监听信任设备上线离线时触发。

执行获取本地设备信息获取信任设备列表初始化展示设备列表等方法。

其中deviceManager类需使用full-SDK。

RemoteDeviceUtil.ets

ohos.distributedHardware.deviceManager;class

RemoteDeviceUtil

创建设备管理器deviceManager.createDeviceManager(CommonConstants.BUNDLE_NAME,(error,

value:

注册信任设备上线离线监听this.registerDeviceStateListener();//

获取本地设备信息this.getLocalDeviceInfo();//

获取信任设备列表this.getTrustedDeviceList();//

初始化展示设备列表this.initDeviceList();resolve(value);});}

catch

{Logger.error(RemoteDeviceModel,createDeviceManager

failed,

error${JSON.stringify(error)});}});}...

}注册设备状态监听。

已验证设备上线或有新设备验证通过时状态类型为ONLINE将设备添加至信任设备列表。

设备离线时状态类型为OFFLINE将设备从信任列表中移除。

RemoteDeviceUtil.ets

注册设备状态改变监听registerDeviceStateListener():

void

注册监听this.myDeviceManager.on(deviceStateChange,

(data)

deviceManager.DeviceStateChangeAction.ONLINE:

{this.deviceStateChangeActionOnline(data.device);break;}//

设备离线case

deviceManager.DeviceStateChangeAction.OFFLINE:

{this.deviceStateChangeActionOffline(data.device);break;}...}});}

catch

{Logger.error(RemoteDeviceModel,registerDeviceStateListener

failed,

error${JSON.stringify(error)});}}//

设备上线加入信任列表及展示列表deviceStateChangeActionOnline(device:

void

{this.trustedDeviceList[this.trustedDeviceList.length]

device;this.addToDeviceList(device);}//

设备下线将设备移出信任列表和展示列表deviceStateChangeActionOffline(device:

void

(this.trustedDeviceList[i].networkId

device.networkId)

{list.push(this.trustedDeviceList[i]);continue;}}this.deleteFromDeviceList(device);this.trustedDeviceList

list;}...

点击主界面的查询设备按钮执行发现设备方法注册设备发现监听任务同时拉起弹窗展示设备列表。

当弹窗关闭时执行停止发现设备方法注销监听任务。

RemoteDeviceUtil.ets

{Logger.info(RemoteDeviceModel,

deviceFound

exist${JSON.stringify(data)});return;}}this.discoverList[this.discoverList.length]

data.device;this.addToDeviceList(data.device);}startDeviceDiscovery():

void

注册发现设备监听this.myDeviceManager.on(deviceFound,

(data)

处理发现的设备this.deviceFound(data);});...let

info:

CommonConstants.SUBSCRIBE_MODE,medium:

CommonConstants.SUBSCRIBE_MEDIUM,freq:

CommonConstants.SUBSCRIBE_FREQ,isSameAccount:

false,isWakeRemote:

CommonConstants.SUBSCRIBE_CAPABILITY};//

发现周边设备this.myDeviceManager.startDeviceDiscovery(info);}

catch

{Logger.error(RemoteDeviceModel,startDeviceDiscovery

failed

error${JSON.stringify(error)});}}//

void

停止发现设备this.myDeviceManager.stopDeviceDiscovery(this.subscribeId);//

注销监听任务this.myDeviceManager.off(deviceFound);this.myDeviceManager.off(discoverFail);}

catch

{Logger.error(RemoteDeviceModel,stopDeviceDiscovery

failed

error${JSON.stringify(error)});}}...

若设备在信任设备列表执行startAbility()方法启动连接设备上的应用将当前的绘制信息作为参数发送至连接设备。

若设备不是信任设备执行authenticateDevice()方法启动验证。

此时连接设备提示是否接受接收连接后连接设备展示PIN码本地设备输入PIN码确认后连接成功。

再次点击查询设备按钮选择已连接设备点击确认启动连接设备上的应用。

RemoteDeviceUtil.ets

设备验证authenticateDevice(context:

common.UIAbilityContext,device:

deviceManager.DeviceInfo,positionList:

Position[]):

this.trustedDeviceList.filter((item:

device.deviceId

执行设备认证启动验证相关弹窗接受信任显示PIN码输入PIN码等this.myDeviceManager.authenticateDevice(device,

authParam,

{Logger.error(RemoteDeviceModel,authenticateDevice

failed

error${JSON.stringify(error)});}}//

启动连接设备上的应用startAbility(context:

device:

启动连接设备上的应用context.startAbility(wantValue).then(()

{Logger.info(RemoteDeviceModel,

startAbility

wantValue${JSON.stringify(wantValue)});}).catch((error:

Error)

{Logger.error(RemoteDeviceModel,

startAbility

error${JSON.stringify(error)});})}...

}资源释放

程序关闭时注销设备状态监听任务并释放DeviceManager实例。

RemoteDeviceUtil.ets

注销监听任务unregisterDeviceListCallback():

void

注销设备状态监听this.myDeviceManager.off(deviceStateChange);//

释放DeviceManager实例this.myDeviceManager.release();}

catch

{Logger.error(RemoteDeviceModel,unregisterDeviceListCallback

stopDeviceDiscovery

error${JSON.stringify(err)});}}...

}绘制功能

Canvas组件区域监听触摸事件按照按下、移动、抬起等触摸事件记录绘制的起点、中间点以及终点。

触摸事件触发时使用CanvasRenderingContext2D对象的绘制方法根据位置信息进行绘制。

绘制结束后将当前位置信息列表存入分布式键值数据库。

Index.ets

{Canvas(this.canvasContext)...}.onTouch((event:

TouchEvent)

{this.onTouchEvent(event);})...}...}//

TouchEvent):

{this.canvasContext.beginPath();this.canvasContext.lineWidth

CommonConstants.CANVAS_LINE_WIDTH;this.canvasContext.lineJoin

CommonConstants.CANVAS_LINE_JOIN;this.canvasContext.moveTo(positionX,

false,

{this.canvasContext.lineTo(positionX,

positionY);this.pushData(false,

false,

{this.canvasContext.lineTo(positionX,

positionY);this.canvasContext.stroke();this.pushData(false,

true,

{break;}}}pushData(isFirstPosition:

boolean,

存入位置信息列表this.positionList.push(position);if

{//

当前位置为终点时将位置信息列表存入分布式键值数据库this.kvStoreModel.put(CommonConstants.CHANGE_POSITION,

JSON.stringify(this.positionList));}}...

}点击撤销按钮时从位置列表中后序遍历移除位置信息直到找到轨迹的初始位置完成移除上一次绘制的轨迹。

移除完成后将位置信息列表存入分布式键值数据库中。

执行redraw()方法清空画板上的内容遍历位置信息列表重新绘制。

Index.ets

{...LocalStorageProp(positionList)

positionList:

撤销按钮Image($r(app.media.ic_back)).width($r(app.float.ic_back_width)).height($r(app.float.ic_back_height)).margin({

left:

CommonConstants.ICON_MARGIN_LEFT

}).onClick(()

{this.goBack();})...}.width(CommonConstants.FULL_PERCENT).height(CommonConstants.TITLE_HEIGHT)...}...redraw():

void

删除画布内的绘制内容this.canvasContext.clearRect(0,

使用当前记录的位置信息重新绘制this.positionList.forEach((position)

{...if

{this.canvasContext.beginPath();this.canvasContext.lineWidth

CommonConstants.CANVAS_LINE_WIDTH;this.canvasContext.lineJoin

CommonConstants.CANVAS_LINE_JOIN;this.canvasContext.moveTo(position.positionX,

else

{this.canvasContext.lineTo(position.positionX,

{this.canvasContext.stroke();}}});}//

撤回上一笔绘制goBack():

{break;}}this.redraw();this.kvStoreModel.put(CommonConstants.CHANGE_POSITION,

JSON.stringify(this.positionList));}...

}分布式键值数据库

使用分布式键值数据库需申请数据交换权限ohos.permission.DISTRIBUTED_DATASYNC。

应用启动时创建分布式键值数据库设置数据库数据改变监听。

数据改变时执行回调获取插入或更新数据列表遍历列表匹配位置信息列表的设置key更新位置列表后重新绘制。

Index.ets

KvStoreModel();...aboutToAppear()

{...this.createKVStore();}...createKVStore():

void

创建分布式键值数据库this.kvStoreModel.createKvStore(this.context,

(data:

distributedKVStore.ChangeNotification)

{//

使用分布式键值数据库内的内容重置位置信息列表this.positionList

[];let

data.updateEntries;entries.forEach((entry:

{if

(CommonConstants.CHANGE_POSITION

entry.key)

位置信息列表更新后重新绘制this.redraw();}});});}...

}创建分布式键值数据库。

设置数据库类型为KVStoreType.SINGLE_VERSION单版本数据库其他配置参考[创建数据库配置信息]。

创建数据库成功后调用enableSync()方法开启同步调用setDataChangeListener()方法订阅数据变更通知。

KvStoreModel.ets

distributedKVStore.SingleKVStore;...createKvStore(context:

common.UIAbilityContext,callback:

(data:

distributedKVStore.ChangeNotification)

void):

创建一个KVManager对象实例用于管理数据库对象this.kvManager

distributedKVStore.createKVManager(config);}

catch

{Logger.error(KvStoreModel,createKvStore

createKVManager

err${JSON.stringify(error)});return;}//

options:

distributedKVStore.KVStoreType.SINGLE_VERSION...};//

获取分布式键值数据库this.kvManager.getKVStore(CommonConstants.KVSTORE_ID,

distributedKVStore.SingleKVStore)

{...this.kvStore

开启同步this.kvStore.enableSync(true).then(()

createKvStore

{Logger.error(KvStoreModel,createKvStore

enableSync

error${JSON.stringify(error)});});this.setDataChangeListener(callback);}).catch((error:

Error)

{Logger.error(getKVStore,createKvStore

getKVStore

error${JSON.stringify(error)});})}...

}订阅数据变更通知。

创建分布式键值数据库设置数据变更订阅订阅类型为全部当更新数据集或插入数据集大于0时执行传入的callback()方法。

KvStoreModel.ets

distributedKVStore.SingleKVStore;...setDataChangeListener(callback:

(data:

distributedKVStore.ChangeNotification)

void):

订阅数据变更通知this.kvStore.on(dataChange,

distributedKVStore.SubscribeType.SUBSCRIBE_TYPE_ALL,(data:

distributedKVStore.ChangeNotification)

{if

{Logger.error(KvStoreModel,setDataChangeListener

on(dataChange)

err${JSON.stringify(error)});}}...

Index.ets

KvStoreModel();...aboutToDisappear()

{this.kvStoreModel.removeDataChangeListener();}...

}//

distributedKVStore.SingleKVStore;...removeDataChangeListener():

void

取消数据改变监听this.kvStore.off(dataChange);}

catch

{Logger.error(KvStoreModel,removeDataChangeListener

off(dataChange)

err${JSON.stringify(error)});}}...



SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback