保持与服务器的⻓连接,以便消息能够即时推送到达客户端
接收通知与⾃定义消息,并向开发者App传递相关信息
主要特点
客户端维持连接占⽤资源少、耗电低
SDK丰富的接⼝,可定制通知栏提⽰样式
服务器⼤容量、稳定
jpush-sdk_v2.x.y.zip 集成压缩包内容
AndroidManifest_AS_Example.xml / AndroidManifest_Eclipse_Example.xml
客户端嵌⼊SDK参考的配置⽂件。分别对应AndroidStudio和Eclipse
libs/jpush-sdk-release2.x.y.jar
SDK Java 开发包
libs/armeabi(或armeabi-v7a/arm64-v8a)/libjpush2xy.so
SDK native 开发包。分别对应arm, armv7a,armv8a(64位)的.so⽂件。
res/
集成SDK必须添加的资源⽂件
example
是个完整的Android项,通过这个演了JPush SDK的基本用法,可以来做参考。
SDK集成步骤
1、导⼊SDK开发包到你⾃⼰的应⽤程序项⺫
解压缩 jpush-sdk_v2.x.y.zip 集成压缩包
复制 libs/jpush-sdk-release2.x.y.jar 到⼯程 libs/ ⺫录下
复制 libs/armeabi(和 armeabi-v7a/arm64-v8a)/中so⽂件 到⼯程libs/下对应的CPU⺫录下
在AndroidStudio中使⽤,在build.gradle的sourceSets.main节点下指定jniLibs的路径。
sourceSets{
main {
jniLibs.srcDirs= ['libs']// <-- Set your folder here!
}
}
复制 res/drawable-hdpi 中的资源⽂件到⼯程的res/drawable-hdpi/⺫录下
复制 res/layout 中的布局⽂件到⼯程的 res/layout/ ⺫录下
2、配置AndroidManifest.xml
根据 SDK 压缩包⾥的 AndroidManifest.xml 样例⽂件,来配置应⽤程序项⺫的AndroidManifest.xml。
主要步骤为:
1. 复制备注为 "Required" 的部分
2. Eclipse的AndroidManifest中将备注为"您应⽤的包名"的部分,替换为当前应⽤程序的包名; AndroidStudio的
AndroidManifest中引⽤的是所在Module的applicationId,需在build.gradle中配置。
3. 将AppKey替换为在Portal上注册该应⽤的的Key,例如(9fed5bcb7b9b87413678c407)
Eclipse中AndoridManifest⽰例:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="您应⽤的包名"
android:versionCode="205"
android:versionName="2.0.5"
>
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" />
<!-- Required ⾃定义⽤来收发消息的相关权限 -->
<permission
android:name="您应⽤的包名.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
<!-- Required ⼀些系统要求的权限,如访问⺴络等-->
<uses-permission android:name="您应⽤的包名.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.WRITE_SETTINGS" />
<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.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<!-- Optional for location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<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" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<!-- Required SDK核⼼功能-->
<activity
android:name="cn.jpush.android.ui.PushActivity"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar"
android:exported="false">
<intent-filter>
<action android:name="cn.jpush.android.ui.PushActivity" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="您应⽤的包名" />
</intent-filter>
</activity>
<!-- Required SDK核⼼功能-->
<service
android:name="cn.jpush.android.service.DownloadService"
android:enabled="true"
android:exported="false" >
</service>
<!-- Required SDK 核⼼功能-->
<!-- option since 2.0.5 可配置android:process 参数将PushService设置为独⽴进程--
>
<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" />