【注:有問題請忽略此文】
看了官網和相關博客,試了試,步驟很多、問題也很多!
此種方式有時間再試試吧,待更新。。。。。。
4、jcenter 自動集成
使用 jcenter 自動集成的開發者,不需要在項目中添加 jar 和 so,jcenter 會自動完成依賴;在 AndroidManifest.xml 中不需要添加任何 JPush SDK 相關的配置,jcenter 會自動導入。 相對於之前的手動集成方式,這種方法真的是簡單快捷,可以省去很多操作,讓你分分鐘搞定極光推送,再也不用爲以前那種大規模複製粘貼而煩惱了。參考官方說明:
https://docs.jiguang.cn/jpush/client/Android/android_guide/#jcenter
參考鏈接:
https://www.jianshu.com/p/8072e85bafaa
https://blog.csdn.net/lijueqing/article/details/80824040
參考下載的demo:
JPushExample(1143290) 【 “2、創建應用,下載極光Demo” 時下載 】
選擇“jcenter 自動集成”
4.1、配置jcenter支持
在Project 根目錄的主 gradle 中配置了jcenter支持(新建project默認配置就支持)buildscript {
repositories {
jcenter()
}
}
allprojets {
repositories {
jcenter()
}
}
4.2、gradle中添加依賴
在Moudle的gradle中添加依賴和AndroidManifest的替換變量android {
defaultConfig {
applicationId "com.xxx.xxx" //JPush上註冊的包名.
ndk {
//選擇要添加的對應cpu類型的.so庫。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 還可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId, //JPush上註冊的包名.
JPUSH_APPKEY : "你的appkey", //JPush上註冊的包名對應的appkey.
JPUSH_CHANNEL : "developer-default", //暫時填寫默認值即可.
]
}
}
dependencies {
......
compile 'cn.jiguang.sdk:jpush:3.1.3' // 此處以JPush 3.1.3 版本爲例。
compile 'cn.jiguang.sdk:jcore:1.2.1' // 此處以JCore 1.2.1 版本爲例。
......
}
版本信息,如可以參考下載的 “JPushExample(1143290)” demo文件
注 :
如果在添加以上 abiFilter 配置之後android Studio出現以下提示:
NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin
則在 Project 根目錄的gradle.properties文件中添加:
android.useDeprecatedNdk=true
這種情況基本上不會出現,只有用到NDK時纔有可能遇到
4.3、配置混淆文件
在 proguard-rules.pro 文件中加入混淆代碼-dontoptimize
-dontpreverify
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
-keep class * extends cn.jpush.android.helpers.JPushMessageReceiver { *; }
-dontwarn cn.jiguang.**
-keep class cn.jiguang.** { *; }
4.4、極光推送權限配置
根據需求添加權限<!-- Required -->
<permission
android:name="您應用的包名.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
<!-- Required -->
<uses-permission android:name="您應用的包名.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.WAKE_LOCK" />
<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.VIBRATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional. Required for location feature -->
<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" />
4.5、初始化極光推送
在自定義的Application中onCreate中調用極光推送的初始化方法public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
JPushInterface.setDebugMode(true); //正式環境時去掉此行代碼
JPushInterface.init(this);
}
}
然後在 AndroidManifest.xml 文件中關聯MyApplication
<application
android:name=".MyApplication"
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">
4.6、創建自定義的廣播接收器
自定義廣播接收器,官方Demo已給出(這裏已簡化)/**
* 自定義JPush接收器
* <p>
* 如果不定義這個 Receiver,則:
* 1) 默認用戶會打開主界面
* 2) 接收不到自定義消息
*/
public class JPushReceiver extends BroadcastReceiver {
private static final String TAG = "JIGUANG-Example";
@Override
public void onReceive(Context context, Intent intent) {
try {
Bundle bundle = intent.getExtras();
if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
//極光服務器分配的Registration Id,
String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);
} else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
//自定義消息
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
//推送通知
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
//當用戶點擊通知時的操作,打開自定義的Activity
Intent i = new Intent(context, TestActivity.class);
i.putExtras(bundle);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(i);
}
} catch (Exception e) {
}
}
}
然後在 AndroidManifest.xml 文件中聲明JPushReceiver
<receiver
android:name=".JPushReceiver"
android:enabled="true">
<intent-filter>
<!--Required 用戶註冊SDK的intent-->
<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 用戶打開自定義通知欄的intent-->
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
<!-- 接收網絡變化 連接/斷開 since 1.6.3 -->
<action android:name="cn.jpush.android.intent.CONNECTION" />
<category android:name="您應用的包名" />
</intent-filter>
</receiver>
到這裏關於極光推送的集成就已經完成了,可以在極光推送後臺發生條推送測試一下了。
6、刪除應用