(适用于ydm-java接口与后台,如有误入,但愿也能给您带来帮助)
引子:
推送在项目中,一般是想达到和用户单方面交互的功能,在ydm大多用于系统消息;总的来说,系统消息均拿表来维护,一种是单表(推送的用户以逗号的形式单行保存),一种是多表(消息主表和关联用户子表),我更建议是后者,这样已读、未读、删除等操作会更加便捷明了;后来有机会面试其他移动互联的开发者的时候,也听闻到了不用表来维护,直接依赖 极光 ,这种思路也是可以的,建议在这方面拓展。
碎碎念:
在天燃气项目中,推送的类别很多,可以按照部门、岗位、具体员工来推。
涉及到极光里,按标签推送以及按别名进行推送。
别名是唯一的,App端一般以ID向极光注册,服务端就可以根据ID定位到这个用户了;
标签是可以有多个的,正如现实生活中一样,身兼数职,App端可以向极光注册dept_1(部门1),服务端根据这个标签进行推,那么所有向极光注册为dept_1标签的用户都可以接收到通知;同理拓展也可以注册某个城市等等之类的。
后期的社交类项目中,业主没有专门的需求,对标签就没有涉及了,无忧、后宫、聊妹、蜗伴均只使用了按别名进行推送。
实际上:
这里就不贴代码了,官方对于java服务端SDK很明确,这里想建议下,不要无脑都把它的代码都贴上,除非要改人家的源码。我是放在push包底下的,一个是Config,有俩配置信息,一个是AppKey,一个是masterSecret;还有一个就是PushUtil了,这里只用了下针对别名的推送。下面展示调用示例:
推送单个、多个用户:
PushUtil.android_iOS_Alias(String title,String content,boolean flag,String...uids);
title Android显示的标题,对iOS无作用 (iOS并没有标题这一说法)
content 内容 iOS只显示这个
flag iOS false 开发环境 true生产环境 (实际上flag部署到服务器上我经常写死)
uids 字符串数组 存储着别名 别名为用户的id 这个地方可以传单个字符串,也可以传一个数组,传数组的时候就可以推送多个用户了
推送全部用户:
PushUtil.android_iOS_All(String titile,String content,boolean flag);
很容易理解,全部用户不需要传别名。
备注:
iOS有开发和生产环境这么一说,何为开发,就是iOS的App在工程师的电脑上才能安装,何为生产,就是iOS的App在AppStore里或蒲公英下手动下载的版本;实际上,正式发布的均为生产环境;
推送多个人的时候,切记可以传一个数组,不要以循环的方式调用PushUtil.android_iOS_Alias(),因为我们去调极光其实还是蛮长时间的,一但循环开,就更不可救药了;
PushUtil里Tag就是指的是标签了。
写于2017-03-17。