百度云推送

百度云推送步骤:
1.首先进入百度云推送平台,登录百度账号;

2.点击下载SDK,Android客服端Android V4.6.3版本下载;这是目前最新的版本,一般就是下载最新的版本,下载完成后;

3.创建应用,(为了得到一个key值,因为项目工程里需要用这个key值),一个应用对应一个key值,一个key值只能被一个项目工程程序所应使用,下一步是应用配置,点击小机器人,下一步填写应用包名(这个应用包名其实就是你需要推送的项目工程程序的mainactivity的路径,如:com.bawei.jinritoutiao)点击保存,创建好后,点击操作那列里面的应用配置可以看见自己刚才创建的应用里的key值(注意:要的是API KEY 后面的key值);

4.打开文档中心,找到客户端SDK文档下面的Android SDK文档(相当于教程);

5.打开刚才下载好的SDK压缩包,解压后里面有一个Demo 这是人家百度给你的一个实例,可以导入到exlipce里面(导入时要选择的Android包下那个(Existing Android Code Into Workspace)),他这个小Demo里面导入会有一个类报错,找到这个类,把里面的两行代码注释掉就行了,还有去mainifext.xml里面把 <meta-data
android:name="api_key"
android:value="cPI2v7us5pe7tGMQTIV0nxU8" />

那个value值是你在百度云推送里申请应用里面的key值;好了这是先运行一下人家的项目,先看看效果如何;

6.下面是把自己的项目程序加上这个百度云推送这个功能,还是先打开刚才解压的SDK包,打开那个libs文件夹,把里面的armeabi文件夹,mips文件夹和pushserviece-4.6.2.39.jar包这三个拷到自己要运行的项目工程里面;

7.然后在自己的项目里面开始配置了,在manifext.xml里面,加上下面的权限;

<!-- 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" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />

然后在 mainactivity 的 <activity
android:name="com.example.jinritoutiao.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这个类所在的activity配置下面;加入一下代码;

<!-- push service start -->
<!-- 用于接收系统消息以保证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" />
<!-- 以下四项为可选的action声明,可大大提高service存活率和消息到达速度 -->
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
<!-- Push服务接收客户端发送的各种请求-->
<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>
<service android:name="com.baidu.android.pushservice.PushService" android:exported="true"
android:process=":bdservice_v1" >
<intent-filter >
<action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" />
</intent-filter>
</service>
<!-- 4.4版本新增的CommandService声明,提升小米和魅族手机上的实际推送到达率 -->
<service android:name="com.baidu.android.pushservice.CommandService"
android:exported="true" />
<!-- push结束 -->

<!-- 4.6版本新增的Activity声明,提升Push后台存活率 -->
<activity
android:launchMode="singleInstance"
android:name="com.baidu.android.pushservice.PushKeepAlive"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>


8.在当前工程的主ativity也就是mainactivity的oncreate()方法里面第一行加上以下代码:

PushManager.startWork(getApplicationContext(),PushConstants.LOGIN_TYPE_API_KEY,"api_key");
把"api_key"改为你在百度云里面给自己这给项目程序申请的应用里面所对应的key值;

9.在当前的自己这个工程里面(就在mainactivity所在的包里面创建就行)新建一个普通类,new->class,extends PushMessageReceiver 实现里面的方法就行了;

10.再打开mainfext.xml在刚才添加的接受(receiver)权限下面(第二个receiver)下面放入以下代码:


<!-- 此处Receiver名字修改为当前包名路径 -->
<receiver android:name="YourPackageName.PushTestReceiver">
<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>

把那个name后面的YourPackageName改为你刚才创建的那个普通类的全路径名;

右键点击当前工程,选择Run As --> Android Application,选中已连接的设备或Android虚拟机,运行该程序。如果在logcat中的回调函数中的errorCode为0,说明已经绑定成功,并返回userid和channelid,我们就可以在云控制台推送通知和透传消息到该app了。

11.然后打开百度云推送平台,找到你这个项目所对应的应用,点击操作栏下面的应用配置进入,点击 推送下面的几个选项任意一个,就能发消息了 , 然后模拟器上运行的这个项目程序就能收到刚发的消息了。

原文地址:https://www.cnblogs.com/zhengyanyan/p/5326744.html