新版的友盟不需要再去配置多渠道了,文檔也更簡(jiǎn)單了.友盟文檔,對(duì)著文檔引入就可以了.大體步驟如下:
- 1.在友盟新建應(yīng)用,獲取AppKey
- 集成 sdk,推薦自動(dòng)集成
maven依賴配置
在工程build.gradle配置腳本中buildscript和allprojects段中添加【友盟+】sdk 新maven倉(cāng)庫(kù)地址。如下圖。
代碼:
復(fù)制代碼到剪切板
maven { url 'https://dl.bintray.com/umsdk/release' }

maven1

maven2
在工程App 對(duì)應(yīng)build.gradle配置腳本dependencies段中添加基礎(chǔ)組件庫(kù)和統(tǒng)計(jì)SDK庫(kù)依賴:
代碼:
復(fù)制代碼到剪切板
compile 'com.umeng.umsdk:analytics:8.0.0'compile 'com.umeng.umsdk:common:2.0.0'

maven3
在Android Studio 3.1及以上版本開(kāi)發(fā)環(huán)境下,指定引用最新版本依賴寫(xiě)法”latest.integration”可能導(dǎo)致下載庫(kù)超時(shí),此時(shí)需要指定具體版本號(hào)。
- 集成配置,主要是一些權(quán)限和混淆
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
-keep class com.umeng.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
- 選擇想要集成的功能, 可以自選,下面主要集成渠道和統(tǒng)計(jì)功能
//加入渠道名稱,上傳給友盟,在 Application 里初始化
UMConfigure.init(this, "友盟 AppKey",
Utils.getUMChannelName(this), UMConfigure.DEVICE_TYPE_PHONE, "")
UMConfigure.setLogEnabled(true)
獲取渠道的方法,和渠道有關(guān),方法如下:
/**
* 獲取渠道名
*
* @param ctx 此處習(xí)慣性的設(shè)置為activity,實(shí)際上context就可以
* @return 如果沒(méi)有獲取成功,那么返回值為空
*/
public static String getUMChannelName(Context ctx) {
if (ctx == null) {
return null;
}
String channelName = null;
try {
PackageManager packageManager = ctx.getPackageManager();
if (packageManager != null) {
//注意此處為ApplicationInfo 而不是 ActivityInfo,因?yàn)橛衙嗽O(shè)置的meta-data是在application標(biāo)簽中,而不是某activity標(biāo)簽中,所以用ApplicationInfo
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo != null) {
if (applicationInfo.metaData != null) {
channelName = applicationInfo.metaData.getString("UMENG_CHANNEL");
}
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return channelName;
}
- 5.在App中每個(gè)Activity的onResume方法中調(diào)用 MobclickAgent.onResume(context),onPause方法中調(diào)用 MobclickAgent.onPause(context)。
@Override
public void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
注意:
確保在所有的Activity中都調(diào)用 MobclickAgent.onResume和onPause方法(如果是在AUTO頁(yè)面采集模式下,則需要注意,所有Activity中都不能調(diào)用MobclickAgent.onResume和onPause方法,詳見(jiàn)后續(xù)頁(yè)面采集章節(jié)),這兩個(gè)調(diào)用不會(huì)阻塞應(yīng)用程序的主線程,也不會(huì)影響應(yīng)用程序的性能。
注意:如果您的Activity之間有繼承或者控制關(guān)系,請(qǐng)不要同時(shí)在父和子Activity中重復(fù)添加nPause和nResume方法,否則會(huì)造成重復(fù)統(tǒng)計(jì),導(dǎo)致啟動(dòng)次數(shù)異常增高。(例如:使用TabHost、TabActivity、ActivityGroup時(shí))。
當(dāng)應(yīng)用在后臺(tái)運(yùn)行超過(guò)30秒(默認(rèn))再回到前臺(tái),將被認(rèn)為是兩次獨(dú)立的Session(啟動(dòng)),例如:用戶回到home,或進(jìn)入其他程序,經(jīng)過(guò)一段時(shí)間后再返回之前的應(yīng)用。即被認(rèn)為是兩個(gè)獨(dú)立的Session。
- 6.加固
配置簽名
image.png
配置多渠道,需要哪些配置哪些,統(tǒng)計(jì)平臺(tái)這里選擇友盟,渠道編號(hào)自定義
image.png
在設(shè)置中設(shè)置好輸入路徑,在應(yīng)用加固中上傳文件,就可以完成加固,最終會(huì)得到一個(gè)沒(méi)有渠道的包和其他渠道的包.所有的包都需要重新簽名才可以安裝.在工具包中簽名 APK,就完成了打多渠道包和加固,可以一次選擇一個(gè)或者多個(gè) apk 文件簽名。渠道打包這一項(xiàng),設(shè)置好多渠道,可以直接選擇渠道打包,打出來(lái)的所有包再簽名一次就可以了。
image.png
最好對(duì)著友盟文檔來(lái)配置,這樣不容易出錯(cuò).
demo


