【Codelabs挑战赛—定制消息和配置】HarmonyOS鸿蒙Next定制告白消息

【Codelabs挑战赛—定制消息和配置】HarmonyOS鸿蒙Next定制告白消息

  1. 效果如下所示:

  2. 项目介绍:

    • 开发环境:DevEco Studio 3.0 Beta2 3.0.0.800 Empty Ability Template Java
    • 通过此项目,主要是学习如何在HarmonyOS上集成远程配置、应用内消息、AppLinking链接、云存储和分析服务等技术。
  3. 项目结构:

  4. 在Gradle文件中设置AppGallery Connect的相关依赖和SDK包:

    • a) 设置项目级 build.gradle:
      apply plugin: 'com.huawei.ohos.app'
      buildscript {
          repositories {
              maven {
                  url 'https://repo.huaweicloud.com/repository/maven/'
              }
              maven {
                  url 'https://developer.huawei.com/repo/'
              }
          }
          ...
          dependencies {
              classpath 'com.huawei.ohos:hap:3.0.5.2'
              classpath 'com.huawei.ohos:decctest:1.2.7.2'
              // 添加agconnect服务依赖
              classpath 'com.huawei.agconnect:agcp-harmony:1.3.0.300'
          }
      }
      allprojects {
          repositories {
              maven {
                  url 'https://repo.huaweicloud.com/repository/maven/'
              }
              maven {
                  url 'https://developer.huawei.com/repo/'
              }
          }
      }
      
    • b) 设置模块级 build.gradle:
      // Add the information to the bottom of the file.
      apply plugin: 'com.huawei.ohos.hap'
      apply plugin: 'com.huawei.agconnect'
      apply plugin: 'com.huawei.ohos.decctest'
      ...
      dependencies {
          implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
          testImplementation 'junit:junit:4.13.1'
          ohosTestImplementation 'com.huawei.ohos.testkit:runner:2.0.0.200'
          // 添加分析服务依赖
          implementation 'com.huawei.hms:hianalytics-harmony:6.3.2.301'
          // AGC基础SDK
          implementation 'com.huawei.agconnect:agconnect-core-harmony:1.3.0.300'
          // 调测设备AAID SDK
          implementation 'com.huawei.agconnect:agconnect-credential-harmony:1.3.0.300'
          // 集成应用内消息SDK
          implementation 'com.huawei.agconnect:agconnect-appmessaging-harmony:1.3.0.300'
          // 添加远程配置依赖
          implementation 'com.huawei.agconnect:agconnect-remoteconfig-harmony:1.3.0.300'
          // 添加AppLinking SDK
          implementation 'com.huawei.agconnect:agconnect-applinking-harmony:1.3.0.300'
      }
      
  5. 云存储:

  6. 远程配置:

  7. 应用内消息:

  8. App Linking:

  9. 添加配置文件:

    • 在AGC管理平台打开“项目设置”,下载配置文件“agconnect-services.json”,将下载的JSON文件放到DevEco Studio 项目的应用级目录下:
  10. 分析服务:

  • 由于应用集成了华为分析服务,完成相关配置后,打开应用,会弹出定制消息,此时会上报应用信息到AGC管理平台。
  1. 程序代码:
  • ability_main.xml:
    <?xml version="1.0" encoding="utf-8"?>
    <DirectionalLayout
        xmlns:ohos="http://schemas.huawei.com/res/ohos"
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:alignment="top"
        ohos:orientation="vertical">
        <Image
            ohos:id="$+id:image"
            ohos:height="match_content"
            ohos:width="match_parent"
            ohos:image_src="$media:first" />
    </DirectionalLayout>
    
  • MainAbility:
    package com.example.codechallengesdemo;
    
    import com.example.codechallengesdemo.slice.MainAbilitySlice;
    import com.huawei.agconnect.AGConnectInstance;
    import com.huawei.hms.analytics.HiAnalytics;
    import com.huawei.hms.analytics.HiAnalyticsInstance;
    import com.huawei.hms.analytics.HiAnalyticsTools;
    import ohos.aafwk.ability.Ability;
    import ohos.aafwk.content.Intent;
    
    public class MainAbility extends Ability {
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            super.setMainRoute(MainAbilitySlice.class.getName());
            // 初始化AGC SDK
            AGConnectInstance.initialize(getAbilityPackage());
            // 打开SDK日志开关
            HiAnalyticsTools.enableLog();
            // 初始化hiAnalytics kit
            HiAnalyticsInstance instance = HiAnalytics.getInstance(this);
        }
    }
    
  • MainAbilitySlice:
    package com.example.codechallengesdemo.slice;
    
    import com.example.codechallengesdemo.ResourceTable;
    import com.huawei.agconnect.appmessaging.AGConnectAppMessaging;
    import com.huawei.agconnect.appmessaging.AGConnectAppMessagingOnClickListener;
    import com.huawei.agconnect.appmessaging.model.Action;
    import com.huawei.agconnect.appmessaging.model.AppMessage;
    import com.huawei.agconnect.common.api.AGCInstanceID;
    import com.huawei.agconnect.remoteconfig.AGConnectConfig;
    import ohos.aafwk.ability.AbilitySlice;
    import ohos.aafwk.content.Intent;
    import ohos.agp.components.Image;
    import ohos.hiviewdfx.HiLog;
    import ohos.hiviewdfx.HiLogLabel;
    import ohos.media.audio.*;
    import ohos.media.common.BufferInfo;
    import ohos.media.common.Source;
    import java.nio.ByteBuffer;
    
    public class MainAbilitySlice extends AbilitySlice {
        private AGConnectAppMessaging appMessaging;
        private static final String TAG = MainAbilitySlice.class.getName();
        private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD000F00, TAG);
        private static final int SAMPLE_RATE = 44100;
        private static final int BUFFER_SIZE = 1024;
        private AudioRenderer audioRenderer;
        private Codec codec;
        private long interval = 0;
        private static final String flag = "late";
    
        @Override
        public void onStart(Intent intent) {
            super.onStart(intent);
            super.setUIContent(ResourceTable.Layout_ability_main);
            // 初始化音频播放相关参数
            initAudioRenderer();
            // 获取AAID
            getAAID();
            //配置应用内消息
            configAppMessage();
            // 读取远程配置
            readRemoteConfig();
        }
    }
    

安装应用后,打开应用程序,会播放音乐,更换应用内图片,同时弹出定制消息,点击按钮跳转到远程配置的链接。至此,HarmonyOS定制告白消息项目就结束了。


更多关于【Codelabs挑战赛—定制消息和配置】HarmonyOS鸿蒙Next定制告白消息的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

楼主好棒,期待更多的分享哦~

更多关于【Codelabs挑战赛—定制消息和配置】HarmonyOS鸿蒙Next定制告白消息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


点赞,

HarmonyOS鸿蒙Next定制告白消息的实现主要依赖于鸿蒙系统的分布式能力和ArkUI框架。通过分布式数据管理,可以在不同设备间同步消息内容。使用ArkUI的声明式UI开发模式,可以快速构建定制化的消息界面。具体实现步骤包括:

  1. 创建分布式数据对象,用于存储和同步消息内容;

  2. 使用ArkUI组件构建消息展示界面,支持自定义样式和布局;

  3. 通过分布式能力实现消息在多设备间的实时同步;

  4. 利用鸿蒙系统的通知服务,在目标设备上展示定制告白消息。

整个过程中,无需涉及Java或C语言,完全基于鸿蒙系统的原生开发框架和API实现。

在HarmonyOS鸿蒙Next中,定制告白消息可以通过以下步骤实现:

  1. 创建消息模板:使用MessageTemplate类定义消息的格式和内容。
  2. 配置消息参数:通过MessageParams设置消息的标题、内容、图标等参数。
  3. 发送消息:调用MessageServicesendMessage方法,将定制消息发送给指定用户。
  4. 处理用户响应:通过MessageCallback监听用户对消息的点击或反馈,进行相应处理。

示例代码:

MessageTemplate template = new MessageTemplate("告白消息");
MessageParams params = new MessageParams.Builder()
    .setTitle("我喜欢你")
    .setContent("你愿意和我在一起吗?")
    .setIcon(R.drawable.love_icon)
    .build();
MessageService.sendMessage(template, params, new MessageCallback() {
    @Override
    public void onResponse(boolean accepted) {
        if (accepted) {
            // 用户接受了告白
        } else {
            // 用户拒绝了告白
        }
    }
});

通过以上步骤,你可以在HarmonyOS中实现个性化的告白消息功能。

回到顶部