天天看點

僅需三步即可內建極光推送--指南

本文就極光推送內建做了一個簡化,僅需三步就可以快速內建極光推送。不用去看繁瑣的極光推送的說明文檔,僅僅看本文的說明步驟,三步即可內建極光推送功能。

1 僅需三步內建

第一步:配置build.gradle

在項目的app的主工程的build.gradle檔案中添加如下内容:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "Your App Id"
        ...........

        ndk {
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64'
        }

        manifestPlaceholders = [
                JPUSH_PKGNAME : defaultConfig.applicationId,
                JPUSH_APPKEY : "Your Key", //JPush 上注冊的包名對應的 Appkey.
                JPUSH_CHANNEL : "developer-default", //暫時填寫預設值即可.
        ]
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    ..........
    implementation project(':jpushlib')
}
           

第二步:引入jpushlib子產品

引入jpushlib module即可

jpushlib module下載下傳位址:請點選這裡

第三步:添加兩行代碼

class JGApplication: Application() {
    private val TAG = "JGApplication"

    override fun onCreate() {
        super.onCreate()
        JPushHelper.setJPushListener(absJPushListener)	//這一行代碼設定Jpush回調監聽
        JPushHelper.init(this, BuildConfig.DEBUG)		// 這一行代碼初始化Jpush
    }

	// 重寫抽象類AbstractJPushListener的相關方法即可,按需重載方法即可
	private val absJPushListener = object : AbstractJPushListener() {
       override fun onNotificationSettingsCheck(context: Context?, isOn: Boolean, i: Int) {
            super.onNotificationSettingsCheck(context, isOn, i)
            Log.i(TAG, "手機APP通知開關的回調-》  isOn:$isOn, i:$i")
        }
  
        override fun onConnected(context: Context?, b: Boolean) {
            super.onConnected(context, b)
            Log.i(TAG, "長連接配接狀态回調:$b")
        }
    }
}
           

這一步僅需在application類的onCreate方法中設定JPushHelper類的初始化工作。

以上兩行代碼即可。

這兩行代碼順序不要變動。先設定監聽回調接口,再初始化即可通過監聽擷取回調狀态通知。當然監聽回調非必須的,可不設定或設定為空。

通過以上三步即可完成極光推送的內建。

2 檢驗內建是否成功

經過上面三步內建指南之後,啟動APP,檢視日志:

僅需三步即可內建極光推送--指南

如果日志顯示這樣的狀态,即表明JPush內建成功,并且長連接配接已經建立,可接收發送的推送通知

3 Demo效果

經過上面三步的操作之後,即可調用JPushHelper類的相關方法設定JPush推送相關的方法。

以上三步的內建效果,我做了一個Demo,具體位址: 請點選這裡

Demo效果如下:

僅需三步即可內建極光推送--指南
僅需三步即可內建極光推送--指南

UI界面中使用到的方法均是JPushHelper類提供的方法,直接使用即可。

點選按鈕,日志列印如下:

僅需三步即可內建極光推送--指南

使用者别名API日志:

僅需三步即可內建極光推送--指南

使用者标簽API日志:

僅需三步即可內建極光推送--指南

4 jpushlib子產品JPushHelper類說明

該類是jpushlib子產品的核心,是app中使用極光推送庫的橋梁,通過該類即可設定極光推送的所有相關方法。

具體該類提供的方法接口如下:

//初始化
public static void init(Context context, boolean isDebug)
//清理
public static void cleanJPushListener()

// ===========================================極光推送API
//停止推送
public static void stopPush()
//恢複推送服務
public static void resumePush()
//用來檢查 Push Service 是否已經被停止
public static boolean isPushStoped()
// 擷取目前連接配接狀态
public static boolean getConnectionState()
//動态配置 channel,優先級比 AndroidManifest 裡配置的高
public static void setChannel(String channel)
//允許推送的開始時間與結束時間
public static void setPushTime(Set<Integer> weekDays, int startHour, int endHour)
//調用此 API 來設定靜音時段。如果在該時間段内收到消息,則:不會有鈴聲和震動
public static void setSilenceTime(int startHour, int startMinute,
									 int endHour, int endMinute)
//在 Android 6.0 及以上的系統上,需要去請求一些用到的權限,
//JPush SDK 用到的一些需要請求如下權限
public static void requestPermission(Activity activity)
//JPush SDK 開啟和關閉省電模式,預設為關閉
public static void setPowerSaveMode(Activity activity, boolean enable)
//調用此 API 設定手機号碼
public static void setMobileNumber(int sequence, String mobileNumber)
//調用此 API 來取得應用程式對應的 RegistrationID。
public static String getRegistrationID()

// ===========================================别名相關API
//調用此 API 來設定别名。
public static void setAlias(int sequence, String alias)
//調用此 API 來删除别名。
public static void deleteAlias(int sequence) 
//調用此 API 來查詢别名
public static void getAlias(int sequence)


// ===========================================标簽相關API
//設定 tags 時,如果其中一個 tag 無效,則整個設定過程失敗,可過濾無效的tag
public static Set<String> filterValidTags(Set<String> tags)
//調用此 API 來設定标簽 
//需要了解的是,這個接口是覆寫邏輯,而不是增量邏輯。即新的調用會覆寫之前的設定
public static void setTags(int sequence, Set<String> tags)
//調用此 API 來新增标簽
public static void addTags(int sequence, Set<String> tags)
//調用此 API 來删除指定标簽
public static void deleteTags(int sequence, Set<String> tags)
//調用此 API 來清除所有标簽
public static void cleanTags(int sequence)
//調用此 API 來查詢所有标簽
public static void getAllTags(int sequence) 
//調用此 API 來查詢指定 tag 與目前使用者綁定的狀态
public static void checkTagBindState(int sequence, String tag)


// ===========================================通知相關API
//此 API 提供清除通知的功能,包括:清除所有 JPush 展現的通知(不包括非 JPush SDK 展現的)
public static void clearAllNotifications()
//清除指定某個通知
public static void clearNotificationById(int notificationId)
//當使用者需要定制預設的通知欄樣式時,則可調用此方法
public static void setDefaultPushNotificationBuilder(DefaultPushNotificationBuilder builder)
//當開發者需要為不同的通知,指定不同的通知欄樣式(行為)時,則需要調用此方法設定多個通知欄建構類
public static void setPushNotificationBuilder(Integer notificationBuilderId,
                                                  BasicPushNotificationBuilder builder)
//限制保留的通知條數。預設為保留最近 5 條通知
public static void setLatestNotificationNumber(int maxNum)


// ===========================================崩潰API
//關閉 CrashLog 上報
public static void stopCrashHandler()
//開啟 CrashLog 上報
public static void initCrashHandler()

// ===========================================本地通知API
//本地通知 API 不依賴于網絡,無網條件下依舊可以觸發
public static void addLocalNotification(JPushLocalNotification notification)
//移除指定的本地通知
public static void removeLocalNotification(long notificationId)
//移除所有的本地通知,注意notificationId為0或者負數時通知無法移除
public static void clearLocalNotifications()

// ===========================================地理圍欄功能API
//設定地理圍欄監控周期,最小3分鐘,最大1天。預設為15分鐘,
public static void setGeofenceInterval(long interval) 
//設定最多允許儲存的地理圍欄數量,超過最大限制後,
//如果繼續建立先删除最早建立的地理圍欄。預設數量為10個,允許設定最小1個,最大100個。
public static void setMaxGeofenceNumber(int maxNumber)
//删除指定id的地理圍欄
public static void deleteGeofence(String geofenceid)


//設定角标數字(目前僅支援華為手機)
public static void setBadgeNumber(int num)


// ===========================================手機APP通知開關API
//檢查目前應用的通知開關是否開啟
//傳回結果:1表示開啟,0表示關閉,-1表示檢測失敗
public static int isNotificationEnabled()
//跳轉手機的應用通知設定頁,可由使用者操作開啟通知開關
public static void goToAppNotificationSettings() 

// ===========================================統計分析API
public static void onResume(final Activity activity) 
public static void onPause(final Activity activity)

// ===========================================設定監聽器
public static void setJPushListener(AbstractJPushListener listener)
public static void cleanJPushListener()
           

以上JPushHelper接口完全可以滿足開發者引入極光推送的全部功能。無需再去看Jpush極光推送的文檔,僅僅引入我這裡提供的jpushlib子產品即可。

5 jpushlib子產品AbstractJPushListener類回調監聽說明

public abstract class AbstractJPushListener {

    public Notification getNotification(Context context,
    					 NotificationMessage notificationMessage,
    					 Notification notification) {
        return notification;
    }

    /**
     * 收到自定義消息回調
     *
     * @param context Context
     * @param customMessage 接收自定義消息内容
     */
    public void onMessage(Context context, CustomMessage customMessage) {

    }

    /**
     * 點選通知回調
     *
     * @param context Context
     * @param notificationMessage 點選的通知内容
     */
    public void onNotifyMessageOpened(Context context,
    				NotificationMessage notificationMessage) {

    }

    /**
     * 收到通知回調
     *
     * @param context Context
     * @param notificationMessage 接收到的通知内容
     */
    public void onNotifyMessageArrived(Context context,
    							NotificationMessage notificationMessage) {

    }

    /**
     * 清除通知回調
     *
     * 說明:
     *
     * 1.同時删除多條通知,可能不會多次觸發清除通知的回調
     *
     * 2.隻有使用者手動清除才有回調,調接口清除不會有回調
     *
     * @param context Context
     * @param notificationMessage 清除的通知内容
     */
    public void onNotifyMessageDismiss(Context context,
    					NotificationMessage notificationMessage) {

    }

    /**
     * 注冊成功回調
     *
     * @param context Context
     * @param s  注冊id
     */
    public void onRegister(Context context, String s) {

    }

    /**
     * 長連接配接狀态回調
     *
     * @param context Context
     * @param b 長連接配接狀态
     */
    public void onConnected(Context context, boolean b) {

    }

    /**
     * 注冊失敗回調
     *
     * @param context Context
     * @param cmdMessage 錯誤資訊
     */
    public void onCommandResult(Context context, CmdMessage cmdMessage) {

    }

    /**
     * 通知的MultiAction回調
     *
     * @param context Context
     * @param intent 點選後觸發的Intent
     *
     *  說明 注意這個方法裡面禁止再調super.onMultiActionClicked,因為會導緻邏輯混亂
     */
    public void onMultiActionClicked(Context context, Intent intent) {

    }

    /**
     * 通知開關的回調
     *
     * 該方法會在以下情況觸發時回調。
     *
     * 1.sdk每次啟動後都會檢查通知開關狀态并通過該方法回調給開發者。
     *
     * 2.當sdk檢查到通知狀态變更時會通過該方法回調給開發者。
     *
     * @param context Context
     * @param isOn 通知開關狀态
     * @param i 觸發場景,0為sdk啟動,1為檢測到通知開關狀态變更
     */
    public void onNotificationSettingsCheck(Context context, boolean isOn, int i) {

    }

    /**
     * tag 增删查改的操作會在此方法中回調結果
     *
     * @param context Context
     * @param jPushMessage tag 相關操作傳回的消息結果體
     */
    public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {

    }

    /**
     * 查詢某個 tag 與目前使用者的綁定狀态的操作會在此方法中回調結果
     *
     * @param context Context
     * @param jPushMessage check tag 與目前使用者綁定狀态的操作傳回的消息結果體,
     * 具體參考 JPushMessage 類的說明
     */
    public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {

    }

    /**
     * alias 相關的操作會在此方法中回調結果
     *
     * @param context Context
     * @param jPushMessage alias 相關操作傳回的消息結果體
     */
    public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {

    }

    /**
     * 設定手機号碼會在此方法中回調結果
     *
     * @param context Context
     * @param jPushMessage 設定手機号碼傳回的消息結果體
     */
    public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {

    }

    /**
     * 應用被拉起時回調 onWake(Context context, int wakeType) 方法,
     * context 是上下文,wakeType 是拉起的類型,其取值對應的拉起方式如下:
     * wakeType值	拉起方式
     * 1	START_SERVICE
     * 2	BIND_SERVICE
     * 4	CONTENTPROVIDER
     */
    public void onWake(Context context, int wakeType) {

    }
}
           

該類是一個抽象類,在文章開始位置,重寫了其部分方法,通過回調監聽部分方法,按需要重載其方法即可。

6 源碼下載下傳

源代碼位址,請點選這裡

歡迎關注公衆号:技術印象

僅需三步即可內建極光推送--指南