本文是 Android SDK 標準的集成指南文檔。android
匹配的 SDK 版本爲:r1.8.0及之後版本。api
本文隨SDK壓縮包分發。在你看到本文時,可能當前的版本與本文已經不是很適配。因此建議關注在線文檔:android-studio
極光推送(JPush)是一個端到端的推送服務,使得服務器端消息可以及時地推送到終端用戶手機上,讓開發者積極地保持與用戶的鏈接,從而提升用戶活躍度、提升應用的留存率。極光推送客戶端支持 Android, iOS 兩個平臺。瀏覽器
本 Android SDK 方便開發者基於 JPush 來快捷地爲 Android App 增長推送功能。服務器
目前SDK只支持Android 2.1或以上版本的手機系統。富媒體信息流功能則需Android3.0或以上版本的系統。網絡
若是您的項目有 libs/armeabi-v7a 這個目錄,請把 libs/armeabi-v7a下的so文件 也複製一份到這個目錄。app
根據 SDK 壓縮包裏的 AndroidManifest.xml 樣例文件,來配置應用程序項目的 AndroidManifest.xml 。eclipse
主要步驟爲:ide
AndroidManifest.xml權限配置: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Your Package" android:versionCode="100" android:versionName="1.0.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" /> <!-- Required --> <permission android:name="Your Package.permission.JPUSH_MESSAGE" android:protectionLevel="signature" /> <!-- Required --> <uses-permission android:name="You Package.permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- Optional. Required for location feature --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> 應用包名及appkey替換: <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name="Your Application"> <!-- Required --> <service android:name="cn.jpush.android.service.PushService" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="cn.jpush.android.intent.REGISTER" /> <action android:name="cn.jpush.android.intent.REPORT" /> <action android:name="cn.jpush.android.intent.PushService" /> <action android:name="cn.jpush.android.intent.PUSH_TIME" /> </intent-filter> </service> <!-- Required SDK 核心功能--> <!-- since 1.8.0 --> <service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true"> <intent-filter > <action android:name="cn.jpush.android.intent.DaemonService" /> <category android:name="Your Package"/> </intent-filter> </service> <!-- Required --> <receiver android:name="cn.jpush.android.service.PushReceiver" android:enabled="true" > <intent-filter android:priority="1000"> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <category android:name="Your Package"/> </intent-filter> <intent-filter> <action android:name="android.intent.action.USER_PRESENT" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> <!-- Optional --> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> <!-- Required SDK核心功能--> <activity android:name="cn.jpush.android.ui.PushActivity" android:configChanges="orientation|keyboardHidden" android:exported="false" > <intent-filter> <action android:name="cn.jpush.android.ui.PushActivity" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="Your Package" /> </intent-filter> </activity> <!-- Required SDK核心功能--> <service android:name="cn.jpush.android.service.DownloadService" android:enabled="true" android:exported="false" > </service> <!-- Required SDK核心功能--> <receiver android:name="cn.jpush.android.service.AlarmReceiver" /> <!-- User defined. 用戶自定義的廣播接收器--> <receiver android:name="您本身定義的Receiver" android:enabled="true"> <intent-filter> <!--Required 用戶註冊SDK的intent--> <action android:name="cn.jpush.android.intent.REGISTRATION" /> <action android:name="cn.jpush.android.intent.UNREGISTRATION" /> <!--Required 用戶接收SDK消息的intent--> <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required 用戶接收SDK通知欄信息的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required 用戶打開自定義通知欄的intent--> <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Optional 用戶接受Rich Push Javascript 回調函數的intent--> <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" /> <!-- 接收網絡變化 鏈接/斷開 since 1.6.3 --> <action android:name="cn.jpush.android.intent.CONNECTION" /> <category android:name="您應用的包名" /> </intent-filter> </receiver> <!-- Required. For publish channel feature --> <!-- JPUSH_CHANNEL 是爲了方便開發者統計APK分發渠道。--> <!-- 例如: --> <!-- 發到 Google Play 的APK能夠設置爲 google-play; --> <!-- 發到其餘市場的 APK 能夠設置爲 xxx-market。 --> <!-- 目前這個渠道統計功能的報表還未開放。--> <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/> <!-- Required. AppKey copied from Portal --> <meta-data android:name="JPUSH_APPKEY" android:value="Your AppKey"/> </application> </manifest>
權限 | 用途 |
---|---|
You Package.permission.JPUSH_MESSAGE | 官方定義的權限,容許應用接收JPUSH內部代碼發送的廣播消息。 |
RECEIVE_USER_PRESENT | 容許應用能夠接收點亮屏幕或解鎖廣播。 |
INTERNET | 容許應用能夠訪問網絡。 |
WAKE_LOCK | 容許應用在手機屏幕關閉後後臺進程仍然運行 |
READ_PHONE_STATE | 容許應用訪問手機狀態。 |
WRITE_EXTERNAL_STORAGE | 容許應用寫入外部存儲。 |
READ_EXTERNAL_STORAGE | 容許應用讀取外部存儲。 |
WRITE_SETTINGS | 容許應用讀寫系統設置項。 |
VIBRATE | 容許應用震動。 |
MOUNT_UNMOUNT_FILESYSTEMS | 容許應用掛載/卸載 外部文件系統。 |
ACCESS_NETWORK_STATE | 容許應用獲取網絡信息狀態,如當前的網絡鏈接是否有效。 |
SYSTEM_ALERT_WINDOW | 容許應用顯示系統窗口,位於顯示的頂層。 |
JPush SDK 提供的 API 接口,都主要集中在 cn.jpush.android.api.JPushInterface 類裏。函數
init 初始化SDK
public static void init(Context context)
setDebugMode 設置調試模式
// You can enable debug mode in developing state. You should close debug mode when release. public static void setDebugMode(boolean debugEnalbed)
init 只須要在應用程序啓動時調用一次該 API 便可。
如下代碼定製一個本應用程序 Application 類。須要在 AndoridManifest.xml 裏配置。請參考上面 AndroidManifest.xml 片段,或者 example 項目。
public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); JPushInterface.setDebugMode(true); JPushInterface.init(this); } }
如圖所示,客戶端啓動分爲 4 步:
JPush Demo 是極光推送隨壓縮包提供的用法示例Demo,本來適用於Eclipse工程。本教程將指導JPush用戶用最簡單的方法將極光推送Demo導入Android Studio。
參考3 分鐘快速 Demo(Android),把JPush跑起來。以後你在Eclipse包瀏覽器中有可運行的項目。
在Eclipse的workspace中,該Demo工程的文件夾中,生成了Gradle相關配置文件.
在Android Studio中,一次只能打開一個Project,它至關於Eclipse中的一個workspace。而咱們從Eclipse中導出的一個Project,則至關於Android Studio中的一個Module。
如今就能夠將極光推送Demo做爲Android Studio的Module運行在真機或虛擬機上,並調試了