个人技术总结——UniPush在线消息推送

171909008邓兴靖 2023-06-05 21:38:36
这个作业属于哪个课程2023 软件工程春季
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标个人技术总结
其他参考文献《构建之法》

目录

  • 技术概述
  • 技术详述
  • 问题与解决
  • 我的总结
  • 参考文献

技术概述

unipush 可以实现用户消息通知。当 APP 用户相关状态或者系统功能状态变化时,可对用户进行及时告知,或者促使用户完成特定操作。我们团队对用户报名的小队活动快开始的时候使用了 unipush,由于该组件是 DCloud 实现的,且只能通过云端函数使用,所以调试麻烦,需要不断试错。

技术详述

  • 首先是在 Manifest.json 中开启 unipush2 的配置

img

  • 接着在 DCloud 开发者中心配置 unipush2

img

  • 由于后台使用的是 uniCloud 技术,所以不用配置个推服务器,直接创建 uni-cloud-push 云函数使用

img

img

  • 编写云函数的核心代码,下面重点展示发送消息的代码
await uniPush.sendMessage({
  push_clientid: event.cid,
  title: "小队活动即将开始",
  content: "您报名的小队活动" + list[i] + "即将开始,快来看看吧~",
  payload: event.payload,
  force_notification: true,
  request_id: event.request_id,
  badge: event.badge,
});
  • 前端在适当的场合获取 client_id,发送请求,接受消息
// 获取 client_id
uni.getPushClientId({
  success: (res) => {
    getApp().globalData.push_clientid = res.cid;
    push_clientid = res.cid;
    console.log("客户端推送标识:", push_clientid);
  },
  fail(err) {
    console.log(err);
  },
});

// 请求查看是否有新消息
uniCloud.callFunction({
  name: "uni-cloud-push",
  data: {
    uid: res.result.data.userId,
    cid: getApp().globalData.push_clientid,
  },
});

// 消息的回调方法,点击消息跳转
uni.onPushMessage((res) => {
  console.log(res);
  if (res.type == "click") {
    uni.reLaunch({
      url: "/pages/team/main",
      success: () => {
        plus.navigator.closeSplashscreen();
      },
    });
  }
});
  • 效果图

问题与解决

问题:

  • 由于该云函数只能跑在云端运行,一些打印的信息调试过程中是看不见的,且为了使用该功能,产品需要先进行云打包,调试上比较麻烦,非常花费时间

解决:

  • 在使用上,我先进行云打包,然后使用 USB 连接手机进行基座调试

  • 在调试上,我一开始先把云函数数据写死即将消息通知发送到特定手机上,并将该函数 URL 化,使得我可以使用 postMan进行测试,在测试通过之后我将死数据更换为使用网络传输得到以实现该功能

img

img

我的总结

  • 经过这次对于消息推送的学习,使得我明白了如何在 UniApp 中进行消息推送,自己也是进一步了解了该组件的底层工作机制即 webSocket 网络协议。那么通过这次总结也让我进一步梳理了总体工作流程,增进了对 Android 开发的认识,对于我自我能力提升来说是一份宝贵的财富。

参考文献

  1. uni-push2 统一推送

  2. 华为消息分类配置

...全文
649 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

586

社区成员

发帖
与我相关
我的任务
社区描述
软件工程-2022-23学年(第二学期)
软件工程 高校
社区管理员
  • LinQF39
  • promisekoloer
  • 异梦1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧