(图文)手把手教你怎样集成极光推送
2016-12-16 16:41
239 查看
什么是推送
简单的说,移动端的推送服务就是服务器定时将消息送到给客户端的服务。
要达到这个效果有几种方式(Android端):
1.轮询
客户端每隔一段时间便向服务器发送一次请求,询问是否有新消息,如果有,则服务器将消息发送出来
优点:简单
缺点:轮询的单位时间如果长的话,则没有即时消息的效果,如果短的话,那客户端的压力就会很大,耗电,耗流量
2.SMS
以短信的方式向每个用户发送消息
优点:不需要网络
缺点:成本太高,一条短信一毛钱,一个百万级的APP,一次就是10w,当然,肯定是有折扣的。如果仅需要发送一两条这样的消息的话,还是能接受的,但是如果要每天来个五六条,老板:???????????
3.GCM服务
Google推出的云消息服务,Google Cloud Messaging,以前是C2DM,现在以及被GCM替代了
优点:Google亲儿子,原生,简单
缺点:国内用Google?
4.XMPP协议/MQTT协议
自己搭建一个推送服务
优点:功能强大
缺点:复杂,部署硬件成本高
5.使用第三方推送服务
导入SDK使用第三方的推送服务,比如极光推送,百度云推送,个推等等
优点:稳定,简单,开发成本低
缺点:毕竟用的是别人家的东西,总是有些顾虑的
综上所述,我们选择了使用第三方推送,这篇博客就是介绍其中的极光推送是如何使用的?
首先,打开极光推送的官网https://www.jiguang.cn/push
注册登陆,然后点击SDK下载
下载Android版本,解压,发现里面有这些东西
好了,这个先放一边,然后打开AS,在自己应用的AndroidManifest文件或者gradle文件里找到自己应用的包名
然后回到网页,进入极光推送的App管理界面https://www.jiguang.cn/app/list
在这里将自己的应用创建一下,其实就两个要填的,应用名和包名,图标可选可不选(不选就是默认的Logo)
创建好之后将这个Appkey保存下来
然后就回到之前下载的SDK目录里面,打开libs文件夹,将里面的文件全部复制到AS里面
然后在AS里面将两个Jar包添加依赖
然后再将S
4000
DK目录下的res文件夹里的文件全部复制到AS里面来
这里最好一个文件一个文件的复制,以免出现错误(反正我是这么弄的-。-)
在资源都复制好之后要在module的gradle文件下添加几句代码( 要在android大标签里哟)
这里是权限
这里是组件
组件当然是都要写在application标签里面的,就像平常的Activity一样
然后最后还有两行,这也是要写在application标签里面的,这里面的应用的Appkey就是之前在网页创建应用时保存下来的Appkey
OK
到这一步,整个集成已经完成了,就差最后一步调接口了
在自己应用的自定义Application类的onCreate()方法里面添加两行代码,
一般建议在自定义Application里初始化,当然也可以在主Activity里面进行初始化,
不要忘了在最后在AndroidManifest文件中检查一下有没有哪里有遗漏的,比如还有”您应用的包名”没替换啦,比如application标签下忘记写name属性啦
好了,这样客户端就配置好了,接下来就在网页后台发个消息推送试试
进入https://www.jiguang.cn/push/app/这里是你应用的Appkey/push/notification
接下来就简单了,输入信息,选上Android,点击发送~~~~~~~~~~~~
咚咚咚~~
然后你的应用就收到了一条推送通知
这样,极光推送的基本集成就完成了
简单的说,移动端的推送服务就是服务器定时将消息送到给客户端的服务。
要达到这个效果有几种方式(Android端):
1.轮询
客户端每隔一段时间便向服务器发送一次请求,询问是否有新消息,如果有,则服务器将消息发送出来
优点:简单
缺点:轮询的单位时间如果长的话,则没有即时消息的效果,如果短的话,那客户端的压力就会很大,耗电,耗流量
2.SMS
以短信的方式向每个用户发送消息
优点:不需要网络
缺点:成本太高,一条短信一毛钱,一个百万级的APP,一次就是10w,当然,肯定是有折扣的。如果仅需要发送一两条这样的消息的话,还是能接受的,但是如果要每天来个五六条,老板:???????????
3.GCM服务
Google推出的云消息服务,Google Cloud Messaging,以前是C2DM,现在以及被GCM替代了
优点:Google亲儿子,原生,简单
缺点:国内用Google?
4.XMPP协议/MQTT协议
自己搭建一个推送服务
优点:功能强大
缺点:复杂,部署硬件成本高
5.使用第三方推送服务
导入SDK使用第三方的推送服务,比如极光推送,百度云推送,个推等等
优点:稳定,简单,开发成本低
缺点:毕竟用的是别人家的东西,总是有些顾虑的
综上所述,我们选择了使用第三方推送,这篇博客就是介绍其中的极光推送是如何使用的?
首先,打开极光推送的官网https://www.jiguang.cn/push
注册登陆,然后点击SDK下载
下载Android版本,解压,发现里面有这些东西
好了,这个先放一边,然后打开AS,在自己应用的AndroidManifest文件或者gradle文件里找到自己应用的包名
然后回到网页,进入极光推送的App管理界面https://www.jiguang.cn/app/list
在这里将自己的应用创建一下,其实就两个要填的,应用名和包名,图标可选可不选(不选就是默认的Logo)
创建好之后将这个Appkey保存下来
然后就回到之前下载的SDK目录里面,打开libs文件夹,将里面的文件全部复制到AS里面
然后在AS里面将两个Jar包添加依赖
compile files('libs/jcore-android_v1.0.0.jar') compile files('libs/jpush-android_v3.0.0.jar')
然后再将S
4000
DK目录下的res文件夹里的文件全部复制到AS里面来
这里最好一个文件一个文件的复制,以免出现错误(反正我是这么弄的-。-)
在资源都复制好之后要在module的gradle文件下添加几句代码( 要在android大标签里哟)
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
好了,执行完这些后就开始做配置工作的最后一步,将一大堆权限,组件,复制到你应用的AndroidManifest文件里面,记得要将自己的应用包名改上去
这里是权限
<!-- Required --> <permission android:name="您应用的包名.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <!-- Required --> <uses-permission android:name="您应用的包名.permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- Optional. Required for location feature --> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.GET_TASKS" />
这里是组件
组件当然是都要写在application标签里面的,就像平常的Activity一样
<!-- Required SDK 核心功能--> <!-- 可配置android:process参数将PushService放在其他进程中 --> <service android:name="cn.jpush.android.service.PushService" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 --> <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 --> <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <intent-filter > <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="您应用的包名"/> </intent-filter> </service> <!-- Required SDK核心功能--> <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true" > <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <category android:name="您应用的包名"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <!-- Optional --> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <!-- Required SDK核心功能--> <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:theme="@android:style/Theme.NoTitleBar" android:exported="false" > <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="您应用的包名" /> </intent-filter> </activity> <!-- Required SDK核心功能--> <service android:name="cn.jpush.android.service.DownloadService" android:enabled="true" android:exported="false" > </service> <!-- Required SDK核心功能--> <receiver android:name="cn.jpush.android.service.AlarmReceiver" />
然后最后还有两行,这也是要写在application标签里面的,这里面的应用的Appkey就是之前在网页创建应用时保存下来的Appkey
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/> <meta-data android:name="JPUSH_APPKEY" android:value="您应用的Appkey"/>
OK
到这一步,整个集成已经完成了,就差最后一步调接口了
在自己应用的自定义Application类的onCreate()方法里面添加两行代码,
一般建议在自定义Application里初始化,当然也可以在主Activity里面进行初始化,
JPushInterface.setDebugMode (true); // 设置开启日志,发布时请关闭日志 JPushInterface.init (this); // 初始化 JPush
不要忘了在最后在AndroidManifest文件中检查一下有没有哪里有遗漏的,比如还有”您应用的包名”没替换啦,比如application标签下忘记写name属性啦
好了,这样客户端就配置好了,接下来就在网页后台发个消息推送试试
进入https://www.jiguang.cn/push/app/这里是你应用的Appkey/push/notification
接下来就简单了,输入信息,选上Android,点击发送~~~~~~~~~~~~
咚咚咚~~
然后你的应用就收到了一条推送通知
这样,极光推送的基本集成就完成了
相关文章推荐
- java的File类
- Swift 懒加载
- ASP.NET管道和.NET Core管道
- request.setAttribute()用法
- CUDA的结构指南简述
- 第16周 oj Problem B: 结构体---职工信息结构体
- 外观模式
- the code of MH backpack en/decipher algorithm
- Linux安装ftp组件
- 横竖屏切换的时候,Activity生命周期的变化
- 人家的js笔记
- 小记4
- 怎样在onCreate()里面得到View的宽和高
- Solr6.2.1 学习笔记(二)从数据库导入数据
- 在使用DrawerLayout中遇到的问题
- emmt html生成
- Vbox中Ubuntu的安装和共享文件夹设置
- 用java实现文件下载,提示java.lang.IllegalStateException: getOutputStream() has already been called for this response
- 三角形三心和特点
- [故障引起的故事]URL中带加号的处理