android客戶端百度雲推送的使用總結
阿新 • • 發佈:2019-02-13
在之前的一個專案中使用到了百度推送,以前對推送一無瞭解,現在把學習到的關於Android客戶端百度雲推送的知識分享一下
1.在配置檔案裡application中新增的程式碼:
<!-- 此處Receiver名字修改為當前包名路徑 -->
<receiver android:name="example.com.push.PushTestReceiver">
<intent-filter>
<!-- 接收push訊息 -->
<actionandroid:name="com.baidu.android.pushservice.action.MESSAGE" />
<!-- 接收bind、setTags等method的返回結果-->
<actionandroid:name="com.baidu.android.pushservice.action.RECEIVE"/>
<!-- 接收通知點選事件,和通知自定義內容 -->
<actionandroid:name="com.baidu.android.pushservice.action.notification.CLICK"/>
</intent-filter>
</receiver >
<!-- 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存活率和訊息到達速度 -->
<actionandroid: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結束 -->
< !-- example.com.push為應用包名-->
<provider
android:name="com.baidu.android.pushservice.PushInfoProvider"
android:authorities="example.com.push.bdpush"
android:exported="true"
android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.example.com.push"/>
2.在配置檔案裡新增許可權
<!-- 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"/>
3.在工作建立PushTestReceiver類
/**
* Created by qinghua on 2016/8/9.
*/
/**
* Push訊息處理receiver。請編寫您需要的回撥函式, 一般來說: onBind是必須的,用來處理startWork返回值;
* onMessage用來接收透傳訊息; onSetTags、onDelTags、onListTags是tag相關操作的回撥;
* onNotificationClicked在通知被點選時回撥; onUnbind是stopWork介面的返回值回撥
*
* 返回值中的errorCode,解釋如下:
0 繫結成功
10001 當前網路不可用,請檢查網路
10002 服務不可用,連線server失敗
10003 服務不可用,503錯誤
10101 應用整合方式錯誤,請檢查各項宣告和許可權
20001 未知錯誤
30600 服務內部錯誤
30601 非法函式請求,請檢查您的請求內容
30602 請求引數錯誤,請檢查您的引數
30603 非法構造請求,服務端驗證失敗
30605 請求的資料在服務端不存在
30608 繫結關係不存在或未找到
30609 一個百度賬戶繫結裝置超出個數限制(多臺裝置登入同一個百度賬戶)
*
* 當您遇到以上返回錯誤時,如果解釋不了您的問題,請用同一請求的返回值requestId和errorCode聯絡我們追查問題。
*
*/
public class PushTestReceiverextendsPushMessageReceiver {
@Override
public voidonBind(Context context,inti, String s, String s1, String s2, String s3) {
String responseString = "onBind errorCode="+ i +" appid="
+ s + " userId=" + s1 + " channelId="+ s2
+ " requestId=" + s3;
Log.e("xyz", responseString);
if(i==0)
{
Log.e("xyz","繫結成功");
}
}
@Override
public voidonUnbind(Context context,inti, String s) {
String responseString = "onUnbind errorCode="+ i
+ " requestId = " + s;
Log.d(TAG, responseString);
if (i == 0) {
// 解繫結成功
Log.d("xyz","解綁成功");
}
}
@Override
public voidonSetTags(Context context,inti, List<String> list, List<String> list1, String s) {
String responseString = "onSetTags errorCode="+ i
+ " sucessTags=" + list + " failTags=" + list1
+ " requestId=" + s;
Log.d("xyz", responseString);
}
@Override
public voidonDelTags(Context context,inti, List<String> list, List<String> list1, String s) {
String responseString = "onSetTags errorCode="+ i
+ " sucessTags=" + list + " failTags=" + list1
+ " requestId=" + s;
Log.d("xyz", responseString);
}
@Override
public voidonListTags(Context context,inti, List<String> list, String s) {
String responseString = "onListTags errorCode="+ i +" tags="
+ list;
Log.d(TAG, responseString);
}
@Override
public voidonMessage(Context context, String s, String s1) {
String messageString = "透傳訊息 message=\""+ s
+ "\" customContentString="+ s1;
Log.d("xyz", messageString);
}
@Override
public voidonNotificationClicked(Context context, String s, String s1, String s2) {
String notifyString = "onNotificationClicked title=\""+ s
+ "\" description=\""+ s1 + "\" customContent="
+ s2;
Log.d("xyz", notifyString);
}
@Override
public voidonNotificationArrived(Context context, String s, String s1, String s2) {
String notifyString = "onNotificationArrived title=\""+ s
+ "\" description=\""+ s1 + "\" customContent="
+ s2;
Log.d("xyz",notifyString);
}
}
4.在OnCreate函式中寫入:
PushManager.startWork(MainActivity.this, PushConstants.LOGIN_TYPE_API_KEY,”api_key”);
5.時刻關注sdk的更新,不然無法推送
這個是別人的截圖:
1.
2.
3.
*常用的類和API
· Class 描述
· API