1. 程式人生 > >android客戶端百度雲推送的使用總結

android客戶端百度雲推送的使用總結

在之前的一個專案中使用到了百度推送,以前對推送一無瞭解,現在把學習到的關於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
這裡寫圖片描述