百度Push(云推送)使用基础篇
来源:互联网 发布:nginx 只允许指定url 编辑:程序博客网 时间:2024/04/30 04:20
现在推送服务已经成为了一个应用的刚需,像“新版本提示”、“新活动提示”、“消息提醒”等功能基本上都是使用Push来实现,但是Push在大部分应用中并不能充当主营的业务,往往作为丰富应用功能,方便云端向客服端推送实时消息的角色。本人觉得这类服务应该足够简单,让开发者花很小的代价的使用这类服务,并能够很快的集成到自己的应用中,在这里为大家推荐一个Push服务—–百度云推送(Push)。
百度云推送(push)是百度云平台向开发者提供的消息推送服务;通过利用云端与客户端之间建立稳定、可靠的长连接来为开发者提供向客户端应用推送实时消息服务。
本人通过自身的实践,很快将百度云服务(Push)集成到自己的App中,现将集成步骤分享给大家。
前期准备
百度云服务(Push)提供两种初始化的方法,分别是:
- 无账号初始化
开发者无需接入百度账户体系, 使用无账号初始化Push
- 百度帐号初始化
使用百度帐号来初始化Push服务
这两种方法都需要以API Key(百度开发者创建的应用程序的唯一标识)作为参数,所以我们首先需要成为百度开发者并创建应用获取API Key,步骤如下:
(1)登陆 百度开发者中心,如果不是百度开发者,需要先注册成为百度开发者,如果已经是百度开发者请直接到步骤(2)
(2)点击 “创建应用”
(3)选择“移动客服端”,并输入“应用名称”,点击“确定”
(4)获取API Key
开发
(1)添加pushservice.jar到工程中libs目录下,并将该jar包添加到工程的Java Build Path
(2)修改AndroidManifest.xml
- 声明运行Push的权限
<!-- 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.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.VIBRATE" /> <!-- for log. --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" /> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <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_FINE_LOCATION" />
- 注册消息接收receiver
<receiver android:name="com.baidu.pushdemo.PushMessageReceiver" > <intent-filter> <!-- 接收push消息 --> <action android:name="com.baidu.android.pushservice.action.MESSAGE" /> <!-- 接收bind,unbind,fetch,delete等反馈消息 --> <action android:name="com.baidu.android.pushservice.action.RECEIVE" /> <action android:name="com.baidu.android.pushservice.action.notification.CLICK" /> </intent-filter></receiver>
- 添加Push服务端配置
<!-- push service --> <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> <receiver android:name="com.baidu.android.pushservice.RegistratonReceiver" 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" /> <!-- push service end -->
- 添加富媒体显示的Activity
<!-- push service rich media display --> <activity android:name="com.baidu.android.pushservice.richmedia.MediaViewActivity" android:configChanges="orientation|keyboardHidden" android:label="MediaViewActivity" > </activity> <activity android:name="com.baidu.android.pushservice.richmedia.MediaListActivity" android:configChanges="orientation|keyboardHidden" android:label="MediaListActivity" android:launchMode="singleTask" > </activity>
(3)在工程src/下创建并编写“PushMessageReceiver.java”文件,完成push消息接收和处理功能
public class PushMessageReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) { //获取Push消息内容 String message = intent.getExtras().getString( PushConstants.EXTRA_PUSH_MESSAGE_STRING); } else if (intent.getAction().equals(PushConstants.ACTION_RECEIVE)) { //处理bind等方法的返回数据 //注:PushManager.startWork()的返回值通过PushConstants.METHOD_BIND得到 //获取调用的方法 final String method = intent.getStringExtra(PushConstants.EXTRA_METHOD); //方法返回错误码,您需要恰当处理。比如,方法为bind时,若失败,需要重新bind,即重新调用startWork final int errorCode = intent.getIntExtra(PushConstants.EXTRA_ERROR_CODE,PushConstants.ERROR_SUCCESS); //返回Push消息的内容 final String content = new String(intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT)); Toast.makeText(context, "method : " + method + "\n result: " + errorCode + "\n content = " + content, Toast.LENGTH_SHORT).show(); } else if (intent.getAction().equals(PushConstants.ACTION_RECEIVER_NOTIFICATION_CLICK)) { //用户点击通知后的处理 Intent aIntent = new Intent(); aIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //当用户点击通知后启动显示信息的Activity aIntent.setClass(context, DisplayMessage.class); //Push信息的title String title = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_TITLE); aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_TITLE, title); //Push信息的content String content = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT); aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT, content); context.startActivity(aIntent); } }}
(4)在src/下创建一个用户点击通知信息后的响应Activity,本实例中是显示Push信息的Activity,名为“DisplayMessage.java”
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.display_message); message_title = (TextView)findViewById(R.id.message_tile); message_content = (TextView)findViewById(R.id.message_content); //获取push消息的title和content Intent intent = getIntent(); //获取信息的title String title = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_TITLE); //获取信息的content String content = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT); //显示信息的title和content message_title.setText(title); message_content.setText(content);}
(5)在需要启动Push服务的Activity中调用PushManager.startWork()启动Push服务,本实例通过点击button启动Push服务
public class MainActivity extends Activity { private Button ak_init; //开发者中心获取的API Key private static final String API_KEY = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ak_init = (Button)findViewById(R.id.ak_init); ak_init.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub // startWork()完成Push服务的初始化,并且完成自动bind工作 PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, API_KEY); } }); }}
到此,客户端上的Push就已经完成了。
推送后台
客户端已经开发完成,那么服务器端需要把信息推送到客户端的话就需要开发服务端,而百度云推送帮我们解决了开发服务器端的问题,在百度开发者中心上直接提供推送后台,使推送更为简单,下面介绍如何使用Push推送后台。
(1)回到刚刚创建完成的页面,点击“云推送(Push)”
(2)填写创建的Android工程的包名后点击“保存”
(3)点击“推送消息”,根据实际的情况选择推送类型
注意
如果我们推送的是“富媒体”类型的消息的话,那么需要在Android工程中加入显示富媒体消息的样式,步骤如下:
(1)将下面三个文件放在/res/layout/下
bpush_download_progress.xml
bpush_media_list.xml
bpush_media_list_item.xml
(2)将下面的图片放在/res/drawable-hdpi/下
点此查看图片资源
Demo 下载地址:https://github.com/ganxun1/baidupush/tree/master/Demo/simple%20demo
原文链接:http://m.blog.csdn.net/blog/xiongyanbing123123/16358145
- 百度Push(云推送)使用基础篇
- 百度Push(云推送)使用基础篇
- 百度Push(云推送)使用基础篇
- 百度云推送push的使用
- [置顶] 百度云推送push的使用
- Push---百度云推送Demo
- Baidu Push SDK - 百度云推送
- 百度云推送push与deviceone应用
- 使用百度云推送
- 百度推送(Push)简单集成
- push推送的使用
- 推送的实现,使用百度云推送
- android 使用百度云推送
- [Push]百度消息推送的应用
- Android推送 百度云推送 入门篇
- Android推送 百度云推送 入门篇
- Android推送 百度云推送 入门篇
- Android推送 百度云推送 入门篇
- Objective-C是动态运行时语言是什么意思?
- Hive学习笔记(1)
- MS SQL数据库服务介绍
- 【GO】
- 10071 - Back to High School Physics
- 百度Push(云推送)使用基础篇
- 设计模式之——策略模式
- B - An easy problem
- Kaldi .cc文件的命令行解析
- HDU 4749 Parade Show(KMP)
- 设计模式之工厂模式
- 管理经济学之颗粒归仓(二)
- 子数组的最大乘积 子数组最大和
- 如何在oracle 集群中更换私有网络的网卡