这两天由于项目需要,研究了一下百度云推送,本来这事没什么多大工作量的,但注册百度开发者账户创建应用令我蛋疼菊紧了好一阵,这些东西做了对技术没啥提升,不做又不行,必经之路。好在我耗费了N多个毫毫秒秒后稀里哗啦的闯了过来。

在此先吐槽一下。这个云推送虽然没多少东西,但对于初次接触的人来说还是有点不利索的,所以肯定要看官方文档,只是不知是百度哪个哥们做的文档,pdf做的也太不地体贴了:英文字符里面竟然有中文空格,复制到自己的项目中发现江山一片红,娘的,这猛一看还不一定能看得出来到底是哪里出了错。

for instance:

what's wrong? ....

现在或许能一眼望穿bug,但当血色迷蒙的时候是相当有蛋碎的快感的。

下面开始集成。

先介绍使用方法以便爽一把

一:使用方法

1.打开管理控制台,找到自己创建的工程

http://developer.baidu.com/console#app/project

2:选择云推送---通知:

注:用户范围:

所有人是向所有安装这一app的用户发送通知

广播组可根据标签向特定用户发送通知

3:手机界面:

二:集成方法:

1.清单文件的配置

①:加权限

<!-- Push service 运行需要的权限 -->

<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

<uses-permission android:name="android.permission.VIBRATE" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!-- Push service 运行需要的权限 -->

②:注册消息接收的receiver

<receiver android:name="com.zhuim.sgghealth.MyPushMessageReceiver" >

<intent-filter>

<!-- 接收push消息 -->

<action android:name="com.baidu.android.pushservice.action.MESSAGE" />

<!-- 接收bind、setTags等method的返回结果 -->

<action android:name="com.baidu.android.pushservice.action.RECEIVE" />

<!-- 可选。接受通知点击事件,和通知自定义内容 -->

<action android:name="com.baidu.android.pushservice.action.notification.CLICK" />

</intent-filter>

</receiver>

<!-- 用于接收系统消息以保证PushService正常运行 -->

<receiver

android:name="com.baidu.android.pushservice.PushServiceReceiver"

android:process=":bdservice_v1" >

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED" />

<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

<action android:name="com.baidu.android.pushservice.action.notification.SHOW" />

<action android:name="com.baidu.android.pushservice.action.media.CLICK" />

</intent-filter>

</receiver>

<!-- Push服务接收客户端发送的各种请求 -->

<!-- 注意:RegistrationReceiver 在2.1.1及之前版本有拼写失误,为RegistratonReceiver ,用新版本SDK时请更改为如下代码 -->

<receiver

android:name="com.baidu.android.pushservice.RegistrationReceiver"

android:process=":bdservice_v1" >

<intent-filter>

<action android:name="com.baidu.android.pushservice.action.METHOD" />

<action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.PACKAGE_REMOVED" />

<data android:scheme="package" />

</intent-filter>

</receiver>

<!-- Push 服务 -->

<service

android:name="com.baidu.android.pushservice.PushService"

android:exported="true"

android:process=":bdservice_v1" />

<!-- AndroidMenifest.xml增加pushservice配置 -->

2:代码文件:

①:让推送功能起作用

在自己的主Activity中加入下面代码,让推送功能开始工作:

// 以apikey的方式登录,一般放在主Activity的onCreate中

PushManager.startWork(getApplicationContext(),

PushConstants.LOGIN_TYPE_API_KEY, "bYI*********************zLi3qLk");

其中的apikey是自己工程的创建时赋予的:

②:继承FrontiaApplication类

public class MyApp extends FrontiaApplication {

public List<Activity> activitiesList;

@Override

public void onCreate() {

// TODO Auto-generated method stub

activitiesList = new ArrayList<Activity>();

super.onCreate();

}

}

③:自定义广播接收者:

public class MyPushMessageReceiver extends BroadcastReceiver {

@Override

public void onReceive(final Context context, Intent intent) {

if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) {

// 获取消息内容

String message = intent.getExtras().getString(

PushConstants.EXTRA_PUSH_MESSAGE_STRING);

} else if (intent.getAction().equals(PushConstants.ACTION_RECEIVE)) {

// 处理绑定等方法的返回数据

// PushManager.startWork()的返回值通过PushConstants.METHOD_BIND得到

final String method = intent.getStringExtra(PushConstants.EXTRA_METHOD);

// 方法返回错误码。若绑定返回错误(非0),则应用将不能正常接收消息。

// 绑定失败的原因有多种,如网络原因,或access token过期。

// 请不要在出错时进行简单的startWork调用,这有可能导致死循环。

// 可以通过限制重试次数,或者在其他时机重新调用来解决。

int errorCode = intent.getIntExtra(PushConstants.EXTRA_ERROR_CODE,PushConstants.ERROR_SUCCESS);

String content = "";

if (intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT) != null)

content = new String(intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT));

// 用户在此自定义处理消息:TODO Something

// 通知用户点击事件处理

} else if (intent.getAction().equals(

PushConstants.ACTION_RECEIVER_NOTIFICATION_CLICK)) {

String title = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_TITLE);

String content = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT);

// 用户在此自定义处理点击事件:TODO Something

}

}

}

④:导入百度云推送所需要的jar包及so文件:

libs下导入pushservice-3.2.0.jar并add to build path

libs/armeabi下导入libbdpush_V1_0.so

消息推送之百度云推送Android集成与使用方法的更多相关文章

  1. 消息推送之百度云推送Android集成与用法

    这两天因为项目须要.研究了一下百度云推送,本来这事没什么多大工作量的,但注冊百度开发人员账户创建应用令我蛋疼菊紧了好一阵,这些东西做了对技术没啥提升,不做又不行,必经之路. 好在我耗费了N多个毫毫秒秒 ...

  2. Android推送服务——百度云推送

    一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...

  3. Java端百度云推送消息Demo

    因为在做Java服务器有用到推送消息机制,于是到网上找了一下,就自己试着敲了一个demo.这个demo主要是简单的一个对app消息推送. jar:百度云消息推送Java端的jar. package x ...

  4. 百度云推送-服务端 C# SDK

    思路: 1.公司有项目需要做android和ios手机端推送消息的功能: 2.没有接触过这方面的知识,一头雾水,开始在网上一顿搜,网上倒是有不少解决方案,首先搜的是android的解决方案,因为ios ...

  5. 改写百度云推送SDK,PHP PEAR 包:Services_Baidu_Push

    iPhone使用apple push很方便,而Android很多厂商删除了google push,而且google在大陆连不上,所以要用别的办法. Android常见的推送服务商有:极光推送(http ...

  6. App之百度云推送

    集成SDK 下载最新的Android SDK压缩包并解压,在新建工程或已有工程中增加百度云推送功能. 我下载的是 ,里面有一个同名的文件夹,文件夹中有 导入云推送jar包和so文件: 将解压后的lib ...

  7. 百度云推送的Java实现

    推送现在基本APP都有,项目中要通知和消息,所以综合考虑用了百度云推送 Java实现步骤: 1. 下载 http://push.baidu.com/sdk/push_server_sdk_for_ja ...

  8. Android 高仿微信实时聊天 基于百度云推送

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38799363 ,本文出自:[张鸿洋的博客] 一直在仿微信界面,今天终于有幸利用百 ...

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

    之前介绍过怎样使用shareSDK实现新浪微博分享功能,今天介绍怎样使用百度云推送SDK实现Android手机后台推送功能. 执行效果例如以下 第一步,假设使用百度的SDK,当然要先成为百度的开发人员 ...

随机推荐

  1. Ubuntu+Fedora进阶学习,指令迅速查询,Bug迅速查询(Ctrl+F)

    There is some notes while I am learning Ubuntu Operate System! (Ask Ubuntu & Fedora) 1-- Hard li ...

  2. 配置多个数据源,spring profile 多环境配置管理

    针对生产环境,测试环境,以及本地调试开发有时会配置多套数据库,在一个数据配置文件进行修改,往往有时发布到生成环境会忘记修改,或者本地调试时还是生产环境的库,会导致生产环境数据被污染. ps--刚开始配 ...

  3. 收缩自编码器(CAE)

    自编码器是一种很好的降维技术,它可以学习到数据中非常有用的信息.而收缩自编码器作为正则自编码器的一种,其非线性降维效果非常好,并且它的过程可以通过流形知识来解释. 基础知识 1.自编码器 自编码器是一 ...

  4. VB.NET 编程元素支持更改总结

    Visual Basic 2005 更改了它支持各种编程元素的方式,主要是为了提供与公共语言运行库的互操作性.许多 Visual Basic 6.0 元素被重新命名,重新分类或与 Visual Bas ...

  5. php页面静态化,ob缓存方法

    <?php ob_start();//开启缓存 //要生成静态网页的内容开始 ?> 中间的html代码 <?php //要生成静态网页的内容结束 //把生成的静态内容保存到文件,而不 ...

  6. idea颜色主题

    作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail: 313134555 @qq.com IDEA 主题样式 === 这个垂直线的 颜 ...

  7. BZOJ.3546.[ONTAK2010]Life of the Party(二分图匹配 ISAP)

    题目链接 题意:求哪些点一定在最大匹配中. 这儿写过,再写一遍吧. 求哪些点不一定在最大匹配中.首先求一遍最大匹配,未匹配点当然不一定在最大匹配中. 设一个未匹配点为A,如果存在边A-B,且存在匹配边 ...

  8. php date_default_timezone_set()设置时区

    <?php echo function_exists(date_default_timezone_set)."<br>";//在这他总是返回1,这函数是判断这里面 ...

  9. TVTK库的安装

    1.在网址为:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 里下载以下内容: VTK-7.1.1-cp36-cp36m-win_amd64.whlnumpy-1 ...

  10. Codeforces 989E A Trance of Nightfall 矩阵快速幂+DP

    题意:二维平面上右一点集$S$,共$n$个元素,开始位于平面上任意点$P$,$P$不一定属于$S$,每次操作为选一条至少包含$S$中两个元素和当前位置$P$的直线,每条直线选取概率相同,同一直线上每个 ...