0 背景
现在渠道号好像都是App必备的了,不管产品有没有对渠道进行统计,反正代码里面你要加上。类似的现象还有很多,反正就是加大了开发人员的工作量,耗费了手机的性能、流量、电量,到时候就是一个图表,还不看,更不要说根据那个图表做什么改进。不吐槽产品了,还是先看看技术上怎么实现吧。
1 设置渠道号
早期我使用的是友盟,那时候开发工具还是eclipse,是在Manifest文件中定义一个标签,如下所示:
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
最近项目中用的是growingIO,它的渠道号是通过java代码设置的:
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
GrowingIO.startWithConfiguration(this, new Configuration()
.useID()
.trackAllFragments()
.setChannel("XXX应用商店")
.setDebugMode(true) //打开调试Log;
}
}
无论是在java中还是在xml中设置渠道号关系都不大,只要在应用启动时候获取到在传给服务器就OK了。
2 多渠道的设置
每个平台的渠道号都是写死在代码中的,如果我们需要上传至多个平台,那么就需要每次更改下渠道号然后再打包,这对于我们来说无疑是非常痛苦的,当然聪明的程序员们也想了各种方法来应对。不过使用AndroidStudio就没必要那么麻烦了,AndroidStudio中的gradle脚本支持多渠道打包
- 在application节点下添加一个渠道标签
<meta-data
android:name="CHANNEL"
android:value="${CHANNEL_VALUE}" />
- 在gradle中添加渠道号,并替换${CHANNEL_VALUE}
productFlavors {
HUAWEI {}
OPPO {}
VIVO {}
XIAOMI {}
SAMSUNG {}
MEIZU {}
LETV {}
Tencent {}
QH360 {}
Baidu {}
wandoujia {}
Sogou {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
}
这样在我们生成带签名的apk时就可以选择渠道了