Android极光推送 API简述


上一篇文章讲述了极光推送的 jcenter 自动集成,简单快捷,本篇简单介绍一下极光推送API在实际项目中的经常使用的一些方法。

1.设置调试模式

JPushInterface.setDebugMode(isDebug);

在自定义的Application中onCreate中调用,用于debug调试,正式环境不用调用。

2.初始化

JPushInterface.init(this);

同调试模式一样,在Application中onCreate中调用,对JPush 推送服务进行初始化。

3.停止与恢复推送服务

许多应用为了良好的用户体验,将是否接受推送服务的权限开放给用户,让用户自定义是否接收推送通知,这种情况就会用到推送的停止和恢复。

注:本功能是一个完全本地的状态操作。也就是说:停止推送服务的状态不会保存到服务器上。如果停止推送服务后,开发者App被卸载重新安装,JPush SDK 会恢复正常的默认行为。本功能其行为类似于网络中断的效果,即:推送服务停止期间推送的消息,恢复推送服务后,如果推送的消息还在保留的时长范围内,则客户端是会收到离线消息。

//停止推送服务
JPushInterface.stopPush(this);

//恢复推送服务
JPushInterface.resumePush(this);

//检查推送服务是否已经被停止
JPushInterface.isPushStopped(this);

4.标签和别名

简单来说,这两者是为了区分用户以便对单个或部分用户单独推送消息使用。每个用户只能有一个别名,但可以有多个标签,在项目中不同的用户设置不同的别名,这样可以根据别名来确定唯一用户。

//设置别名
JPushInterface.setAlias(context,sequence,alias);
//删除别名
JPushInterface.deleteAlias(context,sequence);
//查询别名
JPushInterface.getAlias(context,sequence);
//设置标签
JPushInterface.setTags(context,sequence,tags);
//新增标签
JPushInterface.addTags(context,sequence,tags);
//删除标签
JPushInterface.deleteTags(context,sequence,tags);
//清楚所有标签cleanTags
JPushInterface.cleanTags(context,sequence);
//查询所有标签
JPushInterface.getAllTags(context,sequence);

在官方提供的Demo中我们会发现,配置文件中多了一个 用户自定义接收消息器 的 MyJPushMessageReceiver ,这个Receiver就是用于接收 别名和标签 的相关操作回调使用
Android极光推送 API简述_第1张图片

package com.example.jpushdemo;

import android.content.Context;

import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.service.JPushMessageReceiver;

/**
 * 自定义JPush message 接收器,包括操作tag/alias的结果返回(仅仅包含tag/alias新接口部分)
 * */
public class MyJPushMessageReceiver extends JPushMessageReceiver {

    @Override
    public void onTagOperatorResult(Context context,JPushMessage jPushMessage) {
        //tag增删查改的操作会在此方法中回调结果。
        TagAliasOperatorHelper.getInstance().onTagOperatorResult(context,jPushMessage);
        super.onTagOperatorResult(context, jPushMessage);
    }
    @Override
    public void onCheckTagOperatorResult(Context context,JPushMessage jPushMessage){
        //查询某个tag与当前用户的绑定状态的操作会在此方法中回调结果。
        TagAliasOperatorHelper.getInstance().onCheckTagOperatorResult(context,jPushMessage);
        super.onCheckTagOperatorResult(context, jPushMessage);
    }
    @Override
    public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
        //alias相关的操作会在此方法中回调结果。
        TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context,jPushMessage);
        super.onAliasOperatorResult(context, jPushMessage);
    }

    @Override
    public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
        //设置手机号码会在此方法中回调结果。
        TagAliasOperatorHelper.getInstance().onMobileNumberOperatorResult(context,jPushMessage);
        super.onMobileNumberOperatorResult(context, jPushMessage);
    }
}

5.获取 RegistrationID

集成了 JPush SDK 的应用程序在第一次成功注册到 JPush 服务器时,JPush 服务器会给客户端返回一个唯一的该设备的标识 - RegistrationID。JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。应用程序可以把此 RegistrationID 保存以自己的应用服务器上,然后就可以根据 RegistrationID 来向设备推送消息或者通知。

获取RegistrationID有两种方式,一种是首次注册成功是在用户自定义的广播接收器 MyReceiver 中的回掉中获取
Android极光推送 API简述_第2张图片
注册成功后也可以使用函数获取

JPushInterface.getRegistrationID(context);

5.别名、标签和RegistrationID

推送消息时,要指定推送的对象:全部,某一个人,或者某一群人。全部很好办,针对某应用“群发”就好了。Portal与API都支持向指定的 appKey 群发消息。要指定向某一个特定的人,或者某一群特定的人,则相对复杂。因为对于 JPush 来说,某一个人就是一个注册ID,这个注册ID与开发者App没有任何关系,或者说对开发者App是没有意义的。如果要对开发者App有意义的某个特定的用户推送消息,则需要:把 JPush 注册用户与开发者App 用户绑定起来。
这个绑定有两个基本思路:

  • 把绑定关系保存到 JPush 服务器端
  • 把绑定关系保存到开发者应用服务器中

前者,就是这里要说到的:别名与标签的功能。这个机制简单易用,适用于大多数开发者。后者,则是 JPush 提供的另外一套 RegistrationID 机制。这套机制开发者需要有应用服务器来维护绑定关系,不适用于普通开发者。也就是说第一种方式是由极光的服务器来维护这种绑定关系,第二种是将这种绑定关系放到我们自已应用的服务器上来维护,具体使用哪种方式根据实际应用场景来决定。

结尾

简单介绍这几种开发中常用到的一些API,更多特殊场景使用API可以参考极光的官方API

你可能感兴趣的:(Android)