首页 > 其他分享 >Uniapp下GoEasy通知栏推送不工作问题排查记录

Uniapp下GoEasy通知栏推送不工作问题排查记录

时间:2023-06-27 19:01:02浏览次数:48  
标签:Uniapp 厂商 GoEasy 通知 app 配置 是否 推送

我们是uniapp开发的app,项目中的系统消息推送使用的是GoEasy Websocket 实时推送,上线一段时间后,客户反馈说,当app没有在前台运行时也需要想办法通知用户一些重要的系统通知。那么此时通知栏推送就需要集成了。
集成通知栏推送很麻烦,国内一些公司做了一些插件来帮我们打通app跟厂商之间的api的调用,这确实也大大减少了开发者的工作量,但是在集成厂商通道的过程中还是遇到了一些问题, 我这里记录一下,也方便之后为其他app项目集成厂商通道时方便排错。

为什么选择GoEasy原生插件来实现通知栏推送 而不是unipush?

  1.     使用GoEasy原生插件来推送通知栏提醒只会在需要推送通知栏的时候推送,不会滥推给客户带来骚扰。
  2.     app前台运行时我们使用的是 GoEasy Websocket, 所以 GoEasy知道客户端的连接情况,根据GoEasy websocket的连接情况来推送该推送的通知栏提醒。 如果用unipush,这个是否在线的判断,就需要我自己来做,而且我也很难判断,又不可能每条都推送通知栏提醒。
  3.     GoEasy通知推送为付费服务,当通知栏推送不工作时,有专人协助我排查问题,但是使用unipush,虽然免费,但是收不到通知栏推送消息时,几乎只能靠自己 和百度来解决问题,调试成本高。

通知栏推送的分类和基本工作方式


通知栏推送分两种:

    本地通知
    离线通知

本地通知,指app在后台运行,且goeasy websocket连接未断开时,处理的通知栏推送,此时通知栏推送是goeasy sdk完成的,无上架要求。

离线通知, 指goeasy连接断开或者app进程被杀后,需要通过厂商推送来实现的通知栏提醒。什么意思呢? 就是这种情况下,只有通过各个手机厂商自己的推送服务平台向手机推送通知栏推送。目前goeasy支持以下厂商:

  1.     APNs (iOS苹果)
  2.     小米 (需要上架才能推送)
  3.     华为
  4.     vivo (需要上架才能推送)
  5.     oppo
  6.     魅族
  7.     FCM (这个只适用海外用户通过google服务来进行通知栏推送,国内的项目用不上,因为google服务被墙了)

收不到本地通知的常见原因

  1.     初始化时allowNotification值是否为true

     

  2.     发送消息时是否有带notification的相关参数

     

  3.     在手机系统设置里确认,该app的通知栏提醒为“允许”状态
  4.     GoEasy的sdk版本是否低于2.2.8,如果是,请在官网下载最新的sdk进行集成
  5.     检查manifest.json中权限配置是否勾选NOTIFICATION相关权限,并检查manifest.json的源码视图中是否有同步更新

     

  6.     检查manifest.json中模块配置是否勾选上了push模块, 且一定不能勾选unipush,检查manifest.json的源码视图中distribute节点中配置中是否包含pushRegisterMode参数配置?pushRegisterMode是unipush的配置,个别hbuilder版本下,模块配置中没有勾选unipush但是源码视图中有。如果有,需要删除这个参数。
  7.     GoEasy连接是否已经断开, 如果已经断开,则需要集成厂商通道才能推送通知栏提醒
    (注意大多数vivo手机一切换到后台运行后,app的某些资源几乎会马上回收导致goeasy连接断开,所以需要结合goeasy后台的在线客户端页面来确认连接是否还在)
  8.     如果是付费应用,排查是否购买了通知栏推送服务

收不到离线通知的常见原因

APNs (iOS苹果离线推送)不工作

  1.     app在后台运行是否可以收到通知栏提醒,如果收不到说明代码或者环境有问题,需要先解决这个问题再往下看
  2.     是否添加了原生插件并按文档要求打包自定义基座(特别是是须勾选了push模块且不能勾选unipush)
  3.     确认iOS开发证书是否包含push notification权限,如果没有,需要重新生成开发证书
  4.     确认iOS推送证书是否配置正确

    a. 请确认是否在GoEasy后台上传时的iOS的推送证书【跟制作基座时用的证书是完全不同的证书,打包时用的是开发证书,厂商推送是推送证书】

    b. ios推送证书与开发证书的bundle id是否一致

    c. 推送证书是否是测试环境跟正式环境通用的证书

    d. 如果您选择的运行证书的环境为正式环境,您的app是否已经上架app store

    e. 如果app已经上架,需要选择正式环境,如果选择了测试环境,则收不到

小米离线推送不工作

  1.     app在后台运行是否可以收到通知栏提醒,如果收不到说明代码或者环境有问题,需要先解决这个问题再往下看
  2.     是否添加了原生插件并按文档要求打包自定义基座(特别是是须勾选了push模块且不能勾选unipush)
  3.     小米开放平台填写的应用包名是否与制作自定义基座时填写的Android包名完全一致
  4.     小米推送服务没有通过申请。app需要在小米应用市场上架,并在小米开发平台申请推送服务,只有申请通过后才能使用小米离线推送。
  5.     在GoEasy网后台配置uniapp通知栏推送小米参数时提示无效,导致没有成功配置小米厂商
        解决方案:小米如果是刚开启的推送权限,需要等待几分钟后才会生效。您可以等3分钟以后再去配置
  6.     打自定义基座时报错“arguments invalid”,在原生插件配置页面,没有正确配置厂商相关参数
        解决方案:检查配置值的前后是否有多余的空格; 其次检查值是否正确,比如appkey 跟appsecret的值要正确,不要填错了
  7.     受到小米厂商推送限制影响。如果至少收到过一次离线推送,说明厂商配置没有问题,可能受到小米厂商限制,需要申请小米厂商分类消息。 参考文档:https://docs.goeasy.io/2.x/common/notification/channel_category

华为离线推送不工作


  1.     app在后台运行是否可以收到通知栏提醒,如果收不到说明代码或者环境有问题,需要先解决这个问题再往下看
  2.     是否添加了原生插件并按文档要求打包自定义基座(特别是是须勾选了push模块且不能勾选unipush)
  3.     华为开发者平台填写的应用包名是否与制作自定义基座时填写的Android包名完全一致
  4.     华为开发者平台中的推送服务是否成功的开启
  5.     是否正确的生成了SHA256证书指纹
  6.     打自定义基座时报错“arguments invalid”,在原生插件配置页面,没有正确配置厂商相关参数
        解决方案:检查配置值的前后是否有多余的空格; 其次检查值是否正确
  7.     goeasy后台厂商通道配置参数要正确
  8.     受到华为厂商推送限制的影响。如果至少收到过一次离线推送,说明厂商配置没有问题,可能受到华为厂商限制,需要申请华为厂商分类消息。 参考文档:https://docs.goeasy.io/2.x/common/notification/channel_category

vivo离线推送不工作


  1.     app在后台运行是否可以收到通知栏提醒,如果收不到说明代码或者环境有问题,需要先解决这个问题再往下看 (注意大多数vivo手机一切换到后台运行后,app的某些资源几乎会马上回收导致goeasy连接断开,所以需要结合goeasy后台的在线客户端页面来确认连接是否还在)
  2.     是否添加了原生插件并按文档要求打包自定义基座(特别是是须勾选了push模块且不能勾选unipush)
  3.     vivo开发者平台填写的应用包名是否与制作自定义基座时填写的Android包名完全一致
  4.     vivo开发者平台中的推送服务是否已经通过申请
  5.     app是否在vivo应用市场已上架
  6.     打自定义基座时报错“arguments invalid”,在原生插件配置页面,没有正确配置厂商相关参数
        解决方案:检查配置值的前后是否有多余的空格; 其次检查值是否正确
  7.     goeasy后台厂商通道配置参数要正确
  8.     受到vivo厂商推送限制的影响。如果至少收到过一次离线推送,说明厂商配置没有问题,可能受到vivo厂商限制,需要发送时需要根据业务真实指定classification参数, 0:运营类消息,1:系统类消息,不填默认为1。 参考文档:https://docs.goeasy.io/2.x/common/notification/channel_category

oppo离线推送不工作

  1.     app在后台运行是否可以收到通知栏提醒,如果收不到说明代码或者环境有问题,需要先解决这个问题再往下看
  2.     是否添加了原生插件并按文档要求打包自定义基座(特别是是须勾选了push模块且不能勾选unipush)
  3.     oppo开发者平台填写的应用包名是否与制作自定义基座时填写的Android包名完全一致
  4.     oppo开发者平台中的推送服务是否已经通过申请
  5.     打自定义基座时报错“arguments invalid”,在原生插件配置页面,没有正确配置厂商相关参数
       解决方案:检查配置值的前后是否有多余的空格; 其次检查值是否正确,appkey,appsecret, appserversecret 的值要正确的填写
  6.     goeasy后台厂商通道配置参数要正确
  7.     受到oppo厂商推送限制的影响。如果至少收到过一次离线推送,说明厂商配置没有问题,可能受到oppo厂商限制,需要申请oppo厂商分类消息。 参考文档:https://docs.goeasy.io/2.x/common/notification/channel_category

魅族离线推送不工作


  1.     app在后台运行是否可以收到通知栏提醒,如果收不到说明代码或者环境有问题,需要先解决这个问题再往下看
  2.     是否添加了原生插件并按文档要求打包自定义基座(特别是是须勾选了push模块且不能勾选unipush)
  3.     魅族开发者平台填写的应用包名是否与制作自定义基座时填写的Android包名完全一致
  4.     魅族开发者平台中的推送服务是否已经开启
  5.     打自定义基座时报错“arguments invalid”,在原生插件配置页面,没有正确配置厂商相关参数
        解决方案:检查配置值的前后是否有多余的空格; 其次检查值是否正确,appkey,appsecret 的值要正确的填写
  6.     goeasy后台厂商通道配置参数要正确

FCM 没有使用到,所以没有相关问题排查。

如果以上排除步骤无法锁定原因,建议按照GoEasy厂商通道配置文档再走一次,不要自认为没有问题,厂商通道的配置没有什么难点,主要是要细心。
如果实在无法排查到原因,就找GoEasy客服吧,他们会很耐心地帮您排查问题。

其他常见问题

问题1: 为啥我的通知栏消息没有悬浮弹窗提醒?
答:通知栏消息被静默显示,一方面取决于厂商对不同类型通知有不同的展示规则,另一个方面也要取决于app在手机上的设置,看是否打开了悬浮通知。

问题2: 为啥小米手机上不是每条消息都会通知?比如发送3条,只有第一条会有提示,后面两条都没有提示?
答:这个取决于手机操作系统的规则,为了在避免打扰到用户,部分手机厂商会对通知频繁的app进行提示限制,比如只会折叠通知不会响铃,有些手机厂商只有当用户点击了通知之后才会重新提醒(带提示音)。
监听通知栏点击事件

用户点击通知栏消息,除了APP被自动拉起外,开发者还可以通过监听通知栏消息的点击事件,根据消息数据,执行相应的业务逻辑,比如跳转到不同的页面,或显示不同的内容。

为了避免在APP启动后,因为监听动作未完成而导致APP无法响应点击操作,确保APP总是可以第一时间响应通知栏消息的点击事件,请务必在main.js GoEasy初始化后,立即监听onClickNotification事件。

 

标签:Uniapp,厂商,GoEasy,通知,app,配置,是否,推送
From: https://www.cnblogs.com/xiqincai/p/17509711.html

相关文章

  • uniapp,微信小程序点击按钮打开地图进行导航
    uniapp示例:<viewclass="order-contact-item"style="width:50%;text-align:center;"@tap="openMapNavigation">导航商家</view> //js函数打开导航 openMapNavigation(){ varthat=this; uni.getLocation({ type:'g......
  • 在线直播系统源码,uniapp滚动加载
    在线直播系统源码,uniapp滚动加载声明submitDate对象用来存放接口需要的具体参数,其中page和limit为查询页数和每页查询数据,total为记录数据总条数,pageList存放页面数据。     data(){return{  pageList:[],//列表数据submitDate:{//放你自己的参数startDate:''......
  • JavaScript、vue、uniapp如何获取本周开始时间和结束时间?
    //获得本周的开始时间: getStartDayOfWeek(time){ letnow=newDate(time);//当前日期 letnowDayOfWeek=now.getDay();//今天本周的第几天 letday=nowDayOfWeek||7; letnowDay=now.getDate();//当前日 letnowMonth=now.getMonth();//......
  • uniapp微信小程序转支付宝小程序踩坑(持续更新)
    首先第一个,真有被折磨到!//微信正常使用,支付宝不行<imagesrc="https://static.dabapiao.com/images/coupon-index.png"mode=""/>//以下两种微信、支付宝都正常使用<imagesrc="https://static.dabapiao.com/images/coupon-index.png"mode="aspectFill&quo......
  • C#使用企业微信群机器人推送生产数据
      在日常的工作生产中,经常会有将将生产数据或者一些信息主动推送给相关的管理人员,我们公司在开发WMS系统时,为了仓库的储存安全,需要在危废品库存达到一定的储量时,自动通知仓管员去处理危废品,所以就需要程序自动的通过企业微信告知仓管员,这个时候就需要用到企业微信的机器人了。......
  • uniapp项目嵌入微信公众号,授权登录
    1.创建公众号2.配置公众号信息=>公众号设置=>账号详情                          =>功能设置=>配置业务、js接口安全、网页授权域名               =>人员设置:绑定开发者微信号3.基本配......
  • 飞书推送消息
    功能介绍企业存在给特定群组自动推送消息的场景,例如,推送监控报警、运营内容等。在该类场景下,你可以在群组中添加自定义机器人,自定义机器人默认提供webhook,通过服务端调用webhook地址,即可将外部系统的消息通知即时推送到群组中。实现起来也非常简单,就是发一下http请求就可以......
  • 基于uni-app+vue3渲染markdown格式|uniapp软键盘顶起问题解决方案
    前些时候有给大家分享一篇uni-app+vite4+uview-plus搭建跨端项目。今天主要分享下在uniapp中渲染markdown语法及uniapp中软键盘弹起,页面tabbar或顶部自定义navbar导航栏被撑起挤压的问题。如上图:支持h5+小程序+App端markdown解析渲染。上面则是演示了在App端+小程序端键盘弹......
  • Uniapp仿ChatGPT Stream流式输出(非Websocket)
    前言最近写一个chagpt小程序,流式输出可以使用websocket也可以使用stream来实现,这里就不折腾websocket的了,我发现uniapp实现流式输出的方式挺多的,主要是有些小程序还不兼容,花了点时间研究了一下。EventSourceEventSource也称为SSE(Server-SentEvents),是服务器推送的一个网络事件......
  • Vue / uniapp cart.js购物车
     constcart={namespaced:true,state:{//{"store_id":"","goods_id":"","goods_name":"","goods_price":"","goods_count":"","......