【AGC】博主在专栏更新内容后,及时通知关注他的用户去阅读系列二

【AGC】博主在专栏更新内容后,及时通知关注他的用户去阅读系列二 接前文博主在专栏更新内容后,及时通知关注他的用户去阅读系列一

触发记录用户的订阅信息

  1. 开通云函数服务
  2. 本地编辑和打包操作云数据库的相关函数。

a. 项目中引入AGC云数据库相关模块,并初始化认证信息。

const agconnect = require('@agconnect/common-server');
const clouddb = require('@agconnect/database-server/dist/index.js');
const SubscriptionRecord = require('./model/SubscriptionRecord.js');
let api_client_name = "./model/agc-apiclient-test.json";
let path = require('path');
let api_client_path = path.join(__dirname, api_client_name);
agconnect.AGCClient.initialize(agconnect.CredentialParser.toCredential(api_client_path));

b. 初始化云数据库

try {
    const agcClient = agconnect.AGCClient.getInstance();
    clouddb.AGConnectCloudDB.initialize(agcClient);
    const agconnectCloudDB = clouddb.AGConnectCloudDB.getInstance(agcClient);
    const cloudDBZoneConfig = new clouddb.CloudDBZoneConfig('ArticleZone');
    cloudDBZoneClient = agconnectCloudDB.openCloudDBZone(cloudDBZoneConfig);
    let result = { "message": "openCloudDBZone success" };
    logger.info(result);
} catch (error) {
    let result = { "initDB message": error.message };
    logger.info(result);
    callback(result);
}

c. 插入用户订阅信息到云数据库,用于存储用户订阅信息。

async function upsertSubscriptionRecord(SubscriptionRecord, callback, logger) {
    if (!cloudDBZoneClient) {
        console.log("CloudDBClient is null, try re-initialize it");
        let result = { "message": "CloudDBClient is null" };
        logger.info(result);
        return;
    }
    try {
        resp = await cloudDBZoneClient.executeUpsert(SubscriptionRecord);
        console.log('The number of upsert record is:', resp);
        let result = { "message": "upsertSubscriptionRecord success " };
        logger.info(result);
    } catch (error) {
        let result = { "upsert err ": error.message };
        logger.info(result);
        callback(result);
    }
}

d. 查询订阅列表,用于判断用户是否订阅作者。

async function querySubscriptionRecordWithOrder(authorId, phone, callback, logger) {
    try {
        const cloudDBZoneQuery = clouddb.CloudDBZoneQuery.where(SubscriptionRecord.SubscriptionRecord).equalTo("authorId", parseInt(authorId)).equalTo("phone", phone);
        const resp = await cloudDBZoneClient.executeQuery(cloudDBZoneQuery);
        console.log('The number of query records is:', resp.getSnapshotObjects().length);
        isSubscription = resp.getSnapshotObjects().length > 0 ? true : false;
        if (isSubscription) {
            // await sendSMS(phone);
        } catch (error) {
            let result = { "query err ": error.message };
            logger.info(result);
            callback(result);
        }
    }
}
  1. 创建云函数,将上一步打包的函数上传到该云函数中。
  2. 在上步创建的云函数中创建HTTP触发器
  3. 在应用客户端集成云函数SDK。
  4. 初始化云函数,调用HTTP触发器获取云数据库相关操作结果。
function = AGConnectFunction.getInstance();
HashMap<String, String> map = new HashMap<>();
map.put("type", "1");
map.put("articleId", msg.getArticleId());
map.put("authorId", msg.getAuthorId());
map.put("phone", MainApplication.phone);
map.put("uid", MainApplication.uid);
function.wrap("insert-article-$latest").call(map)
    .addOnCompleteListener(new OnCompleteListener<FunctionResult>() {
        @Override
        public void onComplete(Task<FunctionResult> task) {
            if (task.isSuccessful()) {
                String value = task.getResult().getValue();
                JSONObject object = new JSONObject(value);
                String message = (String) object.get("message");
                // 云函数返回成功
            }
        }
    });

内容变更向关注用户发送短信

  1. 开通短信服务
  2. 调试向用户发送短信

测试功能

  1. 应用中新发布一个文章。
  2. 在AGC推送服务页面新增一条推送消息,推送给测试手机,手机是否收到消息提示用户有新内容发布,点击通知栏,是否可以跳转至详情页。
  3. 在详情页关注作者,检查数据库中是否已经存入相关信息。
  4. 重新发布一个文章,检查是否收到更新内容的推送消息。

下载Demo

获取Demo


3 回复

在鸿蒙系统中,开发者可以通过使用AGC(AppGallery Connect)的推送服务来实现博主在专栏更新内容后,及时通知关注他的用户去阅读的功能。具体步骤如下:

  1. 集成推送服务:首先,开发者需要在鸿蒙应用中集成AGC的推送服务。这包括在build.gradle文件中添加相关依赖,并在config.json中配置推送服务的权限和参数。

  2. 创建推送消息:在AGC控制台中,开发者可以创建推送消息。消息内容可以包括专栏更新的标题、摘要以及跳转链接。开发者可以选择推送的目标用户群体,例如所有用户或特定标签的用户。

  3. 设置推送时间:开发者可以设置推送消息的发送时间,例如在专栏更新后立即发送,或者在用户活跃的时间段发送,以提高消息的打开率。

  4. 处理推送消息:在鸿蒙应用中,开发者需要处理接收到的推送消息。这包括在Ability中重写onPushMessage方法,解析推送消息的内容,并根据消息中的跳转链接打开相应的专栏页面。

  5. 用户点击通知:当用户点击推送通知时,应用会根据推送消息中的跳转链接打开相应的专栏页面,用户即可阅读更新的内容。

通过以上步骤,开发者可以在鸿蒙系统中实现博主在专栏更新内容后,及时通知关注他的用户去阅读的功能。

在AGC(AppGallery Connect)中,博主可以通过“消息推送”功能,在专栏更新后及时通知关注他的用户。具体操作如下:进入AGC控制台,选择“增长”>“消息推送”,创建新推送任务,设置推送内容、目标用户(如关注该博主的用户),并选择推送时间。通过这种方式,博主可以有效提升用户阅读率,增强用户粘性。

回到顶部