本文对Android百度消息推送的使用做总结。这里是消息推送,不是视频的推送流。
一.百度推送的基础知识
(一)百度消息推送的作用:
使用百度的服务器网页给所有的手机程序客户端推送消息,客户端程序会收到一个通知消息。
(二)百度消息推送的使用步骤:
1.创建百度云推送的应用,进行配置,要先建好工程,因为要程序的包名
2.下载百度推送的SDK
3.对工程进行配置,并运行程序
4.在百度消息推送网页进行消息推送
5.在手机客户端显示推送的消息
(三)百度消息推送的相关网址:
首先你要注册一个百度的账号,一般人都会有的吧!
1.百度开发者网址http://developer.baidu.com/
2.百度云推送的网址(注意这里是020中的云推送,而不是云计算)http://developer.baidu.com/platform/s7
3.百度云推送的开发文档地址:http://push.baidu.com/doc/android/api
二.百度消息推送的详细讲解和示例开发
(一)创建一个Android项目,获取文件的包名,比如我的程序的包名为:fuxi.baidupulldemo
(二)在百度云推送的开发文档的地址链接中,点击创建应用,并设置应用的包名,获取API KEY,这是推送消息的关键。
图解1,创建应用:
图解2,创建新应用:
图解3,设置新应用的名称:
图解4,创建成功后应用配置:
图解5,设置应用配置,选择Android程序,填写程序包名:
图解6,上面应用配置已经完成了,但是还是要先开通,选择刚创建的应用的应用配置:
图解7,开通消息推送,并复制API KEY:
图解8,开通应用后显示的结果:
(三)下载百度消息推送的SDK,并把它的Lib文件放到程序中
1.下载SDK
选择下载:
2.点击下载到电脑后,解压到本地文件夹,选择lib中的文件和文件夹复制到要推送消息的程序中。
如图所示:
配置build.gradle文件,如图所示:
代码SourceSets:
sourceSets {
main {
jniLibs.srcDirs = ["libs"]
}
}
依赖代码(针对的是下载的SDK):
compile files('libs/pushservice-5.5.0.50.jar')
(四)创建MyApp.java文件,注册百度云的消息推送,这里就要使用到百度云中的APIKEY了。
package fuxi.baidupulldemo;
import android.app.Application;
import com.baidu.android.pushservice.PushConstants;
import com.baidu.android.pushservice.PushManager;
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
//注册,第三个参数是要修改的API KEY的字符串
PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, "g83yqOypV6lIEuFDAYYYTPew");
}
}
(五)创建一个广播接收者类,继承百度云的广播接收者类,用来接收百度的推送消息并作相应的处理。
package fuxi.baidupulldemo;
import android.content.Context;
import android.util.Log;
import android.widget.Toast;
import com.baidu.android.pushservice.PushMessageReceiver;
import java.util.List;
/**
* 广播接收者的定义
*/
public class PushTestReceiver extends PushMessageReceiver {
@Override
public void onBind(Context context, int i, String s, String s1, String s2, String s3) {
Log.e("TAG", "广播接收者创建广播成功!");
}
@Override
public void onUnbind(Context context, int i, String s) {
}
@Override
public void onSetTags(Context context, int i, List<String> list, List<String> list1, String s) {
}
@Override
public void onDelTags(Context context, int i, List<String> list, List<String> list1, String s) {
}
@Override
public void onListTags(Context context, int i, List<String> list, String s) {
}
//接收到透传消息后的回调方法
@Override
public void onMessage(Context context, String s, String s1) {
Log.e("TAG", "------消息-----" + s + " " + s1);
}
//用户点击推送消息条目的回调方法
@Override
public void onNotificationClicked(Context context, String s, String s1, String s2) {
Log.e("TAG", "--------点击---" + s + " " + s1 + " " + s2);
//s代表的是标题,s1代表的是文本内容,s2没什么意义!
//实现页面的跳转 //context.startActivity(new Intent(context, JumpActivity.class));
Toast.makeText(context, s + "\n" + s1, Toast.LENGTH_LONG).show();
}
@Override
public void onNotificationArrived(Context context, String s, String s1, String s2) {
}
}
(六)MainActivity.java文件
这里MainActivity.java什么都不用做也是可以的。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
setTitle("MainActivity");
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
textView.append("主页面" + "\n");
setContentView(textView);
}
}
(七)配置AndroidManifest.xml这也是比较关键的一步,需要设置的内容也是蛮多的。
你也可以参考一下官方的开发文档中心的说明:
http://push.baidu.com/doc/android/api
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" />
<!-- 富媒体需要声明的权限 -->
<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" />
<!-- 适配Android N系统必需的ContentProvider写权限声明,写权限包含应用包名-->
<uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YourPackageName" />
<permission
android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.fYourPackageName" android:protectionLevel="normal" />
2.添加服务或广播接收者组件
<!-- 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" />
<!-- 适配Android N系统必需的ContentProvider声明,写权限包含应用包名-->
<!-- 请将fuxi.baidupulldemo替换成用户自己的包名。-->
<provider
android:name="com.baidu.android.pushservice.PushInfoProvider"
android:authorities="YourPackageNamebdpush"
android:exported="true"
android:protectionLevel="signature"
android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YourPackageName" />
<!-- 广播接收者的定义,这里是自定义的广播接收者哦 -->
<receiver android:name=".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>
<!-- push结束 -->
3.注册MyApp
<application
android:name=".MyApp"
。。。
配置Manifest文件之后,请将YourPackageName替换成用户自己的包名。上面一共有四处要修改的地方,不要改少了。
到这里,运行程序后,就可以进行消息推送了!
(八)消息推送给手机程序:
图解1:开始推送:
图解2,创建推送的通知
图解3,设置推送通知的内容和标题:
图解4,发送消息后,手机通知栏的显示:
图解5,点击通知信息后的显示:
图解6,再看发送消息的服务端的数据显示:
到这里百度云的消息推送基本是完成了,这里也是可以发送透传指令消息,就不演示了。
只是有一个不是很理解的地方,就是在广播接收者的回调方法里面不能进行页面的跳转,我试过startActivity方法没有效果,不知为啥。但是吐司是可以的,看上面就知道。
程序设计的源码下载的地址:http://download.csdn.net/detail/wenzhi20102321/9722731