华为推送集成,浪费了我不少时间,主要还是文档有些乱。集成之后我把它分为三部分,一,配置集成环境;二,处理接收消息。三,点击通知栏,跳转到相应页面。
compile 'comhuaweiandroidhms:push:263301'
运行GetHMSAgent_cnbat文件,
输入相应的信息包名和appid(这个需要自行申请),有一个支付id,没有可以瞎填;
选择完成之后把copysrc目录的java文件复制到自己的项目里;
AppManifestConfigxml复制到自己的app的AndroidManifestxml中;
首先根据emui版本判断是否可以使用华为推送
初始化
激活Token,并且发送到服务器
获取的token,会在相应的广播接收器中
需要在Activity或者application中注册IPushCallback监听,获取token,在发送自己的后台服务器。
华为一般有两个revicer,作用不同。下面这个根据 <intent-filter>,可以看出是用来接收token的。另外说一下,消息分为透传消息和通知栏消息。我使用的是通知栏消息,这个Revicer的透传消息没用用到。
另外一个Revicer,两个Revicer不同之处在与 <intent-filter>,功能也就不同。这
个Revicer的作用在于接收通知栏触发时间以及通知栏消息
在AndroidManifestxml中声明一个透明activity,用来中转到想要的页面
生成相应的intentUri,把它给后台,填写到华为的服务器上。点击通知栏消息,就可以直接跳转到这个HWPushTranslateActivity。
生成的intnetUri给后台就行。华为就可以隐式跳转到HWPushTranslateActivity,HWPushTranslateActivity里面获取action再跳转到相应的页面就可以了。
难点在于用GetHMSAgent_cnbat生成符合项目的文件,也不是难就是文档不清楚。另外,点击通知栏不打开启动页,需要配置HWPushTranslateActivity。Android中消息推送方式有:
1、使用GCM(Google Cloude Messaging)
这是Android自带的推送GCM可以帮助开发人员给他们的Android应用程序发送数据。也是一个轻量级的消息,告诉Android应用程序有新的数据要从服务器获取,或者它可能是一个消息。
2、使用XMPP协议(Openfire+Spark+Smark)
这是是一种基于XML的协议,继承了在XML环境中灵活的发展性,有很强的可扩展性。
3、使用MQTT协议
这是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
消息推送推荐使用深圳极光。客户肩并肩迈向成功的过程。我们将以市场为导向,以创新为动力,以技术为支持,不断用心努力,为每一位尊贵的客户提供极致的服务。
在安卓系统上做推送的方法如下:
1通过SMS进行服务器端和客户端的交流通信。在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,可以实现完全的实时 *** 作
2循环主动定时获取:这种方法需要客户端来做一个定时或者周期性的访问服务器端接口,以获得最新的消息。
3持久连接:这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池。需要开一个服务来保持和服务器端的持久连接(苹果就和谷歌的C2DM是这种机制)。
推送消息应该找一家安全,稳定的平台。例如极光。极光稳定的自有数据与多源外部数据交叉验证与补充,确保数据指标的趋势准确与稳定。70+中国投资机构、100+海外投资机构以及200+中国知名互联网公司正在使用极光iAPP的付费数据服务辅助其投资和战略决策。
几种常见的解决方案实现原理
1、轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。但这种方式对服务器的压力太大,且比较费客户端的流量,就是不断地向服务器发送请求,但是这样开发很简单。
2、SMS(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。服务器的消息,通过发送短信的方式,一般很少采用这种方式,成本高。
3、持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。但是这种方式开发难度大,开发周期较长。这是最长使用的方式,目前主流的消息推送都是通过这种方式做的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)