推送技术专题
推送应用开发与配置
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.找到本应用,打开右侧开关;
- 其他手机可以参考上述手机的设置
- 进入手机设置或安全中心,找到自启动管理,找到本应用并授权。