Android之使用个推实现三方应用的推送功能

PS:用了一下个推.感觉实现第三方应用的推送功能还是比较简单的.官方文档写的也非常的明确.

学习内容:

1.使用个推实现第三方应用的推送.

  

  所有的配置我最后会给一个源代码,内部有相关的配置和文档来帮助大家完成配置,在这里就不进行介绍了.

  感觉需要写的东西不是非常的多,因为官方的文档已经写的非常的明确了,如何进行配置,导入jar包,.so文件,以及AndroidManifest的文件的相关配置都写的非常的明确.我这里就稍微的简单介绍一下.注册账号什么的我就不说了,这些基本的东西没有减少的必要性.

i.PushManager

  PushManager是实现推送的核心类,可以进行推送控制,设置标签,设置别名,设置默认时间等.所有的接口都由这个对象去调用.因此我们需要初始化PushManager对象.

PushManager.getInstance().initialize(context);

对象的创建方式是单列的.因此拿到的对象也就具有唯一性.这里获取到PushManager对象的同时去初始化个推服务,接口调用之后个推服务后台运行,通过广播的方式将CID发送给App.这里其实最重要的就是这个广播,其他的东西都没有什么重点的地方.只需要稍微的注意一下即可.

ii.GeTuiPushReceiver app接收CID的广播

package com.example.totem.getuidemo.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import com.igexin.sdk.PushConsts;
import com.igexin.sdk.PushManager;

/**
 * Created by Totem on 2016/8/15.
 * @author 代码丶如风
 */
public class GeTuiPushReceiver extends BroadcastReceiver {

    public static String KEY_CLIENT_ID = "push_notification_client_id";

    public static String message;

    public static void init(Context context){

        /**
         * 初始化对象
         * 可以进行推送控制,设置标签,设置别名,设置默认时间等
         * 所有接口都由该对象调用
         * */
        PushManager.getInstance().initialize(context);
        /**
         * 获取ClientId
         * */
        String clientId = PushManager.getInstance().getClientid(context);
        if(clientId != null){
            KEY_CLIENT_ID = clientId;
        }
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        //相关处理
    }

    private static OnGetPushMessageListener onGetPushMessageListener;

    public static void setOnGetPushMessageListener(OnGetPushMessageListener onGetPushMessageListener) {
        GeTuiPushReceiver.onGetPushMessageListener = onGetPushMessageListener;
    }

    /**
     * 对外暴露接口
     * */

    public interface OnGetPushMessageListener{
        void getOstfMessage(String message);
    }

}

这个广播是接收推送消息的核心类,其实实现起来也是比较简单的,首先就是获取PushManager对象,然后初始化个推服务,在OnReceiver方法中对传递过来的数据进行判断,这里只对两种状态进行了判断,一种是推送通知,另一种则是透传消息.

@Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        switch (bundle.getInt(PushConsts.CMD_ACTION)){

            /**
             * 推送通知
             * */
            case PushConsts.GET_CLIENTID:
                String cid = bundle.getString("clientid");
                break;

            /**
             * 透传消息,传递过来的是Json字符串.一般而言需要客户端进行解析.
             * */
            case PushConsts.GET_MSG_DATA:
                String appid = bundle.getString("appid");
                byte[] payload = bundle.getByteArray("payload");
                String taskid = bundle.getString("taskid");
                String messageid = bundle.getString("messageid");
                if(payload != null){
                    /**
                     * 如果拿到的数据不为空.那么做相关的处理
                     * */
                    message = new String(payload);
                    onGetPushMessageListener.getOstfMessage(message);
                }else{
                    message = "";
                }
                break;
        }
    }

这样通过判断,我们就可以得知,是推送通知,还是透传消息等等.最后写了一个对外界暴露的接口,其实就对Activity暴露接口,当我们在广播中接收到了数据发生了变化,或者是有数据传递过来,需要通过这个接口的方式,告知数据产生了变化,需要主进程做相关的处理,这是暴露接口的目的.然后在主页面中,我们只需要实现这个接口就可以了.

 GeTuiPushReceiver.setOnGetPushMessageListener(new GeTuiPushReceiver.OnGetPushMessageListener() {
        @Override
        public void getOstfMessage(String message) {
            if(message!=null){
                MessageData.add(message);
            }
        }
    });

iii.打开推送

  turnOnPush(context)方法,用于打开推送,如果我们不主动打开推送的话,就算是后台发送了推送消息,我们也是接收不到的.在默认的状态下是开启状态.

GeTuiPushReceiver.init(getApplicationContext());
pushManager = PushManager.getInstance();
pushManager.turnOnPush(this);

iv.关闭推送服务

  turnOffPush(context)方法,用于关闭推送服务.这个方法执行之后,就无法收到推送服务了,需要注意的是,想要再次接收到推送,必须使用turnOnPush(context)方法.其他方法无效.

GeTuiPushReceiver.init(getApplicationContext());
pushManager = PushManager.getInstance();
pushManager.turnOffPush(this);

v.停止SDK服务.

  stopService(context).停止SDK服务之后,服务不会终止运行,而是终止推送和联网功能.重新启动需要调用initalize()方法或者是turnOnPush()方法.

GeTuiPushReceiver.init(getApplicationContext());
pushManager = PushManager.getInstance();
pushManager.stopService(this);

基本的东西都介绍完了,还有一些设置标签,静默时间,绑定别名什么的,大家如果有兴趣可以自己去研究下,反正我是暂时没有使用到.因此就先不动这几个模块了.我们就来看看如何使用个推后台来实现推送吧.

  首先我们需要创建自己的应用,然后我们可以在应用配置当中获取到我们想要的数据,具体效果如下.

这里有我们想要的数据,AppId,AppKey等等,这些东西都需要在AndroidManifest文件中进行配置.自己做好Demo之后,就可以通过后台发送推送了.

  标题和内容都是必填项,然后一直确定就可以了,这样消息就被推送出去了.在App上打开推送服务,就可以接收到推送了.透传消息我就不进行截图了.需要注意的一点就是透传消息是Json格式的字串.个推为我们提供好了Json的格式化工具.

  最后放上一个源代码,这个源代码是无法运行的,因为这里是使用我自己的后台,大家也需要去创建账号,用自己的后台去创建应用,然后把AndroidManifest文件中的AppId,AppKey,AppSecret进行修改.并且内部提供了很多文档,帮助大家去集成.

http://pan.baidu.com/s/1pLldyqv

时间: 2024-07-29 14:42:52

Android之使用个推实现三方应用的推送功能的相关文章

用 jpush-react-native 插件快速集成推送功能(Android 篇)

概述 jpush-react-native 是极光推送官方开发的 React Native 版本插件,可以快速集成推送功能.现在最新版本的 JPush SDK 分离了 JPush 及 JCore,让开发者可以分开集成 JMessage 及 JPush(以前 JMessage 包含了 JPush).下面就来具体说一下如何快速集成以及使用 jpush-react-native 插件. 安装 打开终端,进入项目文件夹,执行以下命令: npm install jcore-react-native --s

Android集成友盟推送功能

友盟是中国最大的移动开发者服务平台,为移动开发者提供免费的应用统计分析.社交分享.消息推送.自动更新.在线参数.移动推广效果分析.微社区等app开发和运营解决方案. 如何快速集成友盟推送功能: 1. 注册友盟账号 友盟开发者账号的注册地址:http://www.umeng.com/users/sign_up 2. 创建推送应用 首先进入友盟消息推送的应用中心,创建一个应用,链接地址为:http://message.umeng.com/appList. 应用创建完成后,点击应用名称进入应用详情页面

使用【百度云推送】第三方SDK实现推送功能详解

之前介绍过如何使用shareSDK实现新浪微博分享功能,今天介绍如何使用百度云推送SDK实现Android手机后台推送功能. 运行效果如下 第一步,如果使用百度的SDK,当然要先成为百度的开发者啦,这个就不详述了.成为开发者之后,我们要建立一个应用,如下图所示 第二步,创建好应用之后,我们点击开方者服务管理,进入工程管理页面,然后点击左侧云推送,进入云推送功能页面,具体如下图 进入云推送详细页面之后,我们点击推送设置,设置好我们的应用的包名,然后点击快速实例,将系统给我们产生的示例代码下载下来

android 手把手教你10分钟快速接个推推送服务

在现在的一款app中,如果没有推送功能,就好像做项目中没用到listview,你出去面试都不好意思说自己是做android开发的, 但是推送自己写嘛,我可以说70~80%公司都是使用第三方的,因为这块不好做,对技术要求也高,所以学习,做起来花费时间也多,综合起来所以一般都用第三方的,目前市场上推送第三方有个推,激光,百度推送,腾讯的信鸽,友推,相比起来,目前我所知道的好多都是使用个推,而且目前公司项目也是使用个推,今天就接入了个推,所以写个博客,把自己遇到的问题记录下,也方便后人观看, 使用第三

使用【百度云推送】第三方SDK实现推送功能具体解释

之前介绍过怎样使用shareSDK实现新浪微博分享功能,今天介绍怎样使用百度云推送SDK实现Android手机后台推送功能. 执行效果例如以下 第一步,假设使用百度的SDK,当然要先成为百度的开发人员啦,这个就不详述了.成为开发人员之后,我们要建立一个应用,例如以下图所看到的 第二步,创建好应用之后,我们点击开方者服务管理,进入project管理页面,然后点击左側云推送,进入云推送功能页面,详细例如以下图 进入云推送具体页面之后,我们点击推送设置,设置好我们的应用的包名,然后点击高速实例,将系统

C#简单的JPush(极光推送) API实现推送功能(来自mojocube的博客)

APP推送功能大家应该都了解了,目前主要的有百度.极光等几家公司提供推送服务,下面说一下极光推送API的简单实现推送通知功能. 注册完极光的账号后,就可以创建应用,建好后会得到AppKey和MasterSecret两个主要参数,这个东西相当于我们的手机号码,用来连接推送的ID. private string SendPush(int type) { string result = "";  //返回结果 string app_key = "你的AppKey"; st

苹果IOS、安卓推送功能开发

IOS推送开发:以下是基于开源javapns推送开发1.DerInputStream.getLength(): lengthTag=111, too big.先排除是否由于打包时证书 .p12 文件被编译/修改,maven项目打包处理方式 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <

怎么使用网页推送功能?

网页推送即员工打开任何一个网页或者指定网页,局域网内部会在浏览页面发出一个通知,这个是上网管理的附加小工具,比邮箱推送要方便很多.便于网管或者主管人员对员工发出诏令. 行为管理中有一个网页推送功能,可以直接配置 2.根据需求配置推送内容,推送对象就可以了. 3.值得提示的是,网页推送的对象可以选择,也可以根据分配的小组选择. 4.这样员工浏览任何网页,就会有了推送内容的显示.(PS:网页推送的网页只针对浏览的HTTP的网站,HTTPS不可以)

IOS推送功能push

笔记:ios推送功能 推送可实时提醒用户你想要让客户端用户知道的信息,那怕用户并没有开启这个应用.应用场景很广泛,如淘宝应用:在你使用淘宝客户端的时候,假如你拍的东西发货了,如果没有推送功能,你不会及时知道你拍下的东西已经发货.但使用了推送后,淘宝就会发送一条推送通知,告知使用客户端App的你,你拍下的东西已经发货.使用推送的场景很多,在用户的体验度上更人性. 苹果的推送机制(APNS)咯(ps:其实每一篇教程都有),先来看一张苹果官方对其推送做出解释的概要图. Provider是给你手机应用发