- 作者:Mr.Egg
- 狀態(tài):完成
- 轉(zhuǎn)載請注明
關(guān)于信鴿的使用,確實(shí)遇到一些坑,文檔里沒提到的。在這里記錄一下,直接上干貨。
首先,和百度云的SDK一樣,下載,導(dǎo)入給的Lib。
注意?。。?要放在src/java下的jniLibs,因為在AS開發(fā)中.so文件放在lib中雖然編譯成功,但是運(yùn)行會提示“can not load library from so file”。這一點(diǎn)害我找bug找了好久。

項目結(jié)構(gòu)
其次修改manifest文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mregg.txpushtest">
<!-- 【必須】 信鴿SDK所需權(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_WIFI_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.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- 【可選】 信鴿SDK所需權(quán)限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
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>
<!-- 【必須】 信鴿receiver廣播接收 -->
<receiver
android:name="com.tencent.android.tpush.XGPushReceiver"
android:process=":xg_service_v2" >
<intent-filter android:priority="0x7fffffff" >
<!-- 【必須】 信鴿SDK的內(nèi)部廣播 -->
<action android:name="com.tencent.android.tpush.action.SDK" />
<action android:name="com.tencent.android.tpush.action.INTERNAL_PUSH_MESSAGE" />
<!-- 【必須】 系統(tǒng)廣播:開屏和網(wǎng)絡(luò)切換 -->
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<!-- 【可選】 一些常用的系統(tǒng)廣播,增強(qiáng)信鴿service的復(fù)活機(jī)會,請根據(jù)需要選擇。當(dāng)然,你也可以添加APP自定義的一些廣播讓啟動service -->
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
<!-- 【必須】 (2.30及以上版新增)展示通知的activity -->
<!-- 【注意】 如果被打開的activity是啟動模式為SingleTop,SingleTask或SingleInstance,請根據(jù)通知的異常自查列表第8點(diǎn)處理-->
<activity
android:name="com.tencent.android.tpush.XGPushActivity"
android:exported="false" >
<intent-filter>
<!-- 若使用AndroidStudio,請設(shè)置android:name="android.intent.action"-->
<action android:name="android.intent.action" />
</intent-filter>
</activity>
<!-- 【必須】 信鴿service -->
<service
android:name="com.tencent.android.tpush.service.XGPushService"
android:exported="true"
android:persistent="true"
android:process=":xg_service_v2" />
<!-- 【必須】 通知service,此選項有助于提高抵達(dá)率 -->
<service
android:name="com.tencent.android.tpush.rpc.XGRemoteService"
android:exported="true" >
<intent-filter>
<action android:name="YourPackage.PUSH_ACTION" />
</intent-filter>
</service>
<!-- 【必須】 請將YOUR_ACCESS_ID修改為APP的AccessId,“21”開頭的10位數(shù)字,中間沒空格 -->
<meta-data
android:name="XG_V2_ACCESS_ID"
android:value="AccessId" />
<!-- 【必須】 請將YOUR_ACCESS_KEY修改為APP的AccessKey,“A”開頭的12位字符串,中間沒空格 -->
<meta-data
android:name="XG_V2_ACCESS_KEY"
android:value="AccessKey" />
</application>
</manifest>
簡簡單單,注意把我的MainActivity注冊刪掉,接著把YourPackage替換成你項目對應(yīng)的包,然后在最后的AccessId與AccessKey替換成你注冊對應(yīng)的key即可。
最后,在MainActivity中加入就完成了這個程序。
Context context = getApplicationContext();
XGPushManager.registerPush(context);
綜上,覺得騰訊的方便,但是后臺不好看,小坑也多。百度后臺好看,要改要寫的地方也比較多。