先注册账户:
然后点击开发者服务:点击打开链接
创建应用:
随便起个名字,但是最好和你的应用名字一样
然后点击下一步推送设置
把你的工程应用名字输入:
应用包名就是build.gradle文件里的applicationId 名字
完成之后点击下载Demo
Demo下载完成之后解压 ,压缩包
将libs文件夹里的工具jar包全部复制到你的项目中,记得编译
将文件中的jar包导入工程中的libs文件夹 并引用,
在将res文件夹直接复制到项目中的src文件夹下的main文件夹里,
它会直接补齐你工程中缺少的部分,所以不用害怕它会替换掉你的原文件
使用 android studio 的开发者,如果使用 jniLibs 文件夹导入 so 文件,则仅需将所有 cpu 类型的文件夹拷进去;如果将 so 文件添加在 module的libs 文件夹下,注意在 module 的 gradle 配置中添加一下配置:
- sourceSets {
- main {
- jniLibs.srcDirs = ['libs']
- }
- }
注意点,还有 jniLibs 空文件夹不要忘
MyApp 类(记得在清单文件中添加name)
- public class MyApp extends Application {
- public static String registrationId ;//获取 极光推送的设备唯一性标识 RegistrationID
- @Override
- public void onCreate() {
- super.onCreate();
- //极光推送
- JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志
- JPushInterface.init(this); // 初始化 JPush
- registrationId = JPushInterface.getRegistrationID(this);//获取 极光推送的设备唯一性标识 RegistrationID
- Log.e("111111registrationId", "run:--------->:" + registrationId );
- }
- }
MyReceiver
TestActivity
Logger
MyReceiver |
|
TestActivity |
|
Logger |
|
清单文件:加权限:
- <!-- Required -->
- <permission
- android:name="com.sgy.sgy_jpush.permission.JPUSH_MESSAGE"
- android:protectionLevel="signature" />
- <!-- Required 一些系统要求的权限,如访问网络等-->
- <uses-permission android:name="com.sgy.sgy_jpush.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.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.MOUNT_UNMOUNT_FILESYSTEMS" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <!-- Optional for location -->
- <uses-permission android:name="android.permission.VIBRATE" />
- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
- <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" />
- <uses-permission android:name="android.permission.GET_TASKS" />
- <!-- For test only 测试状态通知栏,需要打开的Activity -->
- <activity android:name="com.sgy.sgy_jpush.TestActivity" android:exported="false">
- <intent-filter>
- <action android:name="jpush.testAction" />
- <category android:name="jpush.testCategory" />
- </intent-filter>
- </activity>
- <!-- Rich push 核心功能 since 2.0.6-->
- <activity
- android:name="cn.jpush.android.ui.PopWinActivity"
- android:theme="@style/MyDialogStyle"
- android:exported="false">
- </activity>
- <!-- 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="com.sgy.sgy_jpush" />
- </intent-filter>
- </activity>
- <!-- Required SDK 核心功能-->
- <!-- 可配置android:process参数将PushService放在其他进程中 -->
- <service
- android:name="cn.jpush.android.service.PushService"
- android:process=":pushcore"
- 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>
- <!-- since 3.0.9 Required SDK 核心功能-->
- <provider
- android:authorities="com.sgy.sgy_jpush.DataProvider"
- android:name="cn.jpush.android.service.DataProvider"
- android:process=":pushcore"
- android:exported="false"
- />
- <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
- <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
- <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="com.sgy.sgy_jpush" />
- </intent-filter>
- </service>
- <!-- since 3.1.0 Required SDK 核心功能-->
- <provider
- android:authorities="com.sgy.sgy_jpush.DownloadProvider"
- android:name="cn.jpush.android.service.DownloadProvider"
- android:exported="true"
- />
- <!-- Required SDK核心功能-->
- <receiver
- android:name="cn.jpush.android.service.PushReceiver"
- android:enabled="true"
- android:exported="false">
- <intent-filter android:priority="1000">
- <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!--Required 显示通知栏 -->
- <category android:name="com.sgy.sgy_jpush" />
- </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核心功能-->
- <receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>
- <!-- User defined. For test only 用户自定义的广播接收器-->
- <receiver
- android:name="com.sgy.sgy_jpush.MyReceiver"
- android:exported="false"
- android:enabled="true">
- <intent-filter>
- <action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--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 用户接收SDK通知栏信息的intent-->
- <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required 用户打开自定义通知栏的intent-->
- <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->
- <category android:name="com.sgy.sgy_jpush" />
- </intent-filter>
- </receiver>
- <!-- Required . Enable it you can get statistics data with channel -->
- <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
- <meta-data android:name="JPUSH_APPKEY" android:value="da075747e2a374d552993f2a" /> <!-- </>值来自开发者平台取得的AppKey-->
然后运行一下工程:
在回到极光平台:点击打开链接
哈哈哈,然后你就可以收到推送的消息啦,是不是很简单呢!!!
最后在附上完整的AndroidManifest.xml清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sgy.sgy_jpush">
<!-- Required -->
<permission
android:name="com.sgy.sgy_jpush.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
<!-- Required 一些系统要求的权限,如访问网络等-->
<uses-permission android:name="com.sgy.sgy_jpush.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.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.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional for location -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission
android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启
debug 版本的应用在6.0 系统上 层叠窗口权限 -->
<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" />
<uses-permission android:name="android.permission.GET_TASKS" />
<application
android:name=".MyApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- For test only 测试状态通知栏,需要打开的Activity -->
<activity android:name="com.sgy.sgy_jpush.TestActivity" android:exported="false">
<intent-filter>
<action android:name="jpush.testAction" />
<category android:name="jpush.testCategory" />
</intent-filter>
</activity>
<!-- Rich push 核心功能 since 2.0.6-->
<activity
android:name="cn.jpush.android.ui.PopWinActivity"
android:theme="@style/MyDialogStyle"
android:exported="false">
</activity>
<!-- 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="com.sgy.sgy_jpush" />
</intent-filter>
</activity>
<!-- Required SDK 核心功能-->
<!-- 可配置android:process参数将PushService放在其他进程中 -->
<service
android:name="cn.jpush.android.service.PushService"
android:process=":pushcore"
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>
<!-- since 3.0.9 Required SDK 核心功能-->
<provider
android:authorities="com.sgy.sgy_jpush.DataProvider"
android:name="cn.jpush.android.service.DataProvider"
android:process=":pushcore"
android:exported="false"
/>
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
<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="com.sgy.sgy_jpush" />
</intent-filter>
</service>
<!-- since 3.1.0 Required SDK 核心功能-->
<provider
android:authorities="com.sgy.sgy_jpush.DownloadProvider"
android:name="cn.jpush.android.service.DownloadProvider"
android:exported="true"
/>
<!-- Required SDK核心功能-->
<receiver
android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true"
android:exported="false">
<intent-filter android:priority="1000">
<action
android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
<!--Required 显示通知栏 -->
<category android:name="com.sgy.sgy_jpush" />
</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核心功能-->
<receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>
<!-- User defined. For test only 用户自定义的广播接收器-->
<receiver
android:name="com.sgy.sgy_jpush.MyReceiver"
android:exported="false"
android:enabled="true">
<intent-filter>
<action android:name="cn.jpush.android.intent.REGISTRATION" /> <!--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 用户接收SDK通知栏信息的intent-->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED"
/> <!--Required 用户打开自定义通知栏的intent-->
<action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收网络变化 连接/断开 since 1.6.3 -->
<category android:name="com.sgy.sgy_jpush" />
</intent-filter>
</receiver>
<!-- Required . Enable it you can get statistics data with channel -->
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>
<meta-data android:name="JPUSH_APPKEY"
android:value="da075747e2a374d552993f2a" /> <!--
</>值来自开发者平台取得的AppKey-->
</application>
</manifest>