推送,用極光,大家都說好,哈哈.
進入正題:
1.確認android studio的 Project 根目錄的主 gradle 中配置了jcenter支持。(基本上現在都已經支持了,循例說一下) ,就是這個
2.在 module 的 gradle 中添加依賴和AndroidManifest的替換變量(建議先插入依賴包,再插入另外的ndk和manifestPlaceholders )
android { ...... defaultConfig { applicationId "com.xxx.xxx" //JPush上注冊的包名. ...... ndk { //選擇要添加的對應cpu類型的.so庫。 abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a' // 還可以添加 'x86', 'x86_64', 'mips', 'mips64' } manifestPlaceholders = [ JPUSH_PKGNAME : applicationId, JPUSH_APPKEY : "你的appkey", //JPush上注冊的包名對應的appkey. JPUSH_CHANNEL : "developer-default", //暫時填寫默認值即可. ] ...... } ...... } dependencies { ...... compile 'cn.jiguang.sdk:jpush:3.0.0' // 此處以JPush 3.0.0 版本為例。 compile 'cn.jiguang.sdk:jcore:1.0.0' // 此處以JCore 1.0.0 版本為例。 ...... }
3.基本不會出現,這個是ndk(調用c或者c++語言的方法的轉換器)版本太舊就導致的
注 : 如果在添加以上 abiFilter 配置之后android Studio出現以下提示: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. 則在 Project 根目錄的gradle.properties文件中添加: android.useDeprecatedNdk=true
4.請在工程的混淆文件中添加以下配置:
看清楚文件位置和需要添加的東西
-dontoptimize -dontpreverify -dontwarn cn.jpush.** -keep class cn.jpush.** { *; } -dontwarn cn.jiguang.** -keep class cn.jiguang.** { *; }
5.最重要的來了,如果app已經有了application類(啟動應用執行的第一個類,在里面做很多前期准備的),就在里面寫入極光推送的初始化代碼,如果沒有的就自己寫一個類繼承Application(下面以自己寫的為例子)
package com.example.lym.jiguangtest; import android.app.Application; import cn.jpush.android.api.JPushInterface; /** * Created by lym on 2016/12/22. */ public class TryJiGuang extends Application { @Override public void onCreate() { super.onCreate(); JPushInterface.setDebugMode(true); JPushInterface.init(this); } }
然后要在manifest文件里面對該類進行聲明,到這里准備工作基本完成,可以開始測試了
6.運行app之后,看studio的log日志
測試確認 確認所需的權限都已經添加。如果必須的權限未添加,日志會提示錯誤。 確認 AppKey(在Portal上生成的)已經正確的寫入 Androidmanifest.xml 。 確認在程序啟動時候調用了init(context) 接口 確認測試手機(或者模擬器)已成功連入網絡 + 客戶端調用 init 后不久,如果一切正常,應有登錄成功的日志信息 啟動應用程序,在 Portal 上向應用程序發送自定義消息或者通知欄提示。詳情請參考管理Portal。 在幾秒內,客戶端應可收到下發的通知或者正定義消息,如果 SDK 工作正常,則日志信息會如下: [JPushInterface] action:init ....... [PushService] Login succeed! 如圖所示,客戶端啟動分為 4 步: 檢查 metadata 的 appKey 和 channel ,如果不存在,則啟動失敗 初始化 JPush SDK,檢查 JNI 等庫文件的有效性,如果庫文件無效,則啟動失敗 檢查 Androidmanifest.xml,如果有 Required 的權限不存在,則啟動失敗 連接服務器登錄,如果存在網絡問題,則登陸失敗,或者前面三步有問題,不會啟動JPush SDK