极光推送是我们在实际生活中使用比较多的一种推送方式,成本低廉,不少公司都是使用的他,换工作之后,当前公司还是使用的极光推送。
当前的公司需要测试环境的只能够推送测试,正式环境的只能够推送正式,应为IOS方存在可以直接通过配置至之后实现当前需求想要的要求,但是android却没有,官方提供的是通过创建两个app来实现测试对测试,正式对正式
开发环境:AS 2.1.1.应为当前项目中也包含微信分享和高德地图相关的问题,顾本人也提供了如何实现包名修改后,其他的如何实现的分享和地图查看相关:
1)极光
//极光推送
compile 'cn.jiguang.sdk:jpush:3.0.5'
// 此处以JPush 3.0.5 版本为例。
compile 'cn.jiguang.sdk:jcore:1.1.2'
// 此处以JCore 1.1.2 版本为例。
2)其他依赖包,可以更具自己的实际使用来导入相关包
此处省略1万字,具体实现请根据实际需求实现
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [
JPUSH_PKGNAME: "包名",
JPUSH_APPKEY : "release环境下的key",
GAODE_APPKEY:"release环境下高德key",
WEATCH_APPID:"relase环境下微信key",
JPUSH_CHANNEL: "developer-default",
]
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [
JPUSH_PKGNAME: "报名.debug",
JPUSH_APPKEY : "测试环境下对应的推送key",
GAODE_APPKEY:"测试环境下对应的高德地图key",
WEATCH_APPID:"测试环境下微信对应的appid",
JPUSH_CHANNEL: "developer-default",
]
}
只要做了上面的操作就可以了,我们编译之后就可以看到,我们运行平时走的debug环境,打relase的包都是relase环境。就能够区分开。
这样做的缺点也很明显,android很多平台申请都是通过packageName+keystore作为唯一标识,如上的操作,就相当于我们又两个app,顾很多情况下都需要申请两套,尤其是在项目还有支付类的时候,就会特别觉得,申请成本比较大。
能够很好的测试对应debug模式,正式对应relase模式,不会正式推送到测试来,测试的也不会推送到正式来,很好的做到了完全区分开。
这种方法也是极光官方推广的比较权威的大家认可的方法,也算是比较perfect的方法 。
在很多情况下,不少的需求会觉得这样做成本比较高,他们希望能够只申请一个应用就完成测试和正式区分开,哪怕产生一些比较明显的bug,如果你完全不care 系统推送是否推送到时正式还是测试可以通过现在我们要说的方法。这也是极光官方以及本人并不推荐的方法,程序员只是需求的实现方,这样会很明显的造成测试不便,也没有比较好的完成需求的要求效果。
一.App端已进入就区分环境并进行设置标签或者别名,开始分组
if(Contens.URL.equal(“正式环境”)){
//注册别名/标签
.....//此处省略一万字
}else if(Contens.URL.equal("测试环境")){
//注册别名/标签
.....//此处省略一万字
}
二.这步也需要后端接口人员进行接口支持,需要通过别名或者标签进行环境判断
后端实现标签/别名区分环境进行代码写入
此处省略一万字
如上这种也是可以实现测试环境和正式环境的区分,但因确定/不足明显,顾并不推荐使用,在前期公司的项目中,有使用这种方法[方法二],而最后导致正式测试系统推送混乱,并且测试的时候也不是很方便,尤其是不敢进行通过平台推送。
希望本篇文章对你有用