赞
踩
源码下载
PushKit_CodeLab_Clientdemo_ArkTs.zip
环境搭建
DevEco Studio版本:DevEco Studio NEXT Developer Beta1及以上。
HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta1 SDK及以上。
设备类型:华为手机、平板和2in1设备。
HarmonyOS系统:HarmonyOS NEXT Developer Beta1及以上。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才能确保工具的正常使用,详情请参考配置代理。
开发者可以参考以下链接,完成设备调试的相关配置:
使用本demo前,您需首先完成以下操作:
需要首先在AppGallery Connect上注册成为开发者,并创建HarmonyOS应用。详情可参见指导。
创建应用后,请您将应用的包名替换到AppScope/app.json5文件中。
替换包名后,您还需配置应用签名,具体操作可参见指导。
- // app.json5
- {
- "app": {
- "bundleName": "xxx.xxxx.xxxxx", // 替换为您的包名
- "vendor": "demo",
- "versionCode": 1000000,
- "versionName": "1.0.0",
- "icon": "$media:app_icon",
- "label": "$string:app_name"
- }
- }
完成应用签名后,您需要继续在AppGallery Connect上操作,开通推送服务。详情可参见指导。
选择“我的项目”,在项目应用列表中选择需要开通推送服务的应用。
在左侧导航栏选择“增长 > 推送服务”,点击“立即开通”,在弹出的提示框中点击“确定”。
本篇Codelab只对核心代码进行讲解,对于完整代码,我们会在源码下载或gitee中提供。
- ├─entry/src/main/ets // 代码区
- │ ├─abilities
- │ │ ├─MainAbility.ets // 主程序入口类
- │ │ └─TestClickActionAbility.ets // 通知栏点击事件能力类
- │ ├─pages // 存放页面文件目录
- │ │ ├─ClickActionInnerPage.ets // 点击跳转落地页面
- │ │ ├─GetTokenPage.ets // 申请Token页面
- │ │ └─MainPage.ets // 应用主页面
- │ ├─utils // 存放工具类文件目录
- │ │ └─Logger.ets // 日志类,管理系统日志
- └─entry/src/main/resources // 资源文件目录
主页面展示申请Push Token功能,点击按钮即可跳转到Token申请页面。
页面框架包含标题和按钮两个部分,分别对应代码中的Text组件和Button组件。
- // MainPage.ets
- build() {
- Flex({ direction: FlexDirection.Column }) {
- Text($r('app.string.MainAbility_desc'))
- .fontSize(36)
- .fontWeight(FontWeight.Bold)
- .fontColor('#000000')
- .height(48)
- .width('80%')
- .margin({top: '7.2%', left: '5%'})
- Button({type: ButtonType.Normal}){...}
- .width('90%')
- .height(140)
- .margin({ top: '21%', left: '5%' })
- .backgroundColor('#fff8f1e3')
- .borderRadius(24)
- .onClick(this.getToken)
- }
- .linearGradient({
- direction: GradientDirection.Top,
- repeating: true,
- colors: [['#FFFFFF', 0], ['#FFFFFF', 1]]
- })
- .height('100%')
- .width('100%')
- }
按钮组件包含标题、下划线、图片三个部分,分别对应代码中的Text,Rect和Image组件。
- // MainPage.ets
- Button({type: ButtonType.Normal}){
- Row() {
- Column() {
- Text($r('app.string.apply_token_title'))
- .fontSize(24)
- .fontWeight(FontWeight.Bold)
- .fontColor('#000000')
- Rect()
- .radius(1)
- .fill('#0A59F7')
- .height(2)
- .width(50)
- }
- .width(190)
- .height('100%')
- .alignItems(HorizontalAlign.Start)
- .padding({ left: 20, top: 50 })
-
- Column() {
- Image($r("app.media.push"))
- .width(100)
- .height(100)
- }
- .padding({ left: 30, top: 5 })
- }
- .width('100%')
- .height(140)
- }
- .width('90%')
- .height(140)
- .margin({ top: '21%', left: '5%' })
- .backgroundColor('#fff8f1e3')
- .borderRadius(24)
- .onClick(this.getToken)
点击Button按钮会调用getToken方法,路由到申请Token页面。
- // MainPage.ets
- private getToken = () => {
- router.pushUrl({ url: 'pages/GetTokenPage' });
- }
Push Token标识了每台设备上每个应用,开发者调用getToken()方法向Push服务端请求Token,获取到Token后可以将Token上报到您自己的应用服务器。后续您可以调用场景化消息接口,根据Token来推送消息。
申请Token页面包含标题、分割线、Token展示、按钮四个部分,分别对应代码中的Text、Divider、Text、Button组件。
- // GetTokenPage.ets
- build() {
- Flex({ direction: FlexDirection.Column }) {
- Row() {
- Text($r('app.string.apply_token_title'))
- .fontSize(24)
- .fontWeight(FontWeight.Bold)
- .fontColor('#ff100f0f')
- .height(30)
- .width(220)
- .margin({ left: 4 })
- }
- .height(32)
- .width(124)
- .margin({ top: 32, left: 12 })
-
- Divider().color('gray').strokeWidth(1)
- Text(this.showFlag)
- .fontColor(Color.Blue)
- .width('80%')
- .height('20%')
- .margin({ left: '10%'})
- Flex({ direction: FlexDirection.Column,
- justifyContent: FlexAlign.SpaceBetween }) {
- Button($r('app.string.apply_token_button'))
- .width('80%')
- .height(40)
- .margin({ left: '10%' })
- .backgroundColor('#fff38a07')
- .fontColor('#ffffffff')
- .fontSize(24)
- .fontWeight(FontWeight.Bold)
- .borderRadius(20)
- .onClick(this.getTokenSyn)
- }
- .height(144)
- .margin({ top: 36 })
- }
- .linearGradient({
- direction: GradientDirection.Top,
- repeating: true,
- colors: [['#FFFFFF', 0], ['#FFFFFF', 1]]
- })
- .height('100%')
- .width('100%')
- }
点击申请Token按钮,调用push组件的getToken方法获取Token。
- // GetTokenPage.ets
- private getTokenSyn = async () => {
- try {
- const pushToken = await pushService.getToken();
- hilog.info(0x0000, 'testTag', 'Get push token successfully.');
- this.showFlag = 'Successfully got push token, please save it.';
- } catch (err) {
- this.showFlag = 'Failed to get push token, please check the error log!';
- let e: BusinessError = err as BusinessError;
- hilog.error(0x0000, 'testTag', 'Get push token catch error: %{public}d %{public}s', e.code, e.message);
- }
- }
ArkUI基础组件、容器组件的使用。
使用页面路由跳转到指定页面并传递所需参数。
申请Push Token。
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
点击领取→【纯血版鸿蒙全套最新学习资料】(安全链接,放心点击)希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取~限时开源!!
鸿蒙(HarmonyOS NEXT)最新学习路线
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、(南向驱动、嵌入式等)鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
HarmonyOS Next 最新全套视频教程
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
《鸿蒙开发进阶》
《鸿蒙进阶实战》
大厂面试必问面试题
鸿蒙南向开发技术
鸿蒙APP开发必备
请点击→纯血版全套鸿蒙HarmonyOS学习资料
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,才能在这个变革的时代中立于不败之地。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。