学习笔记 之 Android 消息推送

(一)推送的基本原理

1.1 推送就是指服务器定向将信息实时发送到客户端的功能。

1.2 长连接Socket/短连接Http
长连接是指客户端和服务器之前始终建立着一个通信连接,在
连接没有中断之前,客户端和服务端之前可以随时进行通信。
短连接说之通讯双方有数据交互时,就建立一个连接,数据发送完成就断开连接。

第三方推动平台
极光推送、个推、百度推送、小米推送 阿里百川云推送

极光推送(JPush)快速集成(https://docs.jiguang.cn/jpush/client/Android/android_guide/#_5

新手指南

  1. 通过 “三分钟 Demo”(https://docs.jiguang.cn/jpush/client/Android/android_3m/) 快速把 Demo 跑起来,体验 JPush 的服务。
  2. 从官方路径(https://docs.jiguang.cn/jpush/resources/)下载本 SDK,或者参考 JCenter 配置指南(https://docs.jiguang.cn/jpush/client/Android/android_guide/#jcenter) 来配置 JCenter 的下载路径。
  3. 复制 jar 文件、so 文件以及 /res 资源文件到你项目对应的文件夹下,配置 JPush 所必须的 AndroidManifest 组件(https://docs.jiguang.cn/jpush/client/Android/android_guide/#_5);如果是 JCenter 集成方式会自动完成这一步。
  4. 根据你的业务来构建通知策略。基础 api 教程见 demo 实例,详细 api 解释见:https://docs.jiguang.cn/jpush/client/Android/android_api/

文档导航

手动集成步骤(有些事还得自己来):

*********************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 类里。
基础API

init 初始化SDK
public 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和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中。

特点:

  1. 基于java NIO类库开发;
  2. 事件驱动;支持批量数据传输;
  3. 支持TCP、UDP协议;
  4. 控制反转的设计模式(支持Spring);
  5. 采用优雅的松耦合架构;
  6. 可灵活的加载过滤器机制;
  7. 单元测试更容易实现;
  8. 可自定义线程的数量,以提高运行于多处理器上的性能;
  9. 采用回调的方式完成调用,线程的使用更容易。

    常用类

NioSocketAcceptor用于创建服务端监听; 
类NioSocketConnector用于创建客户端连接; 
类IoSession用来保存会话属性和发送消息; 
类IoHandlerAdapter用于定义业务逻辑,常用的方法有: 
方法 定义 
sessionCreated() 当会话创建时被触发 
sessionOpened() 当会话开始时被触发 
sessionClosed() 当会话关闭时被触发 
sessionIdle() 当会话空闲时被触发 
exceptionCaught() 当接口中其他方法抛出异常未被捕获时触发此方法 
messageRecieved() 当接收到消息后被触发 
messageSent() 当发送消息后被触发 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值