架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 24268|回复: 0

[资料] 不借助第三方实现AndroidPush消息推送服务

[复制链接]
发表于 2016-7-22 16:09:23 | 显示全部楼层 |阅读模式
android消息推送服务,做了接近一个月时间吧,以前写的代码,也忘记了许多,先看下推送的效果吧!

QQ截图20160722162157.png QQ图片20160722162251.jpg
(小米手机截图,三星机器也测试过了)

大体说一下,如果不借助第三方实现android推送服务吧!!!!原理,就是长连接

.net写的服务,没有用java一些服务框架。

先说下功能:
1:能够按照设备ID,别名,类别去推送消息提,能够定时延时推送消息,
2:能够读取离线消息,数据库储存了发送成功和离线的消息记录
3:数据库定时器,自动删除垃圾消息。
4:能够显示消息的角标。

附上以前写的存储过程吧!

  1. -- =============================================
  2. -- Author:                <itsvse>
  3. -- Create date: <2016.06.12>
  4. -- Descrip{过滤}tion:        <添加发送消息记录>
  5. -- =============================================
  6. ALTER PROCEDURE [dbo].[pAddPushMessage]
  7.     @MessageType tinyint,        --MessageType  1代表 即时   2代表 延时  3代表  定时  (这个主要是标识,没有多大意义)
  8.         @Audience XML,                        --发送对象
  9.         @Content nvarchar(4000),        --消息内容
  10.         @Extras nvarchar(400)=null,
  11.         @StartTime datetime=null,
  12.         @EndTime datetime=null
  13. AS
  14. BEGIN
  15.         SET XACT_ABORT ON --使用存储过程执行事物,需要开启XACT_ABORT参数(默认值为Off),将该参数设置为On,表示当执行事务时,如果出错,会将transcation设置为uncommittable状态,那么在语句块批处理结束后将回滚所有操作;如果该参数设置为Off,表示当执行事务时,如果出错,出错的语句将不会执行,其他正确的操作继续执行。
  16.         BEGIN transaction --事务开始
  17.         IF(@StartTime IS NULL AND @EndTime IS NULL)
  18.         BEGIN
  19.                 SET @StartTime=GETDATE()
  20.                 SET @EndTime=GETDATE()+30
  21.         END
  22.         --插入消息表
  23.         DECLARE @BEID INT
  24.         INSERT INTO [PushMessage]([MessageType],[Audience],[Content],[Extras],[StartTime],[EndTime],[State]) VALUES(@MessageType,@Audience,@Content,@Extras,@StartTime,@EndTime,'1');
  25.         SET @BEID= SCOPE_IDENTITY()                --返回插入的主键ID
  26.         --插入临时表
  27.         DECLARE @TYPE INT        --发送对象类别,0代表所有 1代表设备 2代表 别名 3代表自定义规则
  28.         -- 0 1 都是代表设备   2代表别名
  29.         SET @TYPE = @audience.value('(//audience//type/text())[1]','int')
  30.         IF(@TYPE=0)
  31.         BEGIN
  32.                 --即时发送全部
  33.                 INSERT INTO [TemporaryMessage]([MessageType],[Audience],[Content],[StartTime],[EndTime],[Extras],[PushMessageID]) SELECT 0,DeviceID,@Content,@StartTime,@EndTime,@Extras,@BEID FROM DeviceInfo WHERE State='1'
  34.         END
  35.         IF(@TYPE=1)
  36.         BEGIN
  37.                 --发送指定设备
  38.                 INSERT INTO [TemporaryMessage]([MessageType],[Audience],[Content],[StartTime],[EndTime],[Extras],[PushMessageID]) SELECT  1,Temp.items,@Content,@StartTime,@EndTime,@Extras,@BEID FROM splitl(@audience.value('(//audience//device/text())[1]','VARCHAR(MAX)'),',') as Temp
  39.         END
  40.         IF(@TYPE=2)
  41.         BEGIN
  42.                 --发送指定别名
  43.                 INSERT INTO [TemporaryMessage]([MessageType],[Audience],[Content],[StartTime],[EndTime],[Extras],[PushMessageID]) SELECT  2,Temp.items,@Content,@StartTime,@EndTime,@Extras,@BEID FROM splitl(@audience.value('(//audience//alias/text())[1]','VARCHAR(MAX)'),',') as Temp
  44.         END
  45.         IF(@TYPE=3)
  46.         BEGIN
  47.                 --自定义规则tag
  48.                 INSERT INTO [TemporaryMessage]([MessageType],[Audience],[Content],[StartTime],[EndTime],[Extras],[PushMessageID]) VALUES(3,@audience.value('(//audience//tag/text())[1]','VARCHAR(MAX)'),@Content,@StartTime,@EndTime,@Extras,@BEID)
  49.         END
  50.         COMMIT transaction --提交事务
  51. END
复制代码


开启android推送服务,我们就可以实现android消息推送了

QQ图片20160722155824.png

然后,post一条json数据到我们的webapi接口,剩下的事就交个消息推送服务吧!!!!

QQ截图20160722160702.png

结束,大体说了下流程,

其实,不借助极光,百度云推送,阿里移动推送,一样可以自己做推送!






上一篇:asp.net 用redis实现sso单点登录方案
下一篇:类是一种构造是什么意思啊?
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2026-9-1 21:44

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表