成都网站建设设计

将想法与焦点和您一起共享

Android的SMSpush怎么使用

这篇文章主要介绍“Android的SMS push怎么使用”,在日常操作中,相信很多人在Android的SMS push怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android的SMS push怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

创新互联秉承实现全网价值营销的理念,以专业定制企业官网,网站制作、成都网站建设,小程序定制开发,网页设计制作,移动网站建设成都营销网站建设帮助传统企业实现“互联网+”转型升级专业定制企业官网,公司注重人才、技术和管理,汇聚了一批优秀的互联网技术人才,对客户都以感恩的心态奉献自己的专业和所长。

短信(SMS)Push 和 Ip push是比较常见的两种push方式。  

本篇主要简单说说Sms push。

Sms push的原理:  

sms  push是通过发送二进制短信到移动终端,来达到通知终端的目的。客户端拦截这类短信,分析短信PDU的数据,然后采取相应的操作。push短信是通过 Wap push来承载的。其内容包括头部和数据两部分,头部中应该含有目的端口和原端口号(可类比IP报文)。

由于发送短信需要运营商的支持,比如移动的邮件推送网关(GEGW:GPRS Email Gateway),依赖性比较强。

Android客户端拦截短信处理:

客户端静态注册一个广播接收器,即使应用不在运行,广播接收器也能拦截短信。

                                                        

这样当push短信下发时(监听到端口16001的数据),系统发起Intent激活广播接收器,广播接受器在其事件回调函数中进行处理

@Override     public void onReceive(Context context, Intent intent) {         String action = intent.getAction();         if (TextUtils.equals(action, "android.intent.action.DATA_SMS_RECEIVED")) {             handleDataSmsReceived(context, intent);         } }

在处理函数handleDataSmsReceived中,获取pdu数据并解析,了解服务器的数据发生何种变化,客户端可以进行相应处理。

简易实现代码如下:

private void handleDataSmsReceived(Context context, Intent intent) {         Uri uri = intent.getData();         int port = uri.getPort();//接受端口 16001         SmsMessage[] msgs = getMessagesFromIntent(intent);         String senderNumber = msgs[0].getOriginatingAddress();//短信发送方的电话号码         int type =  parse(msgs)//解析 pdu的业务部分数据,根据与服务器交互的协议去解         switch(type){              //不同的情况分类处理         } }

获取的短信的方法

private static final SmsMessage[] getMessagesFromIntent(Intent intent) {         Object[] messages = (Object[]) intent.getSerializableExtra("pdus");         byte[][] pduObjs = new byte[messages.length][];         for (int i = 0; i < messages.length; i++) {             pduObjs[i] = (byte[]) messages[i];         }         byte[][] pdus = new byte[pduObjs.length][];         int pduCount = pdus.length;         SmsMessage[] msgs = new SmsMessage[pduCount];         for (int i = 0; i < pduCount; i++) {             pdus[i] = pduObjs[i];             msgs[i] = SmsMessage.createFromPdu(pdus[i]);         }         return msgs;     }

到此,关于“Android的SMS push怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享名称:Android的SMSpush怎么使用
本文链接:http://chengdu.cdxwcx.cn/article/ppsijg.html