在设备上安装登台和生产iOS/Android应用程序

在设备上安装登台和生产iOS/Android应用程序,android,ios,staging,Android,Ios,Staging,我有一个应用程序已经在应用程序商店和游戏商店上发布了。发布的应用程序指向我的生产服务器。我想做的是让我的设备安装一个“登台”应用程序,它指向我的登台服务器,这样我在开发过程中就不会和真正的用户发生冲突。因此,本质上,我的设备将有我的两个应用程序-MyApp和MyApp_Staging。登台应用程序必须能够分发给我的测试人员 我使用Parse中的推送通知功能。登台应用程序如何具有相同的功能?我是否需要另一个开发人员帐户用于登台应用程序 我一直在关注iOS测试版的功能。似乎我的登台应用程序在推给测试

我有一个应用程序已经在应用程序商店和游戏商店上发布了。发布的应用程序指向我的生产服务器。我想做的是让我的设备安装一个“登台”应用程序,它指向我的登台服务器,这样我在开发过程中就不会和真正的用户发生冲突。因此,本质上,我的设备将有我的两个应用程序-MyApp和MyApp_Staging。登台应用程序必须能够分发给我的测试人员

我使用Parse中的推送通知功能。登台应用程序如何具有相同的功能?我是否需要另一个开发人员帐户用于登台应用程序

我一直在关注iOS测试版的功能。似乎我的登台应用程序在推给测试人员之前必须经过苹果的审查。如何跳过审查过程?对于Android来说,阶段化的推出似乎是个好主意,但阶段化的应用程序将取代生产应用程序

是否有办法在设备上同时安装登台和生产应用程序

对于Android

  • 要同时在同一设备上安装这两个应用程序,请为应用程序使用不同的软件包名称
com.company.testapp
-用于暂存中的应用程序

com.company.live
-适用于处于live模式的应用程序

  • 对于与服务器的交互,请在两个应用程序中使用不同的URL,例如,将URL存储在某个文件中,并将其用作静态变量

  • 在不同的服务器上为这两个服务器部署GCM/推送通知代码

对于iOS:

我在同一台设备上安装了iOS的暂存和生产应用程序。我无法为Android回答这个问题,但这是我为iOS设置的解析推送通知

A:同一设备上的应用程序有多个版本:

对于要安装在同一设备上的两个应用程序,它们需要具有不同的捆绑包标识符。为此:

  • 打开项目并转到目标的“信息”选项卡
  • 找到捆绑标识的设置
  • 在标识符末尾添加后缀,如下所示:
    com.MyApp$(BUNDLE\u ID\u suffix)
  • 现在打开“生成设置”选项卡并添加新的用户定义设置
  • 将设置的名称设置为
    BUNDLE\u ID\u后缀
  • 为您拥有的每个生成配置添加不同的后缀。e、 g.Debug可以具有值
    。Debug
    。将发布配置的后缀留空。我有3个不同后缀的构建配置。
    • 在开发过程中调试以进行测试
    • 用于向测试人员发布临时构建的临时程序
    • 发布以发布到应用商店
  • 如果您遵循此路径,您会注意到设备上安装的应用程序的所有版本都具有相同的名称,因此很难区分它们
  • 要解决此问题,请返回“信息”选项卡并编辑捆绑显示名称的设置,即
    ${PRODUCT\u name}${Bundle\u display\u name\u SUFFIX}
  • 与上面所做的类似,我们创建了一个新的用户定义设置,名称为
    BUNDLE\u DISPLAY\u name\u后缀为
    ,并为每个构建配置添加不同的值。e、 我说的是α和β
  • 以上内容将允许您在单个设备上安装多个版本的应用程序

    B:使用版本间解析设置推送通知。

    要设置解析推送通知以跨这些版本工作:请按照为每个捆绑包标识符创建证书和配置文件。e、 g.我有3个证书/配置文件用于我的3个捆绑标识:

  • com.MyApp.debug是用于调试的开发配置文件
  • com.MyApp.adhoc是用于临时测试的临时生产配置文件
  • com.MyApp是用于提交到应用商店的应用商店生产配置文件
  • 确保在生成设置中设置正确的配置文件,以便正确签名应用程序

    将所有证书上载到Parse.com。Parse允许您拥有6个不同的iOS推送证书

    C:使用不同的生产和暂存服务器。

    在“生成设置”选项卡上设置预处理宏。搜索预处理器,并在Apple LLVM 6.1-预处理下搜索设置预处理器宏为每个构建配置设置不同的宏。e、 g.我的意思是,对于Adhoc
    Adhoc=1
    ,对于Debug
    Debug=1

    然后在源代码中的某个地方有如下内容:

    #if defined(DEBUG)
    
    #define SERVER <development server>
    
    #else
    
    #if defined(ADHOC)
    
    #define SERVER <staging server>
    
    #else
    
    #define SERVER <production server>
    
    #endif 
    
    #如果已定义(调试)
    #定义服务器
    #否则
    #如有定义(临时)
    #定义服务器
    #否则
    #定义服务器
    #恩迪夫
    
    D:向测试人员发送构建。

    这个话题可能已经讨论过多次了。我不喜欢苹果的测试过程。还有许多其他的解决办法。我喜欢的是Crashlytics的Beta版

    您可以在此处阅读:


    我将AdHoc build configuration部署到测试人员,因为它是使用AdHoc provisioning profile构建的,允许我在100台设备上部署它,而无需Apple批准。

    您可以为iOS配备内部测试人员,这样可以跳过批准步骤,但他们需要在您的帐户下担任管理员或技术角色,这不太理想。谢谢@prateek。它对我很有效。对于未来的观众,以下是一种在Android Studio下快速、准确地更改软件包名称的方法: