先注冊賬戶:
然后點擊開發者服務:點擊打開鏈接
創建應用:
隨便起個名字,但是最好和你的應用名字一樣
然后點擊下一步推送設置
把你的工程應用名字輸入:
應用包名就是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
-
-
-
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>