Android studio 集成 百度云推送 教程

? ??????????????Android?studio集成百度云推送教程


1?前言

????????最近研究百度云推送和Android?Studio集成豌注,按照官方文檔?沒有跑成功,官網(wǎng)主要按照Eclipse集成來寫的揉忘,查了許多資料跳座,都是零零散散的,而且有些關(guān)鍵點都漏掉了泣矛,經(jīng)過總結(jié)歸納最終實測成功疲眷,記錄如下,希望對初學(xué)者有所幫助您朽,少走彎路狂丝,節(jié)省時間。

說明:這里只介紹Android?Studio 和 百度云推送的集成哗总,Eclipse和百度云的集成請參考官網(wǎng)即可几颜。

2?Android?Studio和百度云推送的集成

2.1?集成開發(fā)環(huán)境(IDE)

JDK?版本:1.8.0_60

?Android?Studio 3.1.4(推薦)

百度云推送?jar包版本?pushservice-5.6.0.30.jar?下載最新即可

?創(chuàng)建工程 選 Android 8.1

2.2?注冊成為百度開發(fā)者

https://developer.baidu.com/

2.3?進(jìn)入控制臺并創(chuàng)建應(yīng)用

1)創(chuàng)建應(yīng)用

在首頁登陸已經(jīng)注冊為開發(fā)者的百度賬號,然后點擊開始使用或右上角的"我的控制臺"進(jìn)入推送控制臺

進(jìn)入推送控制臺會進(jìn)入應(yīng)用列表頁讯屈,應(yīng)用列表頁展示目前您在百度開發(fā)者中心曾經(jīng)創(chuàng)建過的所有應(yīng)用蛋哭;如果您曾經(jīng)在舊版管理控制臺配置過的應(yīng)用,新版管理控制臺將可以直接使用涮母;對于新創(chuàng)建或從未配置過的應(yīng)用躁愿,則需要進(jìn)行應(yīng)用配置之后才可以進(jìn)行消息發(fā)送等操作彤钟。

當(dāng)您需要創(chuàng)建新的應(yīng)用,請點擊應(yīng)用列表頁中的創(chuàng)建應(yīng)用按鈕

隨后請為您的應(yīng)用命名峡眶。應(yīng)用名稱可以是中文,數(shù)字或英文字母的組合,最長32字符搬男。注意應(yīng)用名稱符合相當(dāng)法律法規(guī)并遵守“云推送”開發(fā)者服務(wù)協(xié)議

創(chuàng)建成功后缔逛,可以立刻進(jìn)行應(yīng)用配置,也可以稍后通過應(yīng)用列表中的鏈接進(jìn)入敦冬。

2)應(yīng)用配置

如果您是第一次進(jìn)行某個應(yīng)用的應(yīng)用配置介蛉,則需要您選擇應(yīng)用的平臺(選Android)甘耿。在本次配置保存完畢后捏境,應(yīng)用的平臺將不可以更改贰剥,請謹(jǐn)慎操作

注意:應(yīng)用配置的包名?要和APP?的包名一致。

3Android應(yīng)用配置包名命名規(guī)則

安卓應(yīng)用需要配置應(yīng)用的包名,包名的要求如下:

只可以包含大寫字母(A到Z)瓶盛、小寫字母(a到z)、數(shù)字和下劃線、中文奶镶,可以用英文句號分隔

每段標(biāo)識必須以字母或下劃線或中文開頭

至少包含兩段標(biāo)識符即至少包含一個英文句號

不可包含Java保留字

兩段標(biāo)識符之間有且只能有一個英文句號

4iOS應(yīng)用配置(本章不涉及ios集成捺氢,可略過)

iOS的應(yīng)用配置包含以下幾個部分

選擇應(yīng)用目前的默認(rèn)推送模式

iOS應(yīng)用根據(jù)編譯過程中采用的證書不同分為開發(fā)版應(yīng)用和生產(chǎn)版應(yīng)用悠反,兩種類型的應(yīng)用之間消息推送不能互通斋否,即使用開發(fā)版證書的應(yīng)用無法收到以生產(chǎn)版證書的推送舅世,反之亦然缨硝。這里的配置會影響iOS推送時的默認(rèn)應(yīng)用(使用的證書)類型證書上傳

如上述胖笛,您需要為iOS應(yīng)用上傳對應(yīng)的開發(fā)版證書和生產(chǎn)版證書,這里要求應(yīng)用至少上傳默認(rèn)推送模式對應(yīng)的類型的證書才可以進(jìn)行應(yīng)用配置保存操作。

損壞的、過期的證書都會造成證書上傳的失敗瘫絮,如果出現(xiàn)此類問題扁眯,請獲取正確的iOS證書后重新上傳


2.4?獲取應(yīng)用的ApiKey/SecretKey

ApiKey是應(yīng)用標(biāo)識命满,在SDK調(diào)用過程中唯一標(biāo)識一個應(yīng)用?SecretKey是調(diào)用API時的Token杂抽,用來驗證請求的合法性铸磅,請注意保密

ApiKey/SecretKey?在應(yīng)用創(chuàng)建完畢后可以在應(yīng)用詳情頁中查到

如果您的SecretKey泄露導(dǎo)致風(fēng)險,請聯(lián)系我們以重置SecretKey

2.5?下載Android? Demo客戶端

應(yīng)用創(chuàng)建完畢后,在應(yīng)用詳情頁可以找到該應(yīng)用的Demo客戶端的下載鏈接下載,解壓后備用(解壓后為PushDemo)。

2.6?Android studio?新建工程

新建的工程?包名要和?百度云推送創(chuàng)建的應(yīng)用配置的包名一致。

2.7?導(dǎo)入云推送jar包和so文件

將解壓后的libs文件夾中所有文件拷貝到您的工程的libs文件夾中。

在工程中“src/main”目錄中新建名為jniLibs的目錄,將libs文件夾中除了jar包外的文件夾拷貝到“jniLibs”目錄內(nèi)漂辐。?如下圖所示:

2.8?配置AndroidManifest文件

在當(dāng)前工程的AndroidManifest.xml文件中复凳,添加權(quán)限和聲明信息,配置參考官方文檔給出的配置(這里不做重復(fù)粘貼了) https://push.baidu.com/doc/android/api

配置Manifest文件之后赦邻,請將YourPackageName替換成用戶自己的包名。

我配置完的文件如下须床,請參考:

xml version="1.0"?encoding="utf-8"?>

<manifest?xmlns:android="http://schemas.android.com/apk/res/android"

?package="com.srie.oaapp">


運行需要的權(quán)限?-->

?<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-ermission?android:name="android.permission.RECEIVE_BOOT_COMPLETED"?/>

-->

?<uses-permission?android:name="android.permission.VIBRATE"?/>

<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.DISABLE_KEYGUARD"?/>

<uses-permission?android:name="android.permission.BROADCAST_STICKY"?/>


富媒體需要聲明的權(quán)限?-->

?<uses-permission?android:name="android.permission.ACCESS_COARSE_LOCATION"?/>

<uses-permission?android:name="android.permission.ACCESS_WIFI_STATE"?/>

<uses-permission?android:name="android.permission.EXPAND_STATUS_BAR"?/>


適配Android N系統(tǒng)必需的ContentProvider寫權(quán)限聲明坦刀,寫權(quán)限包含應(yīng)用包名-->

?<uses-permission?android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.srie.oaapp"?/>

<permission

android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.srie.oaapp"

?android:protectionLevel="signature">

</permission>

<application

?android:allowBackup="true"

?android:icon="@mipmap/ic_launcher"

?android:label="@string/app_name"

?android:roundIcon="@mipmap/ic_launcher_round"

?android:supportsRtl="true"

?android:theme="@style/AppTheme">

<activity?android:name=".MainActivity">

<intent-filter>

<action?android:name="android.intent.action.MAIN"?/>

<category?android:name="android.intent.category.LAUNCHER"?/>

</intent-filter>

</activity>


用于接收系統(tǒng)消息以保證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存活率和消息到達(dá)速度?-->

?<action?android: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>

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


版本新增的CommandService聲明,提升小米和魅族手機(jī)上的實際推送到達(dá)率?-->

?<service?android:name="com.baidu.android.pushservice.CommandService"

?android:exported="true"?/>


適配Android N系統(tǒng)必需的ContentProvider聲明批钠,寫權(quán)限包含應(yīng)用包名-->

?<provider

?android:name="com.baidu.android.pushservice.PushInfoProvider"

?android:authorities="com.srie.oaapp.bdpush"

?android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.srie.oaapp"

?android:protectionLevel =?"signature"

?android:exported="true"?/>


結(jié)束?-->


此處Receiver名字修改為當(dāng)前包名路徑?-->

?<receiver?android:name="com.srie.oaapp.MyPushMessageReceiver">

<intent-filter>

?<action?android:name="com.baidu.android.pushservice.action.MESSAGE"?/>

<action?android:name="com.baidu.android.pushservice.action.RECEIVE"?/>

?<action?android:name="com.baidu.android.pushservice.action.notification.CLICK"?/>

</intent-filter>

</receiver>

?<meta-data

?android:name="api_key"

?android:value="11hcYNN12345dUxr4DsjyvSY"?/>

</application>

</manifest>

?

2.9?導(dǎo)入?PushMessageReceiver?和?Utils?類

從PushDemo中導(dǎo)入PushMessageReceiver?和?Utils?類

編譯?報錯宇植,找到報錯位置,是因為找不到?PushDemoActivity.class埋心,將其改為自己工程的相應(yīng)的activity即可指郁。

2.10?啟動云推送代碼

在當(dāng)前工程的主Activity的onCreate函數(shù)中,添加以下代碼:

PushManager.startWork(getApplicationContext(),PushConstants.LOGIN_TYPE_API_KEY,"api_key")

其中的“API Key“需要手動修改為指定應(yīng)用的API Key拷呆。

2.11?編譯

如果編譯通過闲坎,到這里就可以真機(jī)測試了

否則看2.12是否可以幫助你疫粥。


2.12?遇到問題及解決

1)編譯時,AndroidManifest此句報紅

?<uses-permission?android:name="android.permission.WRITE_SETTINGS"?/>
解決:當(dāng)前注釋掉此句腰懂。

2)連續(xù)推送消息手機(jī)接收不到

解決:AndroidManifest增加如下權(quán)限

????? <uses-permission?android:name="android.permission.BROADCAST_STICKY"?/>

3)注意模擬器是不能測試消息接收的梗逮,必須真機(jī)測試。

4)項目編譯版本選擇請參考我的配置文件?build.gradle

apply?plugin:?'com.android.application'

android {

compileSdkVersion?28

defaultConfig {

applicationId?"com.srie.oaapp"

?minSdkVersion?19

targetSdkVersion?28

versionCode?1

versionName?"1.0"

?testInstrumentationRunner?"android.support.test.runner.AndroidJUnitRunner"

?}

buildTypes {

release {

minifyEnabled?false

?proguardFiles getDefaultProguardFile('proguard-android.txt'),?'proguard-rules.pro'

?}

}

}

dependencies {

implementation fileTree(include: ['*.jar'],?dir:?'libs')

implementation?'com.android.support:appcompat-v7:28.0.0-rc02'

?implementation?'com.android.support.constraint:constraint-layout:1.1.3'

?testImplementation?'junit:junit:4.12'

?androidTestImplementation?'com.android.support.test:runner:1.0.2'

?androidTestImplementation?'com.android.support.test.espresso:espresso-core:3.0.2'

?implementation files('libs/pushservice-5.6.0.30.jar')

}

5)api key

api key:如果手機(jī)端想要接受某個應(yīng)用(web端通過管理控制臺創(chuàng)建的)的推送绣溜,那么使用的api key必需和應(yīng)用一致慷彤。如果同一臺手機(jī)上多個應(yīng)用使用同一個apikey,只有最后一個初始化的應(yīng)用能收到推送怖喻,所以要為每一個app使用一個唯一的apikey瞬欧。

6)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罢防,一起剝皮案震驚了整個濱河市艘虎,隨后出現(xiàn)的幾起案子野建,更是在濱河造成了極大的恐慌,老刑警劉巖恬叹,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件候生,死亡現(xiàn)場離奇詭異绽昼,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)硅确,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門目溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缭付,你說我怎么就攤上這事循未。” “怎么了绣檬?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵嫂粟,是天一觀的道長。 經(jīng)常有香客問我忘蟹,道長搁凸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任褥芒,我火速辦了婚禮嫡良,結(jié)果婚禮上寝受,老公的妹妹穿的比我還像新娘。我一直安慰自己很澄,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布甩苛。 她就那樣靜靜地躺著,像睡著了一般痊土。 火紅的嫁衣襯著肌膚如雪墨林。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天赞哗,我揣著相機(jī)與錄音辆雾,去河邊找鬼度迂。 笑死,一個胖子當(dāng)著我的面吹牛惭墓,可吹牛的內(nèi)容都是我干的腊凶。 我是一名探鬼主播拴念,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼政鼠,長吁一口氣:“原來是場噩夢啊……” “哼队魏!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起官帘,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤刽虹,失蹤者是張志新(化名)和其女友劉穎呢诬,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膛虫,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡钓猬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年敞曹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抓歼,死狀恐怖谣妻,靈堂內(nèi)的尸體忽然破棺而出蹋半,到底是詐尸還是另有隱情减江,我是刑警寧澤辈灼,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布薪棒,位于F島的核電站榕莺,受9級特大地震影響棵介,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜唠雕,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一岩睁、第九天 我趴在偏房一處隱蔽的房頂上張望揣云。 院中可真熱鬧,春花似錦刘莹、人聲如沸焚刚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽碳柱。三九已至士聪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剥悟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工毁枯, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留叮称,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓赂韵,卻偏偏與公主長得像祭示,于是被迫代替她去往敵國和親谴古。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)毡代,斷路器纠炮,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • afinalAfinal是一個android的ioc恢口,orm框架 https://github.com/yangf...
    wgl0419閱讀 6,281評論 1 9
  • 今年的夏天址芯,格外炎熱,走在馬路上熱浪迎面撲來北专,讓人喘不過氣來旬陡,知了不停地在枝頭上喊著:“熱死了,熱死了……” 我對...
    我向陽而生閱讀 320評論 2 0
  • 總覺地夢里有前世的影子 輪回中 我在夢里繼續(xù)著前世的經(jīng)歷 所以才會有 刀光劍影的追逐 恩怨情仇的歷劫 山泉碧波的牽...
    草木縈心閱讀 167評論 0 3