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

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述消息推送之百度云推送Android集成与用法相关的知识,希望能为你提供帮助。


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

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

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

文章图片


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

文章图片
what‘s wrong? ....

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


以下開始集成。

先介绍用法以便爽一把
 
一:用法 1.打开管理控制台,找到自己创建的project  http://developer.baidu.com/console#app/project
消息推送之百度云推送Android集成与用法

文章图片


2:选择云推送---通知: 
消息推送之百度云推送Android集成与用法

文章图片

 
注:用户范围:
全部人是向全部安装这一app的用户发送通知
广播组可依据标签向特定用户发送通知
 
消息推送之百度云推送Android集成与用法

文章图片

3:手机界面: 
消息推送之百度云推送Android集成与用法

文章图片

 
二:集成方法: 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>
【消息推送之百度云推送Android集成与用法】                < /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配置  -->
 
2:代码文件: ①:让推送功能起作用
在自己的主Activity中增加以下代码,让推送功能開始工作:
//  以apikey的方式登录。一般放在主Activity的onCreate中
PushManager.startWork(getApplicationContext(),
PushConstants.LOGIN_TYPE_API_KEY,  "bYI*********************zLi3qLk");
当中的apikey是自己project的创建时赋予的:
 
消息推送之百度云推送Android集成与用法

文章图片

②:继承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
 
 
 








    推荐阅读