当前版本号:v3.0.5

1.下载SDK解压并导入(import module,compile project(':PushSDK')),里面有demo,用demo的包名去官网添加一个应用,然后替换demo中的manifest文件里面的appkey和message_secret,就可以直接运行。

2.初始化SDK

  1.  
    public class App extends Application {
  2.  
     
  3.  
    public PushAgent mPushAgent;
  4.  
     
  5.  
    @Override
  6.  
    public void onCreate() {
  7.  
    super.onCreate();
  8.  
    mPushAgent = PushAgent.getInstance(this);
  9.  
    //注册推送服务,每次调用register方法都会回调该接口
  10.  
    mPushAgent.register(new IUmengRegisterCallback() {
  11.  
     
  12.  
    @Override
  13.  
    public void onSuccess(String deviceToken) {
  14.  
    //注册成功会返回device token
  15.  
    Log.e("deviceToken-------",deviceToken);
  16.  
    }
  17.  
     
  18.  
    @Override
  19.  
    public void onFailure(String s, String s1) {
  20.  
     
  21.  
    }
  22.  
    });
  23.  
     
  24.  
    mPushAgent.setPushIntentServiceClass(UmengPushIntentService.class);
  25.  
     
  26.  
    }
  27.  
    }

这样就已经可以测试了。

3.打开指定页面

包名加activity名,com.umeng.demo.SecondActivity

4.自定义参数

自定义一个service去继承UmengMessageService

public class UmengPushIntentService extends UmengMessageService {
  1.  
    @Override
  2.  
    public void onMessage(Context context, Intent intent) {
  3.  
    Intent data = new Intent(intent);
  4.  
    data.setClass(context, TestActivity.class);
  5.  
    //需为Intent添加Flag:Intent.FLAG_ACTIVITY_NEW_TASK,否则无法启动Activity。
  6.  
    data.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  7.  
    context.startActivity(data);
  8.  
     
  9.  
    }
  10.  
     
  11.  
    }

在跳转的activity中去接收数据并解析

  1.  
    public class TestActivity extends AppCompatActivity {
  2.  
     
  3.  
    public static final String TAG = "TestActivity";
  4.  
     
  5.  
    @Override
  6.  
    protected void onCreate(Bundle savedInstanceState) {
  7.  
    super.onCreate(savedInstanceState);
  8.  
    setContentView(R.layout.activity_test);
  9.  
     
  10.  
     
  11.  
    final String message = getIntent().getStringExtra(MESSAGE_BODY);
  12.  
    if (TextUtils.isEmpty(message))
  13.  
    return;
  14.  
    final UMessage msg;
  15.  
    try {
  16.  
    msg = new UMessage(new JSONObject(message));
  17.  
    UTrack.getInstance(this).trackMsgClick(msg);
  18.  
    Map<String, String> extra = msg.extra;
  19.  
    Log.d(TAG, "message=" + message); //消息体
  20.  
    Log.d(TAG, "custom=" + msg.custom); //自定义消息的内容
  21.  
    Log.d(TAG, "title=" + msg.title); //通知标题
  22.  
    Log.d(TAG, "text=" + msg.text); //通知内容
  23.  
    AlertDialog dialog;
  24.  
    if (null != extra && extra.containsKey("msgType"))
  25.  
    dialog = new AlertDialog.Builder(this)
  26.  
    .setTitle("if消息提示")
  27.  
    .setMessage(msg.text+"11111")
  28.  
    .setCancelable(false)
  29.  
    .setPositiveButton("确认", new DialogInterface.OnClickListener() {
  30.  
    @Override
  31.  
    public void onClick(DialogInterface dialog, int which) {
  32.  
    }
  33.  
    })
  34.  
    .create();
  35.  
    else
  36.  
    dialog = new AlertDialog.Builder(this)
  37.  
    .setTitle("else消息提示")
  38.  
    .setMessage(msg.text)
  39.  
    .setCancelable(false)
  40.  
    .setPositiveButton("确认", null)
  41.  
    .create();
  42.  
     
  43.  
    dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
  44.  
    @Override
  45.  
    public void onDismiss(DialogInterface dialog) {
  46.  
    onBackPressed();
  47.  
    }
  48.  
    });
  49.  
    dialog.show();
  50.  
    } catch (JSONException e) {
  51.  
    e.printStackTrace();
  52.  
    }
  53.  
    }
  54.  
    }

自定义的service需要在application类中调用

mPushAgent.setPushIntentServiceClass(UmengPushIntentService.class);

同时需要在manifest在注册

  1.  
    <service android:name=".UmengPushIntentService"
  2.  
    android:process=":push"/>

官方文档:http://dev.umeng.com/push/android/integration#4

Android友盟推送的更多相关文章

  1. 极光推送和友盟推送,ios端和安卓端的后端调试设置

    我是最后端的,这两天搞了一个app项目,前端安卓使用友盟很方便,调试比较顺利,然后ios就遇到各种问题了,证书.发送成功推送不成功,测试时用的TestMode(),ios上架之后就必须用product ...

  2. 友盟推送 .NET (C#) 服务端 SDK rest api 调用库

    友盟推送 .NET SDK rest api 介绍 该版本是基于友盟推送2.3版本封装的,网上查询了下发现没有.NET版本的调用库,官方也没有封装.NET的版本,只有python.java.php版本 ...

  3. 使用极光/友盟推送,APP进程杀死后为什么收不到推送(转)

    为什么会存在这样的 问题,刚开始的时候我也搞不清楚,之前用极光的时候杀死程序后也会收到推送,但最近重新再去集成时就完全不好使了,这我就纳闷了,虽然Google在高版本上的android上面不建议线程守 ...

  4. 友盟推送里面的Alias怎么用?可以理解成账号吗?

    友盟推送里面的Alias怎么用?可以理解成账号吗? 我们的App有自己的账号体系的,想在每次用户登陆的时候,给用户发一个欢迎消息. 看了一下友盟推送,里面有一个概念叫做Alias(别名),但是官方文档 ...

  5. java 集成友盟推送

    原文:https://blog.csdn.net/Athena072213/article/details/83414743 最近应公司业务需求需要完善友盟推送,认真看了官方文档后其实很简单,只需要细 ...

  6. 友盟推送SDK集成测试、常见问题以及注意事项总结

    最近为了解决公司APP在一些手机出现的推送问题重新集成了最新版的友盟推送SDK,花费了几天时间终于把集成和测试工作完成,最终在华为,Nexus,三星,小米,HTC,魅族等10多部手机上测试并达到了预想 ...

  7. PHP友盟推送消息踩坑及处理

    公司的客户端的推送选用友盟推送,但是友盟的官方文档描述很少,对新手很不友好,所以特写此采坑纪录,废话不多说上代码. 公司业务只涉及单播和广播.所以只提供了单播和广播,业务拓展的话会补充其余部分. 消息 ...

  8. iOS app 集成友盟推送问题

    之前做app推送主要是集成友盟SDK,在程序获取deviceToken时,老是提示如下错误: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用 ...

  9. iOS集成友盟推送

    之前有写过利用Python自己写一个推送服务器, 今天说下如果集成友盟的推送服务 在这之前我们需要做一些准备动作 #1. 注册一个App ID #2. Enable Push Notification ...

随机推荐

  1. 网页中通过js修改img的src属性刷新图片时,图片缓存问题现象表述及问题解决【ps:引用大神案例http://blog.csdn.net/goodleiwei/article/details/50737548】

    问题:上传一张图片,通过js更新src属性刷新图片使其即时显示时, 当img的src当前的url与上次地址无变化时(只更改图片,名称不变,不同图片名称相同)图片不变化(仍显示原来的图片) 但通过fir ...

  2. c# List< int>和List< string>互相转换

    c# List< int>和List< string>互相转换 定义一个list< t> List<int> list = new List<in ...

  3. Java基础——网络编程(三)

    TCP 网络编程 -- tcp 分为客户端和服务端 -- 客户端对应的对象是 Socket -- 服务端对应的对象是 ServerSocket -- 如果客户端先启动,则出现 connection r ...

  4. java如何正确停止一个线程

    Thread类中有start(), stop()方法,不过stop方法已经被废弃掉. 平时其实也有用过,共享一个变量,相当于标志,不断检查标志,判断是否退出线程 如果有阻塞,需要使用Thread的in ...

  5. C++ 中std::function 、std::bind的使用和lambda的使用

    std::function是可调用对象的包装器:std::bind是将可点用对象和其参数一起进行绑定,且绑定后的结果可以使用std::function对象进行保存,并延迟调用到需要调用的时候: 在C+ ...

  6. 存储过程TYPE类型参数调试

    当我们写完一段存储过程后,必然需要调试运行一下写的代码是否能成功运行,当参数是字符,数字或日期时,可以直接在测试窗口输入值.但是类型如果是定义好的TYPE,就无法简单的输入. 一.自定义TYPE TY ...

  7. NIO学习笔记五:Buffer 的使用

    Java NIO中的Buffer用于和NIO通道进行交互.数据是从通道读入缓冲区,从缓冲区写入到通道中. 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO Buffe ...

  8. 使用ECharts画K线图

    需引入echarts.js插件,开发环境建议选择源代码版本,该版本包含了常见的警告和错误提示.下载地址 http://echarts.baidu.com/download.html 下面是代码,注释很 ...

  9. 【代码笔记】iOS-自定义switch

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> #import "CustomSwitch.h" ...

  10. 【读书笔记】iOS-网络-使用Bonjour实现自组织网络

    Bonjour就是这样一种技术:设备可以通过它轻松探测并连接到相同网络中的其他设备,整个过程只需要很少的用户参与或是根本就不需要用户参与.该框架提供了众多适合于移动的使用场景,如基于网络的游戏,设备间 ...