I have an app which is published on both App Store and Play Store already. The app published is pointing to my production server. What I want to do is to have my devices install a "staging" app which points to my staging server so I don't mess up with the real users during my development. So essentially, my device would have two of my apps - MyApp and MyApp_Staging. The staging app must be able to be distributed to my testers.
I use the Push Notification feature from Parse. How can the staging app has the same feature? Do I need another Developer account for staging app?
I have been looking at iOS Beta Testing features. It seems like my staging app has to be reviewed by Apple before I push to my testers. How can I skip the review process? For Android, the staged rollout seems like a good idea, but the staged app will be replacing the production app.
Is there a way to have both staging and production apps installed on devices?
With the help of FlutterIt is a mobile UI framework offered by Google that makes it possible to build iOS & Android native apps on both platforms, using a single codebase in a fast and expressive way. Flutter development is carried out using the Dart – a programming language proposed by Google as well.
Staging allows for us to mimic the production environment, test the application and secure it behind the scenes so that you (the customer) can review and approve any additions to your application.
In Android Studio, click File | New | New Module. In the list of templates, select Kotlin Multiplatform Shared Module, enter the module name shared , and select the Regular framework in the list of iOS framework distribution options. This is required for connecting the shared module to the iOS application.
For iOS:
I have staging and production app for iOS installed on the same device. I can't answer this for Android, but here is my set up for iOS with Parse push notifications.
A: Multiple versions of the app on the same device:
For both the apps to be installed on the same device they need to have different bundle identifiers. To do that:
com.MyApp$(BUNDLE_ID_SUFFIX)
BUNDLE_ID_SUFFIX
.debug
. Leave the suffix for the Release configuration empty. I have 3 build configurations with different suffixes.
${PRODUCT_NAME}${BUNDLE_DISPLAY_NAME_SUFFIX}
BUNDLE_DISPLAY_NAME_SUFFIX
and add different values for each build configuration. e.g. mine say α and β.The above will allow you to install multiple versions of the app on a single device.
B: Setup Push notifications using parse between the versions.
To set up Parse push notifications to work across these versions: Follow the Parse tutorial to create certificates and provisioning profiles for each of the bundle identifiers. e.g. I have 3 certificates/provisioning profiles for my 3 bundle identifiers:
Make sure to set the right provisioning profiles in your Build Settings, so that the app is signed correctly.
Upload all the certificates to Parse.com. Parse allows you to have 6 different iOS push certificates.
C: Using different production and staging servers.
Set up preprocessing macros on Build settings tab. Search for Preprocessor and under Apple LLVM 6.1 - Preprocessing for the setting Preprocessor Macros setup different macros for each build configuration. e.g. mine say for Adhoc ADHOC=1
, for Debug DEBUG=1
Then somewhere in your source code have something as follows:
#if defined(DEBUG)
#define SERVER <development server>
#else
#if defined(ADHOC)
#define SERVER <staging server>
#else
#define SERVER <production server>
#endif
D: Sending builds to testers.
This topic has probably been covered multiple times. I am not fond of Apple's Beta test process. There are numerous other solutions. The one I like is Beta by Crashlytics.
You can read about it here: http://try.crashlytics.com/beta/
I deploy the AdHoc build configuration to testers as it is built with the Adhoc provisioning profile which allows me to deploy it on 100 devices without Apple approval.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With