我们 Android 开发者在使用极光推送时可能会发现,在通过官方控制台进行推送时。只有 iOS 区分了开发和生产环境,而 Android 则没有。但实际开发中又确实经常需要针对开发和生产环境分别来推送,这里就讲解下 JPush 如何实现 Android 应用的不同环境推送。

首先,我们在极光推送官网控制台中创建两个应用,一个用于生产环境,一个用于开发环境。就像这样:

这里推荐开发环境的包名为生产环境的包名加上 .debug 后缀。即包名分别类似于:

  • release: com.jpush.test
  • debug: com.jpush.test.debug

这样我们就得到了两个 AppKey,之后来设置下应用的 AndroidManifest.xml,在填写 JPUSH_APPKEY 的地方这样写:

<meta-data
android:name="JPUSH_APPKEY"
android:value="${JPUSH_APPKEY_VALUE}"/>

将和 JPush 相关的配置中的您应用的包名替换为 ${PACKAGE_NAME}

然后再设置应用的 build.gradle 文件:

buildTypes {
release {
...
manifestPlaceholders = [JPUSH_APPKEY_VALUE: "生产环境应用的 APP_KEY",
PACKAGE_NAME : "com.jpush.test"]
}
debug {
...
applicationIdSuffix ".debug"
manifestPlaceholders = [JPUSH_APPKEY_VALUE: "开发环境应用的 APP_KEY",
PACKAGE_NAME : "com.jpush.test.debug"]
}
}

到这里就已经大功告成了,通过 Android Studio 直接运行或打包时 Build Type 选择为 debug 生成的应用便是开发环境。而在打包时 Build Type 选择为 release 生成的应用则为生产环境,即正式环境

为什么可以这样做?原因就在于 Android 应用的包名其实是由 build.gradle 中的 applicationId 决定的。applicationId 和 AndroidManifest.xml 中 package 具体有什么不同,可以看看这篇文章:

Android Package Name vs. Application ID

作者:Hevin - 极光

原文:JPush Android 推送如何区分开发、生产环境

知乎专栏:极光日报

JPush Android 推送如何区分开发、生产环境的更多相关文章

  1. Android开发之第三方推送JPush极光推送知识点详解 学会集成第三方SDK推送

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 下面是一些知识点介绍,后期将会带领大家进行代码实战: 一.Android实现推送方式解决方案: 1.推 ...

  2. 使用JPush(极光推送)实现远程通知

    使用JPush(极光推送)实现远程通知 远程推送是APP 必备的功能, 现在第三方的 SDK 已经做的非常完备了, 在 iOS10.0出来之后, 极光推送也及时更新了他的 SDK, 今天小试了一下效果 ...

  3. Android推送方案

    一. 常见的推送原理: 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等.而且你还要考虑轮询的频率,如果太慢可能 ...

  4. android推送方式

    本文介绍在Android中实现推送方式的基础知识及相关解决方案.推送功能在手机开发中应用的场景是越来起来了,不说别的,就我们手机上的新闻客户端就时不j时的推送过来新的消息,很方便的阅读最新的新闻信息. ...

  5. Mosquitto搭建Android推送服务(一)MQTT简介

    总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...

  6. atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99

    atitit.web 推送实现方案集合(2)---百度云,jpush 极光推送 ,个推的选型比较.o99 1.1. 云推送有推送次数或频率的限制吗? 1 1.2. 推送的消息长度 1 1.3. 离线消 ...

  7. Android推送通知指南

      Android推送通知指南 在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是 ...

  8. Jpush极光推送的一些心得

    在集成极光推送的时候,test完全正常.部署到服务器后只发送一条推送之后推送不继续发送.经排查: 2018-06-28 10:24:26.394 [ThreadPoolTaskExecutor-4] ...

  9. Android推送分析

     cpu多核利用能够实现Android推送的吞吐量. 讲明白这点,我们需要了解Android推送的基本原理了.如果实现C(客户端)与server(客户端)实时通讯了.这里有两种思路了: 1.一种是定时 ...

随机推荐

  1. Nginx源码完全注释(4)ngx_queue.h / ngx_queue.c

    队列头文件ngx_queue.h #include <ngx_config.h> #include <ngx_core.h> #ifndef _NGX_QUEUE_H_INCL ...

  2. nginx源码完全注释(1)ngx_alloc.h / ngx_alloc.c

    首先看 ngx_alloc.h 文件,主要声明或宏定义了 ngx_alloc,ngx_calloc,ngx_memalign,ngx_free. /* * Copyright (C) Igor Sys ...

  3. th:onclik()传参问题(前端使用了bootstrap)

    网上大多帖子是这么写的 onclick调javascript函数时,不能直接使用onclick=“editUser(${prod.id})”,这样会报错,需要修改成如下的格式. <a href= ...

  4. 657. Judge Route Circle机器人能否返回

    [抄题]: Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this r ...

  5. 从HiveQL到MapReduce job过程简析

    一.简述 HiveQL是一种声明式语言,用户提交查询,而Hive会将其转换成MapReduce job,如下图.一般来说大部分时间可以无视这个执行过程的内部逻辑,但是如果能了解这些底层实现细节,在调优 ...

  6. Java 面试知识点汇总

    OOP:(Object Oriented Programming )面向对象编程 重用性.灵活性和扩展性 高内聚.低耦合 面向过程编程与面向对象编程的区别:举例,自己做饭吃与去饭馆吃,去饭馆只需要知道 ...

  7. ubuntu14.04安装chromium以及flash插件

    之前找了好几个方法都不还用,今天突然发现,还挺简单的.命令如下: sudo apt-get updatesudo apt-get install chromium-browser#sudo add-a ...

  8. Javascript 浅拷贝与深拷贝

    在了解JS的浅拷贝与深拷贝之前,我们需要先知道什么是值传递与引用传递. 在JS中,基本类型值的拷贝是按值传递的,而引用类型值的拷贝则是按引用传递的.通过值传递的变量间不会有任何牵连,互相独立:但是引用 ...

  9. [C++] Template Function _ Any number of parameters

    Template Function _ Any number of parameters #include<iostream> #include<cstdarg> using ...

  10. AspnetBoilerplate (ABP) Organization Units 组织结构管理

    ABP是一个成熟的.NET框架,功能完善.目前由于项目需要正在自学中. ABP对于组织节点管理这一基本上每个项目都要反复重复开发的内容,进行了自己的实现. 主要包括这些常用功能: 多租户 树结构管理的 ...