Android极光推送区分测试正式环境详解

前沿:

极光推送是我们在实际生活中使用比较多的一种推送方式,成本低廉,不少公司都是使用的他,换工作之后,当前公司还是使用的极光推送。

问题/需求想要效果:

当前的公司需要测试环境的只能够推送测试,正式环境的只能够推送正式,应为IOS方存在可以直接通过配置至之后实现当前需求想要的要求,但是android却没有,官方提供的是通过创建两个app来实现测试对测试,正式对正式

官方提供的解决方式:

Android极光推送区分测试正式环境详解_第1张图片

下面是具体的实现:

开发环境:AS 2.1.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 版本为例。

Android极光推送区分测试正式环境详解_第2张图片

2)其他依赖包,可以更具自己的实际使用来导入相关包

Android极光推送区分测试正式环境详解_第3张图片

2.自己通过代码实现相关的功能实现

此处省略1万字,具体实现请根据实际需求实现

3.通过配置话实现需求想要效果

  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("测试环境")){
    //注册别名/标签
    .....//此处省略一万字
  }

二.这步也需要后端接口人员进行接口支持,需要通过别名或者标签进行环境判断

后端实现标签/别名区分环境进行代码写入
此处省略一万字

如上这种也是可以实现测试环境和正式环境的区分,但因确定/不足明显,顾并不推荐使用,在前期公司的项目中,有使用这种方法[方法二],而最后导致正式测试系统推送混乱,并且测试的时候也不是很方便,尤其是不敢进行通过平台推送。

希望本篇文章对你有用

你可能感兴趣的:(android,极光推送)