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

好在我耗费了N多个毫毫秒秒后稀里哗啦的闯了过来。

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

for instance:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VuYWxvbmds/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

what's wrong? ....

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

以下開始集成。

先介绍用法以便爽一把

一:用法

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VuYWxvbmds/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3VuYWxvbmds/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

注:用户范围:

全部人是向全部安装这一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服务接收client发送的各种请求 -->

<!-- 注意: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配置 -->

:代码文件:

①:让推送功能起作用

在自己的主Activity中增加以下代码,让推送功能開始工作:

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

PushManager.startWork(getApplicationContext(),

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

当中的apikey是自己project的创建时赋予的:

②:继承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. HDU 1054 Hungary

    Strategic Game Problem Description Bob enjoys playing computer games, especially strategic games, bu ...

  2. Spring Boot (2) Restful风格接口

    Rest接口 动态页面jsp早已过时,现在流行的是vuejs.angularjs.react等前端框架 调用 rest接口(json格式),如果是单台服务器,用动态还是静态页面可能没什么大区别,如果服 ...

  3. MemcachedClient 使用说明

    上一篇介绍了Memcached基本使用方法<Memcached使用手册>,下面介绍java如何操作memcached.使用的是java_memcached-release_2.6.6. 一 ...

  4. python爬虫:爬取百度云盘资料,保存下载地址、链接标题、链接详情

    在网上看到的教程,但是我嫌弃那个教程写的乱(虽然最后显示我也没高明多少,哈哈),就随手写了一个 主要是嫌弃盘搜那些恶心的广告,这样直接下载下来,眼睛清爽多了. 用pyinstall 打包成EXE文件, ...

  5. 【Oracle】重命名数据文件

    1)查看当前数据文件位置 SQL> select file_id,file_name,tablespace_name from dba_data_files; FILE_ID FILE_NAME ...

  6. C# 获得剪贴板内容和 richTextBox部分文本设置颜色

    try { MemoryStream vMemoryStream = iData.GetData("Html Format") as MemoryStream; if (vMemo ...

  7. Redis好在哪?

    Redis免费入门教程:阿里云大学—开发者课堂 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis ...

  8. 复习MySQL③导入数据、检查及修改

    导入数据: 用insert into语句为表插入数据: - insert into 表名(字段1,字段2,…) values …… 导入外部文本文件: - 导入外部txt文件(导入CSV文件分隔符为' ...

  9. swift-教你如何实现导航上的UISearchController动画效果。

    这个代码片段是我这周我从网上找了各种资料然后经过自己的修改终于弄好了导航的上下动画效果: step1:==>因为这个搜索要有动画效果,所以这个页面必须要有一个导航控制器: //1.自定义创建导航 ...

  10. Java核心技术读书笔记02

    第四章 对象和类 类之间的关系 最常见的三种关系 依赖("uses-a") Order依赖Account类看信息 聚合("has-a") Order包含多个It ...