Android studio 集合百度推送
来源:互联网 发布:ps网店美工教程 编辑:程序博客网 时间:2024/06/05 18:40
Android 百度推送
1. 注册和下载相应的SDK和Demo
注册不多说了。
http://push.baidu.com/sdk/push_client_sdk_for_android
1.1下载SDK和Demo
1.2下载后的文件目录显示
下载的文件中的Demo可以移植到Android项目中;
Libs中的so和jar.一定要复制到项目中的libs文件夹中;
1.3百度推送中创建应用获取相关信息
2. 解析Demo项目的内容和配置
AndroidManifest.xml文件中的配置:
2.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.ACCESS_DOWNLOAD_MANAGER" /><uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /><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.EXPAND_STATUS_BAR" />
2.2 几个必备的服务及自定义中服务实现的方法
<!-- push应用定义消息receiver声明 ,这个是自定义的一定要--> <receiver android:name="com.baidu.push.example.MyPushMessageReceiver" > <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必须的receviver和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" /> <!-- 以下四项为可选的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> <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> <service android:name="com.baidu.android.pushservice.CommandService" android:exported="true" />
2.3 MyPushMessageReceiver服务中实现的方法
/*
* Push消息处理receiver。请编写您需要的回调函数, 一般来说: onBind是必须的,用来处理startWork返回值;
*onMessage用来接收透传消息; onSetTags、onDelTags、onListTags是tag相关操作的回调;
*onNotificationClicked在通知被点击时回调; onUnbind是stopWork接口的返回值回调
* 返回值中的errorCode,解释如下:
*0 - Success
*10001 - Network Problem
*10101 Integrate Check Error
*30600 - Internal Server Error
*30601 - Method Not Allowed
*30602 - Request Params Not Valid
*30603 - Authentication Failed
*30604 - Quota Use Up Payment Required
*30605 -Data Required Not Found
*30606 - Request Time Expires Timeout
*30607 - Channel Token Timeout
*30608 - Bind Relation Not Found
*30609 - Bind Number Too Many
* 当您遇到以上返回错误时,如果解释不了您的问题,请用同一请求的返回值requestId和errorCode联系我们追查问题。
*
*/
public class MyPushMessageReceiver extends PushMessageReceiver {
/**
* 调用PushManager.startWork后,sdk将对push
* server发起绑定请求,这个过程是异步的。绑定请求的结果通过onBind返回。 如果您需要用单播推送,需要把这里获取的channel
* id和user id上传到应用server中,再调用server接口用channel id和user id给单个手机或者用户推送。
public void onBind(Context context, int errorCode, String appid,
String userId, String channelId, String requestId) {
public void onMessage(Context context, String message,
String customContentString) {
public void onNotificationArrived(Context context, String title,
String description, String customContentString) {
public void onNotificationClicked(Context context, String title,
String description, String customContentString) {
public void onSetTags(Context context, int errorCode,
List sucessTags, List failTags, String requestId) {
public void onDelTags(Context context, int errorCode,
public void onUnbind(Context context, int errorCode, String requestId) {
3. 推送流程的执行和细节操作
3.1 登录、注册百度推送
Push: 以apikey的方式登录,一般放在主Activity的onCreate中。
PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, “pBB9DbmgVAfLXCLCGqlCF1ag”);
// Push: 如果想基于地理位置推送,可以打开支持地理位置的推送的开关
// PushManager.enableLbs(getApplicationContext());
如果登录成功的话,一定会回调
MyPushMessageReceiver中的onBind 的方法,并且errorCode中显示的是0;
// Push: 如果想基于地理位置推送,可以打开支持地理位置的推送的开关
PushManager.enableLbs(getApplicationContext());
3.2 自定义NotificationBuilder,实现高级定义
// Push: 设置自定义的通知样式,具体API介绍见用户手册,如果想使用系统默认的可以不加这段代码
// 请在通知推送界面中,高级设置->通知栏样式->自定义样式,选中并且填写值:1,
// 与下方代码中 PushManager.setNotificationBuilder(this, 1, cBuilder)中的第二个参数对应
CustomPushNotificationBuilder cBuilder = new CustomPushNotificationBuilder(
resource.getIdentifier(
“notification_custom_builder”, “layout”, pkgName),
resource.getIdentifier(“notification_icon”, “id”, pkgName),
resource.getIdentifier(“notification_title”, “id”, pkgName),
resource.getIdentifier(“notification_text”, “id”, pkgName));
cBuilder.setNotificationFlags(Notification.FLAG_AUTO_CANCEL);
cBuilder.setNotificationDefaults(Notification.DEFAULT_VIBRATE);
//通知到达的时候显示的图片;
cBuilder.setStatusbarIcon(this.getApplicationInfo().icon);
cBuilder.setLayoutDrawable(resource.getIdentifier(
“simple_notification_icon”, “drawable”, pkgName));
//下面的通知到达的时候有声音
cBuilder.setNotificationSound(Uri.withAppendedPath(
Audio.Media.INTERNAL_CONTENT_URI, “6”).toString());
// 推送高级设置,通知栏样式设置为下面的ID
PushManager.setNotificationBuilder(this, 1, cBuilder);
显示的效果如下:
3.3 推送信息设置—用户范围设置
1、标题信息和内容可以不用解释太多;
2、用户范围有四种:
3.3.1. 所有设备
所有设备,很明显,不用解释。
3.3.2. 指定设备
主要是测试的时候使用,指定手机测试;Channel的值会在
MyPushMessageReceiver中的onBind方法中返回给用户获取channelId;
3.3.3. 标签设备
Tag管理接口 Tag的创建与删除 setTags, delTags, onListTags
指定的用户绑定标签,只要在应用中绑定:PushManager.setTags(getApplicationContext(), tags);
同时会回调:MyPushMessageReceiver中的onSetTags方法;
public void onSetTags(Context context, int errorCode, List sucessTags, List failTags, String requestId);
PushMessageReceiver的抽象方法,把receiver类继承PushMessageReceiver可以使用。setTags() 的回调函数。
public void onDelTags(Context context, int errorCode, List sucessTags, List failTags, String requestId)
PushMessageReceiver的抽象方法,把receiver类继承PushMessageReceiver可以使用。delTags() 的回调函数。
public void onListTags(Context context, int errorCode, List tags, String requestId);
PushMessageReceiver的抽象方法,把receiver类继承PushMessageReceiver可以使用。listTags() 的回调函数。
3.3.4. 精确推送
3.4 推送信息设置—发送时间和离线消息期限
发送时间不解释,代码里面不用设置;
离线信息指的是多少时间以后还能接受到信息;
3.5 推送信息设置—高级设置
如上图,文件的描述如其意;
主要解释一下附加字段:
@Override public void onMessage(Context context, String message, String customContentString) { String messageString = "透传消息 onMessage=\"" + message + "\" customContentString=" + customContentString; Log.d(TAG, messageString);// 自定义内容获取方式,mykey和myvalue对应透传消息推送时自定义内容中设置的键和值 if (!TextUtils.isEmpty(customContentString)) { JSONObject customJson = null; try { customJson = new JSONObject(customContentString); String myvalue = null; if (!customJson.isNull("mykey")) { myvalue = customJson.getString("mykey"); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // Demo更新界面展示代码,应用请在这里加入自己的处理逻辑 updateContent(context, messageString); }
3.6推送信息设置—设置免打扰时段
这个功能主要是在app的代码中设置:
/ Push: 设置免打扰时段
// startHour startMinute:开始 时间 ,24小时制,取值范围 0~23 0~59
// endHour endMinute:结束 时间 ,24小时制,取值范围 0~23 0~59
PushManager.setNoDisturbMode(getApplicationContext(),
startHour, startMinute, endHour, endMinute);
PushManager.setNoDisturbMode(Context context, int startHour, int startMinute, int endHour, int endMinute);
功能:PushManager类定义的静态方法,设置免打扰模式的具体时段,该时间内处于免打扰模式,通知到达时去除通知的提示音、振动以及提示灯闪烁。
注意:如果开始时间小于结束时间,免打扰时段为当天的起始时间到结束时间;如果开始时间大于结束时间,免打扰时段为第一天起始时间到第二天结束时间;如果开始时间和结束时间的设置均为00:00时,取消免打扰时段功能。
参数:
• context:当前执行Context
• startHour,startMinute:起始时间,24小时制,取值范围0~23,0~59
• endHour,endMinute:结束时间,24小时制,取值范围0~23,0~59
4. 创建透传消息
当设备接收到透传消息时,消息不会在通知栏展示,只是静默回调开发者自定义Receiver中的onMessage函数。手机收到消息后不会有任何现象,因为透传消息对用户完全透明,用户无法感知,便于开发者在不影响用户的情况下对app进行操作。开发者可以通过log内容和自定义的回调函数onMessage中打印该内容,确认消息到达,并执行开发者指定操作。
@Override
public void onMessage(Context context, String message,
String customContentString) {
String messageString = “透传消息 onMessage=\”” + message
+ “\” customContentString=” + customContentString;
Log.d(TAG, messageString);
// 自定义内容获取方式,mykey和myvalue对应透传消息推送时自定义内容中设置的键和值if (!TextUtils.isEmpty(customContentString)) { JSONObject customJson = null; try { customJson = new JSONObject(customContentString); String myvalue = null; if (!customJson.isNull("mykey")) { myvalue = customJson.getString("mykey"); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); }}
5. 总结
上述就是Android 百度推送的主要功能;如果不足之处,请斧正;
- Android studio 集合百度推送
- 百度推送 android studio 的配置
- Android Studio集成百度云推送
- android studio集成 百度云推送项目实战 注意事项
- Android Studio集成百度推送遇到的坑
- Android推送 百度云推送
- Android推送 百度云推送
- Android 百度推送实现
- Android百度云推送
- android 百度云推送
- Android 百度云推送
- Android 之百度推送
- Android百度云推送
- Android 百度云推送
- Android百度消息推送
- android 百度云推送
- Android推送 百度云推送 入门篇
- Android推送 百度云推送 入门篇
- Android图片缩放,压缩总结(inSampleSize,Matrix比较)
- 防范sql注入
- orbslam2(3)-优化
- php实现多文件上传
- iOS图片转base64字符串和base64字符串转为图片
- Android studio 集合百度推送
- PMI 变更管理和 WWPMM 变更管理之比较
- Altium Designer高级功能初探之:匹配线长
- 关于java UTF-8中文与Unicode编码之间转换,以及将浏览器地址栏编码过的中文转换UTF-8形式
- Mybaits深入了解(一)----带你入门
- 数据结构之【排序】--复习
- UML 类图学习总结
- sql server-Convert DateTime 格式的转换
- JS实现子窗口传值到父窗口