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
  • 相关阅读:
    java 显示当前的时间
    java RandomAccessFile 向文件中写入数据,怎么样不覆盖原来的数据
    NCARG 6.2.0 安装方法
    【转】在Fedora 9下用IFC安装MM5
    Linux下GrADS的安装
    我的博客园
    nyist 2 括号配对问题
    nyist 100 1的个数
    进制(堆栈)
    进制
  • 原文地址:https://www.cnblogs.com/Godfunc/p/6139045.html
Copyright © 2011-2022 走看看