zoukankan      html  css  js  c++  java
  • 极光推送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">

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

    GitHub:https://github.com/godfunc
    博客园:http://www.cnblogs.com/godfunc
    Copyright ©2019 Godfunc
  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/Godfunc/p/6139045.html
Copyright © 2011-2022 走看看