推送技术专题

推送应用开发与配置

1、首先在官网创建完成新的应用。

2、打开IDE并且同步刚才创建的推送应用。

3、在IDE中开发平台推送功能所需的代码

4、在IDE中把刚才开发的代码通过内置的SVN工具提交至appcan官网。

5、回到appcan官网应用管理界面,点击信息推送按钮。

6、进入信息推送主界面,并选择要推送的操作系统平台。

7、填写标题(注意:默认为当前应用名称,请不要轻易更改(iOS平台不支持标题的修改),会严重影响用户对应用的辨识度)。

8、填写推送内容(注意:填写要推送的内容信息。移动端点击推送来的信息,默认打开应用进入首页。您还可以使用自定义参数设置键值对(key-value),根据不同的键值对实现自定义需求。当您在前台配置好键值对后,将会转成json格式跟随消息下发到APP,开发者可以在APP本地通过uexWidget.getpushinfo()获取)。

9、角标数字(即显示在应用icon上的未读信息条数,只支持iOS平台,可自定义调整,参数为1-99)。

10、推送环境(选取环境,配置iOS生产证书或开发证书,只支持iOS平台说明)。

11、推送时间(支持立即推送或定时推送,定时发送需选取未来某一时间,只支持推送1次)。

12、离线消息(支持保存用户因网络故障问题不能收到的推送消息,待网络正常后可收到服务器临时缓存的消息,保存最大时长为99个小时)。

13、用户范围(支持所有用户推送(群推)和单点用户推送(单推)。开发者需通过uexWidget.setpushinfo() 绑定用户,获取用户信息)。

14、推送确认(点击“推送”按钮,完成当前信息推送)。

送平台统计与推送历史消息记录

1、点击“推送统计”,选取Android或iOS操作系统将会统计推送信息在某一时间段的推送数、到达数、打开数。

  • 推送数:即推送至终端的消息数,如一条信息推送给50个用户,则推送数显示为50。
  • 到达数:即信息成功推送至终端数的条数,如一条消息推送给50个用户,只有20个用户成功收到,则到达数为20。现只支持Android平台。
  • 打开数:即终端用户点击信息内容打开当前应用数。

    2、点击“推送历史”,将会展示当前应用信息推送的历史记录。

  • 在“已发送”状态下,可“重发”当前信息,单条记录可删除。
  • 定时推送,在未到达设定时间前为“待发送”状态,可“取消”当前推送,单条记录可删除。

示例代码和常见问题

示例参考代码
    //注册推送通知栏点击事件
    uexWidget.setPushNotifyCallback("inCallbackFunction");
    //注册的回调方法:点击应用开启状态收到推送点击信息的回调;
    //应用关闭状态此回调不会进入,因此要在启动app时主动调用该方法
    function inCallbackFunction(){
        uexWidget.cbGetPushInfo=function(opId,dataType,data){
            alert(data);//此处根据参数编写代码逻辑
        }
        //获取推送信息(参数键值对,调用此方法将上报推送消息)
        uexWidget.getPushInfo();
    }
    //绑定推送用户(使用该方法将用户及设备绑定到推送服务器,只有调用该方法后,
    //推送消息时才能将此用户和设备放入接收推送消息的对象组中)
    uexWidget.setPushInfo(UID,Uname);

注:以上方法建议在起始页中加入。

常见问题

Q:IOS/Android 在手机APP没有退出的情况下,消息推送是怎么展现的?

A: 手机APP分为两种状态,第一种是应用处于前台,即当前APP的页面正在展示;第二种是应用通过主页键切换至后台。

  • 第一种状态在收到推送消息时会直接回调通过uexWidget.setPushNotifyCallback接口设置的回调方法。开发者可以在该回调方法中调用uexWidget.getPushInfo方法去获取接收到的推送消息内容。
  • 第二种状态在收到推送消息时,iOS手机会在app上边以角标数字的场景提示用户有未读消息;Android手机会在状态栏弹出消息图标。提示用户有未读推送消息。用户点击相应的通知,会启动应用,应用启动后会直接回调通过uexWidget.setPushNotifyCallback接口设置的回调方法。 以上两种状态,开发者都可以参考示例代码来获取推送的信息。

Q:推送信息如何获取的?

A:无论应用处于何种状态,只要收到推送消息,通过uexWidget.setPushNotifyCallback接口设置的回调方法会被调用,开发者可以在该回调方法中调用uexWidget.getPushInfo方法去获取具体的消息内容。示例代码

Q:平台推送提示推送消息成功,可是手机上没有收到推送的信息?

A:这种情况一般有以下三种可能:

  • 1.在推送代码没有写错的情况下收不到消息是因为网络的原因,要确保手机能够上网。
  • 2.推送平台服务自身的问题,常见的场景比如第一次推送正常,手机很快就收到推送的消息了。然后为了测试修改了一下推送的内容,这时网络环境没有变,手机却收不到推送的消息了,或者很长时间才收到消息。
  • 3.手机安装了第三方杀毒软件屏蔽了推送服务器发出的推送信息。

Q:如何使用消息推送功能?

A: 打包时开关设置中勾选推送功能,填写推送绑定接口(Android还需要另外填写Android推送接口,这个接口应只包含[ip地址]:[端口号]的形式);

  • app前端代码中,在需要进行绑定用户开始接收推送的时候,调用uexWidget.setPushInfo接口进行绑定( 注意:特殊情况见常见问题3);
  • 如果代码中调用了uexWidget.setPushState(0); 推送开关将会关闭,无法使用推送功能,重新调用uexWidget.setPushState(1); 即可打开推送功能。详见文档
  • 接收到推送后,如果要处理推送内容,需要在页面中调用,uexWidget.setPushNotifyCallback(要注意3.x和4.x引擎的调用方式是不同的,4.x兼容3.x,3.x引擎不兼容新方法),回调方法执行时表示到达了一个推送消息,此时调用uexWidget.getPushInfo接口获取推送消息内容即可;
  • 特殊情况,如果需要将推送token上报给业务系统中,然后由业务系统调用AppCan推送服务的API来进行向设备发送推送消息。则从客户端获取推送token的方式为:uexDevice.getInfo,传参为11(传参参考文档),获取到的就是推送token了,Android和iOS通用。

Q:推送收不到原因排查?

A:先看看问题1,了解消息推送功能的基本使用方法

  • 检查手机网络是否连通
  • 检查推送后端服务是否正常
  • 检查应用是否在后台,或者是否在js代码中添加了监听推送消息送达的代码
  • 应用在前台时,不会自动提示在通知栏中,而是会通过js回调通知给前端代码自行处理推送逻辑,比如谈个alert或者跳转页面之类的操作;

Android专有问题

  • 检查打包时的Android推送接口是否配置正确
  • 这个接口的形式是[ip]:[port],如:192.168.1.1:1883,不要添加http:// 或者tcp:// 之类的协议头;
  • 检查是否已经为该应用开启了通知栏的提示
  • Android系统可以针对每个应用关闭消息提醒功能,需要开启才可以看到通知栏推送提示,要勾选“显示通知”;

iOS专有问题

  • 如果已经升级了支持iOS10新特性的打包服务,则需要在config.xml文件中配置推送相关的权限,否则打包后不仅iOS10无法收到推送,iOS10以下的也会收不到,具体配置方式参考:iOS10适配指南
  • iOS打包时使用的描述文件一定要支持推送功能,需要确认检查一下;
  • 推送后端的推送证书要配置正确;
  • 每个应用的系统设置中也有对应的消息通知开关,首次启动是也会弹出是否允许通知的提示,关闭后则无法使用推送功能了,必须重新开启之;

Q:【Android】推送后台进程经常被杀导致推送收不到?

  • 应当引导用户对自己的手机进行设置,把本应用加入后台白名单中,具体方法如下:
  • 终极办法,针对所有手机:
  • 长按Home键或者点击任务管理键,进入任务管理界面时,通过长按或下滑等操作(不同系统各不相同,但操作简单),将本应用加锁,防止点击清理所有程序时,把本应用杀死,另外还应当避免手动将加锁的应用划掉杀死。
  • 华为手机有以下方式解决:
  • EMUI4.0
  • 打开系统设置—开机自动启动,把本应用设置为可开机自动启动(在其应用列表中找到本应用名称,打开开关);
  • 打开系统设置—受保护的后台应用,把本应用设置为受保护应用(在其应用列表中找到本应用名称,打开开关); -(可选操作)打开系统设置—省电管理中修改省电模式为“普通省电”(智能省电也不行,智能省电会在锁屏后杀死后台进程);
  • EMUI5.0
  • 打开系统设置—权限管理,进入应用标签,点击进入本应用,选择“设置单项权限”,打开“应用自动启动”开关;
  • 打开系统设置—电池—锁屏清理应用,在应用列表中找到本应用,把开关设置为关闭(即不清理); -(可选操作)打开系统设置—电池,关闭省电模式(省电模式可能会在锁屏后杀死后台进程);
  • HTC手机:
  • 打开系统设置—应用程序—列表中找到本应用进入详情—点击权限—允许保持唤醒状态;
  • 小米手机:
  • 自启动管理
  • 打开安全中心—授权管理—自启动管理—列表中找到本应用,打开开关;
  • MIUI神隐模式
  • iii.打开系统设置,选择其他高级设置;
  • iv.选择电量和性能;
  • v.选择神隐模式;
  • vi.选择应用配置;
  • vii.找到本应用,点击进入;
  • viii.后台配置选择“无限制”,后台网络配置选择保持联网;
  • OPPO手机
  • .打开安全中心;
  • i.点击权限隐私;
  • ii.找到本应用,打开开关;
  • 魅族手机
  • 自启动权限
  • i.打开手机管家,点击权限管理;
  • ii.选择自启动管理;
  • iii.找到本应用,打开开关;
  • 手机加速白名单
  • v.打开手机管家,点击手机加速;
  • vi.点击屏幕右上角设置;
  • vii.点击手机加速白名单;
  • viii.点击添加白名单;
  • ix.找到本应用,勾选之;
  • 三星手机
  • .打开系统设定;
  • i.选择安全;
  • ii.点击应用程序许可;
  • iii.找到并点击本应用;
  • iv.打开自动运行开关;
  • VIVO手机
  • 自启动管理
  • i.打开i管家,点击软件管理;
  • ii.选择自启动管理;
  • iii.找到本应用,打开开关;
  • 手机清理白名单
  • v.打开i管家,点击右上角设置按钮;
  • vi.选择加速白名单;
  • vii.找到本应用,打开右侧开关;
  • 后台耗电保护管理
  • ix.打开i管家,点击省电管理;
  • x.点击最下方的后台高耗电;
  • xi.找到本应用,打开开关;
  • 乐视手机
  • 省电管理
  • i.打开管家,点击省电管理;
  • ii.选择高级省电;
  • iii.打开应用保护;
  • iv.将本应用加入禁止自动清理;
  • 自启动管理
  • vi.打开管家,点击权限管理;
  • vii.选择自启动管理;
  • viii.找到本应用,打开开关;
  • 一加手机
  • 锁屏运行权限
  • i.打开手机系统设置;
  • ii.点击应用与权限,选择应用休眠;
  • iii.如果应用休眠开关已经开启,则点击应用休眠管理;
  • iv.列表中找到本应用,将本应用的开关开启;
  • 自启动管理
  • vi.打开手机系统设置;
  • vii.点击应用与权限,选择自启动;
  • viii.找到本应用,打开右侧开关;
  • 其他手机可以参考上述手机的设置
  • 进入手机设置或安全中心,找到自启动管理,找到本应用并授权。

以上信息是否解决您的问题?

免费注册,快速体验

还需要帮助吗? 联系我们
最新更新 8th Jul 2021