最近項目中要用到推送,以前一直用的是xmpp,此次公司指明要用百度雲推送,覺得幾分鐘就能搞定的事,結果吃在了之前用xmpp的虧,進入了一個誤區,覺得只要啓動就ok了,但是事實卻老是報,找不到相關類,靜下心來看官方文檔,發現網站的引導作的不是很好,甚至有點亂,老是找不到想到的網頁,這裏簡單的說下流程:
api
首先註冊一個百度帳號,這裏就很少說了。而後登錄,點擊右上方的管理控制檯選擇開發者服務管理,見下圖測試
會進入下面的界面
網站
點擊建立工程見下界面this
隨便輸入一個應用名稱,點擊建立會看到下面的界面spa
點擊推送設置xml
接下來輸入你的應用包名,點保存開發
如今點擊右上角的APIKey,就能夠複製你的API key了文檔
下面簡單介紹一下配置和代碼,官方文檔,和demo已經足夠了,這裏就說一下須要注意的地方get
接下來是代碼的調用
it
將這兩個文件拷貝到你的主包下,修改使其沒錯,
if (!hasBind(getApplicationContext())) {
// !! 請將AndroidManifest.xml 104行處 api_key 字段值修改成本身的 api_key 方可以使用 !!
// !! ATTENTION:You need to modify the value of api_key to your own at row 104 in AndroidManifest.xml to use this Demo !!
PushManager.startWork(getApplicationContext(),
PushConstants.LOGIN_TYPE_API_KEY,
getMetaValue(MainActivity.this, "api_key"));
// Push: 若是想基於地理位置推送,能夠打開支持地理位置的推送的開關
// PushManager.enableLbs(getApplicationContext());
}
這段代碼是啓動推送的,放到oncreate方法中
下面是幾個關聯的方法
// 用share preference來實現是否綁定的開關。在ionBind且成功時設置true,unBind且成功時設置false
public static boolean hasBind(Context context) {
SharedPreferences sp = PreferenceManager
.getDefaultSharedPreferences(context);
String flag = sp.getString("bind_flag", "");
if ("ok".equalsIgnoreCase(flag)) {
return true;
}
return false;
}
// 獲取ApiKey
public static String getMetaValue(Context context, String metaKey) {
Bundle metaData = null;
String apiKey = null;
if (context == null || metaKey == null) {
return null;
}
try {
ApplicationInfo ai = context.getPackageManager()
.getApplicationInfo(context.getPackageName(),
PackageManager.GET_META_DATA);
if (null != ai) {
metaData = ai.metaData;
}
if (null != metaData) {
apiKey = metaData.getString(metaKey);
}
} catch (NameNotFoundException e) {
}
return apiKey;
}
如今能夠測試一下了
仍是點擊點擊開發者服務管理,會看到下面界面
運行你的應用後,點擊通知,發送消息,驗證是否成功