学习笔记 之 Android 消息推送
来源:互联网 发布:钢结构cad软件sts下载 编辑:程序博客网 时间:2024/05/29 05:14
(一)推送的基本原理
1.1 推送就是指服务器定向将信息实时发送到客户端的功能。
1.2 长连接Socket/短连接Http
长连接是指客户端和服务器之前始终建立着一个通信连接,在
连接没有中断之前,客户端和服务端之前可以随时进行通信。
短连接说之通讯双方有数据交互时,就建立一个连接,数据发送完成就断开连接。
第三方推动平台
极光推送、个推、百度推送、小米推送 阿里百川云推送
极光推送(JPush)快速集成(https://docs.jiguang.cn/jpush/client/Android/android_guide/#_5)
新手指南
- 通过 “三分钟 Demo”(https://docs.jiguang.cn/jpush/client/Android/android_3m/) 快速把 Demo 跑起来,体验 JPush 的服务。
- 从官方路径(https://docs.jiguang.cn/jpush/resources/)下载本 SDK,或者参考 JCenter 配置指南(https://docs.jiguang.cn/jpush/client/Android/android_guide/#jcenter) 来配置 JCenter 的下载路径。
- 复制 jar 文件、so 文件以及 /res 资源文件到你项目对应的文件夹下,配置 JPush 所必须的 AndroidManifest 组件(https://docs.jiguang.cn/jpush/client/Android/android_guide/#_5);如果是 JCenter 集成方式会自动完成这一步。
- 根据你的业务来构建通知策略。基础 api 教程见 demo 实例,详细 api 解释见:https://docs.jiguang.cn/jpush/client/Android/android_api/
文档导航
- JPush Android SDK 简介 - https://docs.jiguang.cn/jpush/client/Android/android_sdk/
- 三分钟 Demo - https://docs.jiguang.cn/jpush/client/Android/android_3m/
- 集成指南 - https://docs.jiguang.cn/jpush/client/Android/android_guide/
- 调试指南 - https://docs.jiguang.cn/jpush/client/Android/android_debug_guide/
- 进阶教程 - https://docs.jiguang.cn/jpush/client/Android/android_senior/
- API 指南 - https://docs.jiguang.cn/jpush/client/Android/android_api/
- 常见问题 - https://docs.jiguang.cn/jpush/client/Android/android_faq/
- ChangeLog - https://docs.jiguang.cn/jpush/updates/
- 下载链接 - https://docs.jiguang.cn/jpush/resources/
手动集成步骤(有些事还得自己来):
*********************jar/so文件引入*********************1、解压缩 jpush-android-release-3.x.y.zip 集成压缩包。2、复制 libs/jcore-android_v1.x.y.jar 到工程 libs/ 目录下。3、复制 libs/jpush-android_v3.x.y.jar 到工程 libs/ 目录下。4、复制 libs/(cpu-type)/libjcore1xy.so 到你的工程中存放对应cpu类型的目录下。5、复制 res/ 中drawable-hdpi, layout, values文件夹中的资源文件到你的工程中 res/ 对应同名的目录下。说明 1:若没有res/drawable-xxxx/jpush_notification_icon这个资源默认使用应用图标作为通知icon,在5.0以上系统将应用图标作为statusbar icon可能显示不正常,用户可定义没有阴影和渐变色的icon替换这个文件,文件名不要变。说明 2:使用android studio的开发者,如果使用jniLibs文件夹导入so文件,则仅需将所有cpu类型的文件夹拷进去;如果将so文件添加在module的libs文件夹下,注意在module的gradle配置中添加一下配置: android { ...... sourceSets { main { jniLibs.srcDirs = ['libs'] ...... } ...... } ...... }*********************配置 AndroidManifest.xml*********************根据 SDK 压缩包里的 AndroidManifest.xml 样例文件,来配置应用程序项目的 AndroidManifest.xml 。主要步骤为:1、复制备注为 "Required" 的部分2、将标注为“您应用的包名”的部分,替换为当前应用程序的包名 ${applicationId}或者${JPUSH_PKGNAME}但是确认build.gradle已配置defaultConfig { applicationId "cn.jpush.example" // <--您应用的包名 …… }3、将标注为“您应用的Appkey”的部分,替换为在Portal上注册该应用的的Key${JPUSH_APPKEY}*********************集成 JPush Android SDK 的混淆*********************请下载4.x及以上版本的proguard.jar, 并替换你Android Sdk "tools\proguard\lib\proguard.jar"请在工程的混淆文件中添加以下配置:-dontoptimize-dontpreverify-dontwarn cn.jpush.**-keep class cn.jpush.** { *; }-keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }-dontwarn cn.jiguang.**-keep class cn.jiguang.** { *; }*********************添加实现代码*********************JPush SDK 提供的 API 接口,都主要集中在 cn.jpush.android.api.JPushInterface 类里。基础APIinit 初始化SDKpublic static void init(Context context)setDebugMode 设置调试模式注:该接口需在init接口之前调用,避免出现部分日志没打印的情况。多进程情况下建议在自定义的Application中onCreate中调用。public class MyApplication extends Application {@Override public void onCreate() { super.onCreate(); JPushInterface.setDebugMode(true); JPushInterface.init(this); }}###init 只需要在应用程序启动时调用一次该 API 即可。###以下代码定制一个本应用程序 Application 类。需要在 AndoridManifest.xml 里配置。application标签下添加name属性
个推标准集成:(http://docs.getui.com/mobile/android/androidstudio/)
(二)Socket的使用和Mina框架
MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架。通过使用MINA框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中。
特点:
- 基于java NIO类库开发;
- 事件驱动;支持批量数据传输;
- 支持TCP、UDP协议;
- 控制反转的设计模式(支持Spring);
- 采用优雅的松耦合架构;
- 可灵活的加载过滤器机制;
- 单元测试更容易实现;
- 可自定义线程的数量,以提高运行于多处理器上的性能;
采用回调的方式完成调用,线程的使用更容易。
常用类
类NioSocketAcceptor用于创建服务端监听; 类NioSocketConnector用于创建客户端连接; 类IoSession用来保存会话属性和发送消息; 类IoHandlerAdapter用于定义业务逻辑,常用的方法有: 方法 定义 sessionCreated() 当会话创建时被触发 sessionOpened() 当会话开始时被触发 sessionClosed() 当会话关闭时被触发 sessionIdle() 当会话空闲时被触发 exceptionCaught() 当接口中其他方法抛出异常未被捕获时触发此方法 messageRecieved() 当接收到消息后被触发 messageSent() 当发送消息后被触发
阅读全文
0 0
- 学习笔记 之 Android 消息推送
- android-pushNotification-消息推送-学习笔记
- android-pushNotification-消息推送-学习笔记
- android-pushNotification-消息推送-学习笔记
- Android 之推送消息.
- parse push 消息推送学习笔记(Android消息推送解决方案 备选)
- winform 推送消息---------------------学习笔记
- Android后台消息推送-android学习之旅(71)
- Android学习笔记三十五:socket 编程 实现消息推送
- Android消息推送 学习一
- Android之消息推送实现
- Android之消息推送实现
- Android之消息推送实现
- Android之消息推送实现
- Android之消息推送实现
- Android之消息推送实现
- Android消息推送之Androidpn_Demo
- Android之消息推送实现
- PHP 创建 MySQL 表
- HDU-1869 六度分离
- 枚举类型遍历实例
- [文献阅读]combined group and exclusive sparsity for deep neural networks
- nohup详解
- 学习笔记 之 Android 消息推送
- tensorFlow入门教程
- HBuilder HTML 5+ SDK IOS离线打包步骤
- 龙卷风摧毁停车场题解
- 排列组合
- LeetCode 30
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->Web版本模块管理界面新增模块排序功能
- 最小生成树
- 数据库中间件02-部署MyCat