日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 百度推送使用总结

發布時間:2025/3/15 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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.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" />

2、客戶端實現自己的Receiver(繼承自BroadcastReceiver),用于處理當接收到推送消息時的處理響應事件。

<! -- push service client --> <receiver android:name="your.package.PushMessageReceiver"> <intent-filter> <! -- 接收 push 消息 --> <action android:name="com.baidu.android.pushservice.action.MESSAGE" /> <! -- 接收 bind、setTags 等 method 的返回結果 --> <action android:name="com.baidu.android.pushservice.action.RECEIVE" /> <! -- 可選。如果不聲明,用戶點擊通知后,默認打開應用,如果在應用中進行了申明,點擊通知消息時不會打開應用,應該在自己寫的Receiver類里進行處理,如打開某個Activity,同時Receiver會接收到用戶點擊行為的intent,并獲取通知的標題,內容或自定義內容等--> <action android:name=" com.baidu.android.pushservice.action.notification.CLICK” /> </intent-filter> </receiver> 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); }

3、配置PushService服務

<! -- 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" /> </intent-filter> </receiver> <! -- Push 服務接收客戶端發送的各種請求--> <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> <! -- Push 服務 --> <service android:name="com.baidu.android.pushservice.PushService" android:exported="true" android:process=":bdservice_v1"/> <! -- push service end -->

4、調用API

>>1. 在主 Activiy 的 OnCreate 方法中,調用接口 startWork,其中 loginValue 是百度賬戶的accessToken 或者是 ApiKey,由 loginType 決定。
PushManager.startWork(context, loginType, loginValue)

功能:完成 Push 服務的初始化, 并且完成自動 bind 工作
參數
context:當前執行 Context
loginType:String 綁定認證方式——無賬號認證方式用 PushConstants.LOGIN_TYPE_API_KEY ;百度 Auth2.0 認證方式用
PushConstants.LOGIN_TYPE_ACCESS_TOKEN
loginValue: 和 loginType 對應,分別是應用的 API KEY,或者百度 Auth2.0 Access Token

>>2. 自定義通知樣式(可選)
通知樣式定制, 改變 Notification 里的鈴聲、震動、顯示與消失行為,并定制通知欄的 layout、圖標、標題、內容、狀態欄圖標等。

CustomPushNotificationBuilder cBuilder = new CustomPushNotificationBuilder(layoutId, layoutIconId, layoutTitleId, layoutTextId ); cBuilder.setNotificationFlags(Notification.FLAG_AUTO_CANCEL); cBuilder.setNotificationDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); cBuilder.setStatusbarIcon( statusbarIconId); cBuilder.setLayoutDrawable( notificationIconId); PushManager.setNotificationBuilder(this, notificationId, cBuilder);

>>3.客戶端程序需要自己實現一個 BroadcastReceiver 來接收 Push 消息和接口回調

public class PushMessageReceiver extends BroadcastReceiver {public static final String TAG = PushMessageReceiver.class.getSimpleName(); @Overridepublic 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); Intent responseIntent = null;responseIntent = new Intent(PushDemoActivity.ACTION_MESSAGE);responseIntent.putExtra(PushDemoActivity.EXTRA_MESSAGE, message);responseIntent.setClass(context, PushDemoActivity.class);responseIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(responseIntent); } else if (intent.getAction().equals(PushConstants.ACTION_RECEIVE)) {// 處理bind、setTags 等方法口的返回數據 final String method = intent.getStringExtra(PushConstants.EXTRA_METHOD); final int errorCode = intent.getIntExtra(PushConstants.EXTRA_ERROR_CODE,PushConstants.ERROR_SUCCESS); final String content = new String(intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT));Intent responseIntent = null;responseIntent = new Intent(PushDemoActivity.ACTION_RESPONSE);responseIntent.putExtra(PushDemoActivity.RESPONSE_METHOD, method);responseIntent.putExtra(PushDemoActivity.RESPONSE_ERRCODE, errorCode);responseIntent.putExtra(PushDemoActivity.RESPONSE_CONTENT, content);responseIntent.setClass(context, PushDemoActivity.class);responseIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(responseIntent);} else if (intent.getAction().equals(PushConstants.ACTION_RECEIVER_NOTIFICATION_CLICK)) {// 處理用戶點擊通知消息時響應事件Intent aIntent = new Intent();aIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);aIntent.setClass(context, CustomActivity.class);String title = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_TITLE);aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_TITLE, title);String content = intent.getStringExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT);aIntent.putExtra(PushConstants.EXTRA_NOTIFICATION_CONTENT, content);context.startActivity(aIntent);}} }

5、常用的類和API
>>1.常用的類:

Class描述
PushManagerPushManager 提供了所有使用 Push 服務的靜態方法
CustomPushNotificationBuilder

提供了改變 Notification 里的鈴聲、
震動、顯示與消失行為,并定制通知欄的 layout、圖標、標題、內容、
狀態欄圖標的構造函數和方法

PushSettingsPushSettings 提供了端上 Push 服務的配置靜態方法

>>2.API

methoddetailclass.api
Push 服務接口提供 Push 服務startWork
Tag 管理接口Tag 的創建與刪除setTags(Context,List<String>),delTags(...)
通知管理接口自定義通知樣式

CustomPushNotificationBuilder, setNotificationFlags,
setNotificationDefaults, setStatusbarIcon,
setLayoutDrawable, setNotificationBuilder

推送效果反饋反饋推送通知的效果activityStarted, ?activityStoped
設置接口Push 服務設置enableDebugMode

轉載于:https://www.cnblogs.com/a284628487/archive/2013/06/12/3132829.html

總結

以上是生活随笔為你收集整理的Android 百度推送使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。