极光推送JPush的快速集成

首先到极光推送的官网上创建一个应用,填写对应的应用名和包名。

 

 

创建好之后下载Demo

 

提取Sdk里面的图片和xml等资源文件放自己项目的相应位置,然后要注意的是.so文件的放置位置:

在main目录下新建一个jniLibs文件夹,放在这个文件夹下。

 

 

 

提取Demo里面的AndroidManifest.xml文件,下面是提取的AndroidManifest.xml文件:

  1 <?xml version="1.0" encoding="utf-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3     package="com.coderwei.pushdemo"   
  4     android:versionCode="300"
  5     android:versionName="3.0.0"
  6     >
  7     <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="21" />
  8 
  9     <!-- Required -->
 10     <permission
 11         android:name="com.coderwei.pushdemo.permission.JPUSH_MESSAGE"
 12         android:protectionLevel="signature" />
 13   
 14     <!-- Required  一些系统要求的权限,如访问网络等-->
 15     <uses-permission android:name="com.coderwei.pushdemo.permission.JPUSH_MESSAGE" />
 16     <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
 17     <uses-permission android:name="android.permission.INTERNET" />
 18     <uses-permission android:name="android.permission.WAKE_LOCK" />
 19     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 20     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 21     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 22     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
 23     <uses-permission android:name="android.permission.VIBRATE" />
 24     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
 25     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 26     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 27 
 28     
 29     
 30     <!-- Optional for location -->
 31     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
 32     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 33     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
 34     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 35     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
 36     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
 37     <uses-permission android:name="android.permission.GET_TASKS" />
 38     
 39     <application
 40         android:icon="@drawable/ic_launcher"
 41         android:label="@string/app_name"
 42         android:name="com.example.jpushdemo.ExampleApplication">
 43 
 44         <!-- For test only 测试的主程序-->
 45         <activity
 46             android:name="com.example.jpushdemo.MainActivity"
 47             android:label="@string/app_name" >
 48             <intent-filter>
 49                 <action android:name="android.intent.action.MAIN" />
 50                 <category android:name="android.intent.category.LAUNCHER" />
 51             </intent-filter>
 52         </activity>
 53        <!-- For test only 测试高级功能 -->
 54        <activity android:name="com.example.jpushdemo.PushSetActivity" android:label="@string/app_name"></activity>
 55         <!-- For test only 测试设置 -->
 56        <activity android:name="com.example.jpushdemo.SettingActivity" android:label="@string/app_name"></activity>
 57         <!-- For test only 测试状态通知栏,需要打开的Activity -->
 58         <activity android:name="com.example.jpushdemo.TestActivity" android:exported="false">
 59             <intent-filter>
 60                 <action android:name="jpush.testAction" />
 61                 <category android:name="jpush.testCategory" />
 62             </intent-filter>
 63         </activity>
 64 
 65         <!-- Rich push 核心功能 since 2.0.6-->
 66         <activity
 67             android:name="cn.jpush.android.ui.PopWinActivity"
 68             android:theme="@style/MyDialogStyle"
 69             android:exported="false">
 70         </activity>
 71 
 72         <!-- Required SDK核心功能-->
 73         <activity
 74             android:name="cn.jpush.android.ui.PushActivity"
 75             android:configChanges="orientation|keyboardHidden"
 76             android:theme="@android:style/Theme.NoTitleBar"
 77             android:exported="false">
 78             <intent-filter>
 79                 <action android:name="cn.jpush.android.ui.PushActivity" />
 80                 <category android:name="android.intent.category.DEFAULT" />
 81                 <category android:name="com.coderwei.pushdemo" />
 82             </intent-filter>
 83         </activity>
 84         <!-- Required  SDK核心功能-->
 85         <service
 86             android:name="cn.jpush.android.service.DownloadService"
 87             android:enabled="true"
 88             android:exported="false" >
 89         </service>
 90 
 91         <!-- Required SDK 核心功能-->
 92         <!-- 可配置android:process参数将PushService放在其他进程中 -->
 93         <service
 94             android:name="cn.jpush.android.service.PushService"
 95             android:process=":mult">
 96             <intent-filter>
 97                 <action android:name="cn.jpush.android.intent.REGISTER" />
 98                 <action android:name="cn.jpush.android.intent.REPORT" />
 99                 <action android:name="cn.jpush.android.intent.PushService" />
100                 <action android:name="cn.jpush.android.intent.PUSH_TIME" />
101             </intent-filter>
102         </service>
103 
104         <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
105         <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
106         <service
107             android:name="cn.jpush.android.service.DaemonService"
108             android:enabled="true"
109             android:exported="true">
110             <intent-filter>
111                 <action android:name="cn.jpush.android.intent.DaemonService" />
112                 <category android:name="com.coderwei.pushdemo" />
113             </intent-filter>
114 
115         </service>
116 
117         <!-- Required SDK核心功能-->
118         <receiver
119             android:name="cn.jpush.android.service.PushReceiver"
120             android:enabled="true">
121             <intent-filter android:priority="1000">
122                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />   <!--Required  显示通知栏 -->
123                 <category android:name="com.coderwei.pushdemo" />
124             </intent-filter>
125             <intent-filter>
126                 <action android:name="android.intent.action.USER_PRESENT" />
127                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
128             </intent-filter>
129             <!-- Optional -->
130             <intent-filter>
131                 <action android:name="android.intent.action.PACKAGE_ADDED" />
132                 <action android:name="android.intent.action.PACKAGE_REMOVED" />
133 
134                 <data android:scheme="package" />
135             </intent-filter>
136         </receiver>
137 
138         <!-- Required SDK核心功能-->
139         <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>
140 
141         <!-- User defined.  For test only  用户自定义的广播接收器-->
142         <receiver
143             android:name="com.example.jpushdemo.MyReceiver"
144             android:exported="false"
145             android:enabled="true">
146             <intent-filter>
147                 <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required  用户注册SDK的intent-->
148                 <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required  用户接收SDK消息的intent-->
149                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required  用户接收SDK通知栏信息的intent-->
150                 <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required  用户打开自定义通知栏的intent-->
151                 <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->
152                 <category android:name="com.coderwei.pushdemo" />
153             </intent-filter>
154         </receiver>
155 
156         <!-- Required  . Enable it you can get statistics data with channel -->
157         <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
158         <meta-data android:name="JPUSH_APPKEY" android:value="cf8a2ff321f582cbfcb55056" /> <!--  </>值来自开发者平台取得的AppKey-->
159 
160     </application>
161 </manifest>

 

下面是自己写的项目的AndroidManifest.xml文件:

  1 <?xml version="1.0" encoding="utf-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3     package="com.coderwei.pushdemo">
  4 
  5     <permission
  6         android:name="com.coderwei.pushdemo.permission.JPUSH_MESSAGE"
  7         android:protectionLevel="signature" />
  8 
  9     <!-- Required  一些系统要求的权限,如访问网络等-->
 10     <uses-permission android:name="com.coderwei.pushdemo.permission.JPUSH_MESSAGE" />
 11     <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
 12     <uses-permission android:name="android.permission.INTERNET" />
 13     <uses-permission android:name="android.permission.WAKE_LOCK" />
 14     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 15     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 16     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 17     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
 18     <uses-permission android:name="android.permission.VIBRATE" />
 19     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
 20     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 21     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
 22 
 23 
 24 
 25     <!-- Optional for location -->
 26     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
 27     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 28     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
 29     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 30     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
 31     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
 32     <uses-permission android:name="android.permission.GET_TASKS" />
 33 
 34     <application
 35         android:allowBackup="true"
 36         android:icon="@mipmap/ic_launcher"
 37         android:label="@string/app_name"
 38         android:supportsRtl="true"
 39         android:name=".MyApplication"
 40         android:theme="@style/AppTheme">
 41         <activity android:name=".MainActivity">
 42             <intent-filter>
 43                 <action android:name="android.intent.action.MAIN" />
 44 
 45                 <category android:name="android.intent.category.LAUNCHER" />
 46             </intent-filter>
 47         </activity>
 48 
 49        <activity
 50             android:name="com.example.jpushdemo.MainActivity"
 51             android:label="@string/app_name" >
 52             <intent-filter>
 53                 <action android:name="android.intent.action.MAIN" />
 54                 <category android:name="android.intent.category.LAUNCHER" />
 55             </intent-filter>
 56         </activity>
 57         <!-- For test only 测试高级功能 -->
 58         <activity android:name="com.example.jpushdemo.PushSetActivity" android:label="@string/app_name"></activity>
 59         <!-- For test only 测试设置 -->
 60         <activity android:name="com.example.jpushdemo.SettingActivity" android:label="@string/app_name"></activity>
 61         <!-- For test only 测试状态通知栏,需要打开的Activity -->
 62         <activity android:name="com.example.jpushdemo.TestActivity" android:exported="false">
 63             <intent-filter>
 64                 <action android:name="jpush.testAction" />
 65                 <category android:name="jpush.testCategory" />
 66             </intent-filter>
 67         </activity>
 68 
 69         <!-- Rich push 核心功能 since 2.0.6-->
 70         <activity
 71             android:name="cn.jpush.android.ui.PopWinActivity"
 72             android:theme="@style/MyDialogStyle"
 73             android:exported="false">
 74         </activity>
 75 
 76         <!-- Required SDK核心功能-->
 77         <activity
 78             android:name="cn.jpush.android.ui.PushActivity"
 79             android:configChanges="orientation|keyboardHidden"
 80             android:theme="@android:style/Theme.NoTitleBar"
 81             android:exported="false">
 82             <intent-filter>
 83                 <action android:name="cn.jpush.android.ui.PushActivity" />
 84                 <category android:name="android.intent.category.DEFAULT" />
 85                 <category android:name="com.coderwei.pushdemo" />
 86             </intent-filter>
 87         </activity>
 88         <!-- Required  SDK核心功能-->
 89         <service
 90             android:name="cn.jpush.android.service.DownloadService"
 91             android:enabled="true"
 92             android:exported="false" >
 93         </service>
 94 
 95         <!-- Required SDK 核心功能-->
 96         <!-- 可配置android:process参数将PushService放在其他进程中 -->
 97         <service
 98             android:name="cn.jpush.android.service.PushService"
 99             android:process=":mult">
100             <intent-filter>
101                 <action android:name="cn.jpush.android.intent.REGISTER" />
102                 <action android:name="cn.jpush.android.intent.REPORT" />
103                 <action android:name="cn.jpush.android.intent.PushService" />
104                 <action android:name="cn.jpush.android.intent.PUSH_TIME" />
105             </intent-filter>
106         </service>
107 
108         <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
109         <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
110         <service
111             android:name="cn.jpush.android.service.DaemonService"
112             android:enabled="true"
113             android:exported="true">
114             <intent-filter>
115                 <action android:name="cn.jpush.android.intent.DaemonService" />
116                 <category android:name="com.coderwei.pushdemo" />
117             </intent-filter>
118 
119         </service>
120 
121         <!-- Required SDK核心功能-->
122         <receiver
123             android:name="cn.jpush.android.service.PushReceiver"
124             android:enabled="true">
125             <intent-filter android:priority="1000">
126                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />   <!--Required  显示通知栏 -->
127                 <category android:name="com.coderwei.pushdemo" />
128             </intent-filter>
129             <intent-filter>
130                 <action android:name="android.intent.action.USER_PRESENT" />
131                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
132             </intent-filter>
133             <!-- Optional -->
134             <intent-filter>
135                 <action android:name="android.intent.action.PACKAGE_ADDED" />
136                 <action android:name="android.intent.action.PACKAGE_REMOVED" />
137 
138                 <data android:scheme="package" />
139             </intent-filter>
140         </receiver>
141 
142         <!-- Required SDK核心功能-->
143         <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>
144 
145         <!-- User defined.  For test only  用户自定义的广播接收器-->
146         <receiver
147             android:name="PushReceiver"
148             android:exported="false"
149             android:enabled="true">
150             <intent-filter>
151                 <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--Required  用户注册SDK的intent-->
152                 <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" /> <!--Required  用户接收SDK消息的intent-->
153                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" /> <!--Required  用户接收SDK通知栏信息的intent-->
154                 <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required  用户打开自定义通知栏的intent-->
155                 <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->
156                 <category android:name="com.coderwei.pushdemo" />
157             </intent-filter>
158         </receiver>
159 
160         <!-- Required  . Enable it you can get statistics data with channel -->
161         <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
162         <meta-data android:name="JPUSH_APPKEY" android:value="cf8a2ff321f582cbfcb55056" /> <!--  </>值来自开发者平台取得的AppKey-->
163     </application>
164 
165 </manifest>

对比两个文件就很清楚了,下载的Demo中的AndroidManifest.xml文件(去头去尾)全部拷到自己项目的AndroidManifest.xml文件中,然后自己写一个Application :

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);
    }
}

然后就在application节点下写上:

android:name=".MyApplication"
1 <application
2         android:allowBackup="true"
3         android:icon="@mipmap/ic_launcher"
4         android:label="@string/app_name"
5         android:supportsRtl="true"
6         android:name=".MyApplication"
7         android:theme="@style/AppTheme">

 

这样就可以了,一个简单的推送就可以实现了。

 

posted @ 2016-12-06 20:41  Godfunc  阅读(996)  评论(0编辑  收藏  举报