极光推送使用实例(二) Android客户端

上一篇简单介绍了极光推送在Java服务端的实现,如果感兴趣的可以看一下极光推送使用实例(一)JAVA服务端。这篇文章介绍下极光推送在Android客户端的实现。 
JPush Android SDK 是作为 Android Serivice 长期运行在后台的,从而创建并保持长连接,保持永远在线的能力。JPush Android SDK 由于使用自定义协议,协议体做得极致地小,流量消耗非常地小。电量方面,JPush Android SDK 经过持续地优化,尽可能减少不必要的代码执行;并且,长期的版本升级迭代,不断地调优,在保证一定的网络连接稳定性的要求小,减少电量消耗。而 Android 设备的网络的复杂性、不稳定性,是 Android 设备开发最复杂的地方之一。 
关键点: 
1.强烈建议大家上极光官网下载Android demo,里面有所需要的jar文件以及配置文件。配置正确的包名,获取项目的appKey值 
2.极光推送通过广播来实现,所以Android客户端关键就是注册广播事件 
3.建议在项目初始化Application的时候初始化JdPush(初始化过才可以进行推送服务) 
4.这里我们实现全部用户推送和个别用户推送

下载官网demo然后部署,我们会看到如下效果

下面看具体的代码,点击initPush就是初始化JdPush。在具体项目中建议这一步在Application初始化的时候实现。初始化代码其实很简单

// 初始化 JPush。如果已经初始化,但没有登录成功,则执行重新登录。
    private void init(){
         JPushInterface.init(getApplicationContext());
    }

广播MessageReceiver ,首先根据MESSAGE_RECEIVED_ACTION判断广播是否为当前广播,然后从广播中获取推送的内容

    public class MessageReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
              String messge = intent.getStringExtra(KEY_MESSAGE);
              String extras = intent.getStringExtra(KEY_EXTRAS);
              StringBuilder showMsg = new StringBuilder();
              showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
              if (!ExampleUtil.isEmpty(extras)) {
                  showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
              }
              setCostomMsg(showMsg.toString());
            }
        }
    }

注册广播的方法registerMessageReceiver,主要是registerReceiver(mMessageReceiver, filter)方法

public void registerMessageReceiver() {
        mMessageReceiver = new MessageReceiver();
        IntentFilter filter = new IntentFilter();
        filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        filter.addAction(MESSAGE_RECEIVED_ACTION);
        registerReceiver(mMessageReceiver, filter);
    }

1

  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

最后在onCreate方法中

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initView();
        registerMessageReceiver();  // used for receive msg
    }

ok,只要我们点击init按钮,日志里会显示初始化成功log。然后从后台推送一条服务过来,会看到日志显示如下信息

02-07 08:35:36.235: V/JPush(693): [JPushInterface] action:getPushNotificationBuilder : 0
02-07 08:35:36.275: D/PhoneStatusBar(276): addNotification score=0
02-07 08:35:36.325: D/JPush(693): [NotificationHelper] Send push received broadcast to developer defined receiver
02-07 08:35:36.335: D/JPush(693): [MyReceiver] onReceive - cn.jpush.android.intent.NOTIFICATION_RECEIVED, extras:
02-07 08:35:36.335: D/JPush(693): key:cn.jpush.android.MSG_ID, value:399588935
02-07 08:35:36.335: D/JPush(693): key:cn.jpush.android.ALERT, value:祝大家新春快乐
02-07 08:35:36.335: D/JPush(693): key:cn.jpush.android.NOTIFICATION_CONTENT_TITLE, value:JPush SDK Demo
02-07 08:35:36.335: D/JPush(693): key:cn.jpush.android.EXTRA, value:{}
02-07 08:35:36.335: D/JPush(693): key:cn.jpush.android.PUSH_ID, value:399588935
02-07 08:35:36.335: D/JPush(693): key:cn.jpush.android.NOTIFICATION_ID, value:399588935
02-07 08:35:36.335: D/JPush(693): [MyReceiver] 接收到推送下来的通知
02-07 08:35:36.335: D/JPush(693): [MyReceiver] 接收到推送下来的通知的ID: 399588935
02-07 08:35:36.355: D/MediaPlayer(276): Couldn‘t open file on client side, trying server side

可以看到图片左上角图标就是提醒我们收到推送消息。

上面我们后台是面向全部操作平台(包括ANdorid,iOS)的所有用户推送内容,那么如何针对某一个用户推送内容呢?上一篇文章有提到过,我们需要设置别名(alias)。

ok,点击高级功能,会看到如下界面,并且我在alias里填入手机号码 

具体设置别名(alias)的代码,可以看到是调用Handler来实现的

private void setAlias(){
        EditText aliasEdit = (EditText) findViewById(R.id.et_alias);
        String alias = aliasEdit.getText().toString().trim();
        if (TextUtils.isEmpty(alias)) {
            Toast.makeText(PushSetActivity.this,R.string.error_alias_empty, Toast.LENGTH_SHORT).show();
            return;
        }
        if (!ExampleUtil.isValidTagAndAlias(alias)) {
            Toast.makeText(PushSetActivity.this,R.string.error_tag_gs_empty, Toast.LENGTH_SHORT).show();
            return;
        }

        //调用JPush API设置Alias
        mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias));
    }

handler里是调用如下代码设置alias值

  case MSG_SET_ALIAS:
                Log.d(TAG, "Set alias in handler.");
                JPushInterface.setAliasAndTags(getApplicationContext(), (String) msg.obj, null, mAliasCallback);
                break;

然后我们就可以根据设置的alias值,结合第一篇博客后台服务器的设置方法,根据确定的别名进行推送。下面是上一篇博客中后台服务器对alias的设置

public static PushPayload buildPushObject_all_alias_alert() {
        return PushPayload.newBuilder()
                .setPlatform(Platform.android())//设置接受的平台
                .setAudience(Audience.alias("18810923631"))//Audience设置为all,说明采用广播方式推送,所有用户都可以接收到
                .setNotification(Notification.alert(ALERT))
                .build();
    }

除了别名(alias)外,极光推送还提供了tag(标签),主要是针对特定的一组用户进行推送。还有设置推送时间以及设置通知栏样式,大家也可以研究。重要的还是明白其原理

最后再来看一下原理图 

时间: 2024-10-23 04:22:00

极光推送使用实例(二) Android客户端的相关文章

Ionic JPush极光推送 插件实例

1.需要去这里注册https://www.jiguang.cn 注册成功获取AppKey 备注填写应用包名规范点,在项目还要用那 2.创建ionic 项目 指定你注册时候的包名(假如:com.ionicframework.ltapp) ionic start  -i com.ionicframework.ltapp ltapp blank 3.添加JPush 插件 进入 项目目录下 cd  ltapp git clone https://github.com/jpush/jpush-phoneg

极光推送 使用实例 (一)服务端

最近一直在做后台开发,但心里还是总惦记着Android,感觉还是Android有意思.正好项目中要用到极光推送,今天抽空来记录下这两天的研究成果. 我们知道iOS有自己的推送服务,但很遗憾Android没有原生的推送服务,现在有很多第三方的推送服务,比如个推.极光.亚马逊.百度云.聚能等.今天我们就来研究下极光推送的后台服务器如何实现. 关键点: 1.首先最好是把极光官网Java后台服务器的demo下载下来,里面有我们需要的jar包,以及example. 2.极光推送的关键jpushClient

怎样将极光推送第三方导入到Android studio IDE中

1.导入文件 将第三方文件(如下图)复制到项目app->libs中 2.添加引用 右键文件“jpush-sdk-release1.7.3.jar"-  什么 as Library,添加引用 3.编辑build.gradle文件 添加如下代码 sourceSets { main { jniLibs.srcDirs = ['libs'] } } 大功告成!

【android极光推送】—从客户端到后台,一文通吃

前记 推送原理浅析 平台说明 概念解释 推送的三种实现方式 客户端直接向推送服务方发送Http请求 项目服务器通过Http转发推送请求至推送服务方 项目服务端使用SDK进行功能集成 关于推送的种类概述 android客户端初步实现 集成SDK说明 集成步骤 1下载官方提供的SDK集成包 2手动导入SDK 3在极光的官网创建一个应用 4编写一个MyApplication类初始化SDK 5配置 AndroidManifestxml wampServer服务端配置 配置推送SDK 通过composer

极光推送客户端和服务端相关文档

一.客户端: 二.服务端: 1.极光消息推送服务器端开发实现推送(上): http://blog.csdn.net/dawanganban/article/details/18770727?utm_source=tuicool 2.极光消息推送服务器端开发实现推送(下): http://blog.csdn.net/dawanganban/article/details/19029667?utm_source=tuicool 3.极光推送 使用实例 (一)服务端: http://blog.csdn

java SDK服务端推送 --极光推送(JPush)

网址:https://blog.csdn.net/duyusean/article/details/86581475 消息推送在APP应用中越来越普遍,来记录一下项目中用到的一种推送方式,对于Andriod它并没有自己的原生推送机制,一种简单的推送方式是采用第三方推送服务的方式,即通过嵌入SDK使用第三方提供的推送服务,主流的有百度云推送,极光推送,友盟,个推.亚马逊等等.本篇博文只介绍采用极光推送的方式.        如果你是一个新手,建议你先看完本篇博客,然后在去看官网,这样也许上手会快一

极光推送--服务器端

极光推送,由名字可知是一款推送软件.由于android自带的推送在大陆被墙掉了,所以在国内用第三方推送的用户特别多,比较有名的有极光推送.百度云推送.推送的主要用途是用来推送消息给客户端,比如说推送一个消息给android客户端或才iphone客户端,让所有的用户都接到这个通知. 我现在在写的这个程序是利用极光推送,写一个聊天程序,例用极光推送可以发到指定某人.某组或者全体用户.客户端及服务器端有各自对应的jar包,现在这里主要讲解服务器端的编码. 服务器端发送到指定用户时,可以使用方法Audi

Android客户端与PHP服务端通信(三)---极光推送使用

概述 推送消息的方式有很多,在这里我选择了极光推送.本节分为上下两部分,首先通过注册极光推送并使用其Demo程序来看一下推送的效果,然后再一步一步的修改到自己的应用上. 注册登录极光推送 开发人员基本上都了解使用第三方的库,很多都需要注册才能使用,极光推送也不例外.直接登录极光推送官网https://www.jpush.cn/,注册自己的账号,注册的流程就不介绍了,这个都会.注册完直接登录, 登录后,可以由下图看到自己还没有创建任何应用. 创建应用 点击"创建应用",界面变为下图. 按

Android客户端与PHP服务端通信(五)---移植使用极光推送

概述 上一节备研究了示例工程的框架,本节准备自己创建工程,并将极光推送移植到其上. 创建工程 首先创建一个工程,工程名和应用名为lovelife,包名com.lygk.lovelife 一直"Next",直到Finish,此时建立工程完毕,如下图 集成JPush SDK 1. 导入SDK开发包 关于集成SDK的方法,JPush 官方文档已经讲得很详细,可以去看 http://docs.jpush.io/guideline/android_guide/ ,这里我简单的描述一下步骤. 首先