訊息推送之百度雲推送Android整合與使用方法

來源:互聯網
上載者:User

標籤:

這兩天由於項目需要,研究了一下百度雲推送,本來這事沒什麼多大工作量的,但註冊百度開發人員賬戶建立應用令我蛋疼菊緊了好一陣,這些東西做了對技術沒啥提升,不做又不行,必經之路。好在我耗費了N多個毫毫秒秒後稀裡嘩啦的闖了過來。

在此先吐槽一下。這個雲推送雖然沒多少東西,但對於初次接觸的人來說還是有點不利索的,所以肯定要看官方文檔,只是不知是百度哪個哥們做的文檔,pdf做的也太不地體貼了:英文字元裡面竟然有中文空格,複製到自己的項目中發現江山一片紅,娘的,這猛一看還不一定能看得出來到底是哪裡出了錯。

for instance:

what‘s wrong? ....

現在或許能一眼望穿bug,但當血色迷濛的時候是相當有蛋碎的快感的。

下面開始整合。

 

先介紹使用方法以便爽一把

 

一:使用方法1.開啟管理主控台,找到自己建立的工程

http://developer.baidu.com/console#app/project

2:選擇雲推送---通知:

 

註:使用者範圍:

所有人是向所有安裝這一app的使用者發送通知

廣播組可根據標籤向特定使用者發送通知

3:手機介面:

 

二:整合方法: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" />

<!-- Push service 運行需要的許可權 -->

②:註冊訊息接收的receiver

<receiver android:name="com.zhuim.sgghealth.MyPushMessageReceiver" >

<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>

 

<!-- 用於接收系統訊息以保證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服務接收用戶端發送的各種請求 -->

<!-- 注意:RegistrationReceiver 在2.1.1及之前版本有拼字失誤,為RegistratonReceiver ,用新版本SDK時請更改為如下代碼 -->

<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>

<!-- Push 服務 -->

<service

android:name="com.baidu.android.pushservice.PushService"

android:exported="true"

android:process=":bdservice_v1" />

<!-- AndroidMenifest.xml增加pushservice配置 -->

 

2:代碼檔案:①:讓推送功能起作用

在自己的主Activity中加入下面代碼,讓推送功能開始工作:

// 以apikey的方式登入,一般放在主Activity的onCreate中

PushManager.startWork(getApplicationContext(),

PushConstants.LOGIN_TYPE_API_KEY, "bYI*********************zLi3qLk");

其中的apikey是自己工程的建立時賦予的:

②:繼承FrontiaApplication類

public class MyApp extends FrontiaApplication {

public List<Activity> activitiesList;

@Override

public void onCreate() {

// TODO Auto-generated method stub

activitiesList = new ArrayList<Activity>();

super.onCreate();

}

}

③:自訂廣播接收者:

 

public class MyPushMessageReceiver extends BroadcastReceiver {

@Override

public void onReceive(final Context context, Intent intent) {

 

if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) {

// 擷取訊息內容

String message = intent.getExtras().getString(

PushConstants.EXTRA_PUSH_MESSAGE_STRING);

 

} else if (intent.getAction().equals(PushConstants.ACTION_RECEIVE)) {

// 處理綁定等方法的返回資料

// PushManager.startWork()的傳回值通過PushConstants.METHOD_BIND得到

final String method = intent.getStringExtra(PushConstants.EXTRA_METHOD);

// 方法返回錯誤碼。若綁定返回錯誤(非0),則應用將不能正常接收訊息。

// 綁定失敗的原因有多種,如網路原因,或access token到期。

// 請不要在出錯時進行簡單的startWork調用,這有可能導致死迴圈。

// 可以通過限制重試次數,或者在其他時機重新調用來解決。

int errorCode = intent.getIntExtra(PushConstants.EXTRA_ERROR_CODE,PushConstants.ERROR_SUCCESS);

String content = "";

if (intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT) != null)

content = new String(intent.getByteArrayExtra(PushConstants.EXTRA_CONTENT));

// 使用者在此自訂處理訊息:TODO Something

 

// 通知使用者點擊事件處理

} else 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);

// 使用者在此自訂處理點擊事件:TODO Something

}

}

}

④:匯入百度雲推送所需要的jar包及so檔案:

libs下匯入pushservice-3.2.0.jar並add to build path

libs/armeabi下匯入libbdpush_V1_0.so

訊息推送之百度雲推送Android整合與使用方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.