1. 程式人生 > >Android 信鴿推送整合

Android 信鴿推送整合

本文是基於3.+的版本,在整合4.+的版本中,整合mid包時遇到一個問題

Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 20 declared in library [com.tencent.mid:mid:4.0.7] C:\Users\Administrator\.gradle\caches\transforms-1\files-1.1\mid-4.0.7.aar\940566913b33e9d01791f180c556560b\AndroidManifest.xml as the library might be using APIs not available in 16
	Suggestion: use a compatible library with a minSdk of at most 16,
		or increase this project's minSdk version to at least 20,
		or use tools:overrideLibrary="com.example.mid" to force usage (may lead to runtime failures)

minSdk最小為20,但是現階段4.+的手機系統版本還是有不少的,放棄是不可能的,在Manifest中配置uses-sdk也是無果,直接整合3.+也並無大礙。

建立應用

註冊登入官網,新增應用,拿到配置引數

匯入依賴

app build.gradle檔案下配置 以下內容

    android {
        ......
        defaultConfig {

            //信鴿官網上註冊的包名.注意application ID 和當前的應用包名以及 信鴿官網上註冊應用的包名必須一致。
            applicationId "你的包名" 
            ......

            ndk {
                //根據需要 自行選擇新增的對應cpu型別的.so庫。 
                abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' 
                // 還可以新增 'x86', 'x86_64', 'mips', 'mips64'
            }

            manifestPlaceholders = [

                XG_ACCESS_ID:"註冊應用的accessid",
                XG_ACCESS_KEY : "註冊應用的accesskey",
            ]
            ......
        }
        ......
    }

    dependencies {
        ......

    //信鴿3.2.5之前版本無需單獨依賴'com.tencent.jg:jg:1.1',其它三個依賴必須有。


    //信鴿3.2.6 版本
    //完整的信鴿依賴四個都必須有,如果發生依賴衝突請根據對應的依賴版本號選擇高版本的依賴。(使用jcenter自動接入請確認libs中沒有信鴿的相關jar包) 

    //信鴿jar
    compile 'com.tencent.xinge:xinge:3.2.6-release'
    //jg包
    compile'com.tencent.jg:jg:1.1'
    //wup包
    compile 'com.tencent.wup:wup:1.0.0.E-release'
    //mid包
    compile 'com.tencent.mid:mid:4.0.6-release'
    }
  • 注意,這裡是accessid,不是appid,Android端和ios端的引數配置是有區別的,後臺需要的配置引數也是不一樣的

如果遇到這個異常:

NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin.

則在 Project 根目錄的 gradle.properties 檔案中新增:

  android.useDeprecatedNdk=true

開啟debug日誌資料

XGPushConfig.enableDebug(this,true);

token註冊

XGPushManager.registerPush(this, new XGIOperateCallback() {
	@Override
	public void onSuccess(Object data, int flag) {
		//token在裝置解除安裝重灌的時候有可能會變
		Log.d("TPush", "註冊成功,裝置token為:" + data);
	}
	@Override
	public void onFail(Object data, int errCode, String msg) {
		Log.d("TPush", "註冊失敗,錯誤碼:" + errCode + ",錯誤資訊:" + msg);
	}
});

註冊成功會有列印,過濾"TPush"

設定賬號

XGPushManager.bindAccount(getApplicationContext(), "XINGE");

設定標籤

XGPushManager.setTag(this,"XINGE");
  • 到此就基本完成了,不需要配置廠商通道,8.0也是測試通過的。

廠商通道呢,拿華為來說,去華為開發聯盟 註冊、登入、新增應用一頓操作(測試需要線上測試),然後拿著華為平臺的應用引數去信鴿管理臺配置引數,然後再在程式碼中配置華為的appid、依賴、啟動華為推送、日誌等 一頓操作。

之所以不詳細介紹呢,是因為不配置廠商也可以。 其次呢,因為國內廠商的各種系統定製,搞的我們開發者適配很苦惱。 內心也是抗拒的,但是在工作中,礙於資本主義的猖狂,還是做的很開心的(狗頭)。