App configuration for Apple review process - ios

I have written some kind of a banking app which requires logging. Unfortunately, I can't let Apple guys during review connect to my production server, but I can give them access to my development server. Is it possible to modify endpoints addresses in my app after successful Apple review? Because to be honest I don't know how to switch my app from development to production server after review. And I don't know also how to handle updates in App Store which also requires Apple reviews.

One possible solution would be to ensure that every API request coming from your app to your server includes a version number.
You can then have your web server direct the request to either the production or development servers based on the version number.
Each time you start an update you increment the version number sent by your app and you update your web server to direct that newer version to development and all earlier versions to production.
Once you finish testing, you submit the app to Apple. Don't use automatic release. Use manual release. Once Apple approves the app, you update the web server so the new version number redirects to production and then you release the approved app.
Repeat again as you start working on the next update.

Related

Separate apps in TestFlight for production and staging?

Our app has two targets, with separate Bundle Ids for the production and staging app:
com.myCompany.production
com.myCompany.staging
We have used TestFlight to test our app internally, but only at the later stages - we were testing com.myCompany.production app, whose API calls were hitting the production server.
Now we want to test earlier in the process, we want our internal users to test the com.myCompany.staging app.
Is creating a new app on iTunes Connect the only way to do this? I'm just concerned that I will be creating a 'fake' app which will never be released. What is the recommeneded way to do this?
There are two alternatives, adhoc distribution with an enterprise certificate and use a 3rd party service like fabric.io for distribution. Or use TestFlight, which we do, and have had no issues. We make sure that in the TestFlight reviewers notes we make clear that this version is just for beta testing. The only downside of this approach that we have found is that when you up the version number (not the build number) you have to resubmit for Beta review which can take anything from a few hours to a couple of days.

Submitting iOS App to App Store for Review Without Pushing Server Updates to Production

Our platform is undergoing a major upgrade that amongst other things impact's the database schema and data relationships.
We have updated our apps and are about to submit them to the App Store for approval. We will be submitting the app with the API endpoints pointing to our production environment but the new endpoints will only work once the DB schema of our platform is upgraded which we do not want to do till our app is approved.
Does anyone have an approach on how to proceed? Is there a way to provision the app with staging and production API endpoints, have Apple review on staging endpoints but make the app live with production endpoints?
PS - Due to timing constraints we have not worked on our platform upgrade with backward compatibility so we would be asking our iOS app users to upgrade to the new app once our platform is successfully upgraded.
I have an idea may work for you. Put your new platform in a temporary server. let your app. connect to it only for apple testing. give apple a test user that only connects to the temporary server and all others connects to the live server.
later you can upload a new version that does not include that logic. a x.x.1 version.
remember to select the option saying developer release. means that your app will be accepted but will not get released until you release it manually. this allows you to release the app. and update your platform synchronously.

Testflight - continue testing after 30 days?

We are looking at running a test campaign for our iOS mobile app with a few hundreds users, using TestFlight.
(We cannot use an Apple Enterprise account)
The test will last 50 days and there is a 30-day limitation for test flight builds.
the documentation says:
To continue testing after the 30-day period expires, upload another
build. Internal testers automatically receive an update notification
when the new build is available. To distribute the new build to
external testers, you resubmit it to Beta App Review. As soon as it is
approved, you can send the external testers an update email by
clicking Send Invites from the External Testers column on Builds,
https://developer.apple.com/library/ios/documentation/LanguagesUtilities/Conceptual/iTunesConnect_Guide/Chapters/BetaTestingTheApp.html
So, in theory, we could test version 0.9.0 for a month, then build and distribute 0.9.1 and have people update (yes a little clunky).
The question is does it really work and what happens to local app data when updating? things like coreData and NSUserDefault?
It would be great to have some sort of absolute confirmation than those are fine.
I cannot fully test that because update behaviour might be different before and after passing that 30 days limit.
Thanks in advance.
Yes, posting two version works. The app data should not be affected. Make sure your testers are aware of this limitation and do update before the deadline.
Note, If you update the build number instead of the version, Testflight groups it together and automatically sends the update. When you change the version you have to log in to iTunes Connect and enable Testflight on the new version.
If you want to skip the 30 day limit, you can use other services for distribution, such as Fabric's Beta. This requires registering each device though, and you're limited to 100 devices on the developer portal. If you need more, you could create multiple developer accounts. There shouldn't be a fee anymore if you're just testing on a device.
And your app data will not be affected by the update (unless you make a change to your app). I have done this (hit 30 day limit and then sent update) before without any problems.

iOS: Is it possible to push an update for a side-loaded development app?

I am side-loading a development version of an app to help qa changes. Is it possible to have future updated versions of the development app pushed to my phone when the developer finishes a new build?
To be clear, this is NOT for the version in the app store -- this is for a development version we are hosting on our own servers, for which my device UDID has been given permission.
Thanks in advance!
No it is not possible.
The best you can do, is notifying (email, ...) your tester(s) and provide a link to download the app update.
This update is really considered as an update, overwriting the previous version in your tester phone.
But you cannot push. Even if you know UDID.

App store submission guide

My application is using local server to communicate. I am looking for app store submission. How to give a demo for app store review? Is it necessary to provide my application server on cloud or public IP?
Local server : Our application server is installed inside a network and my application receives alerts from the server. Local server IP will be configured inside my application. My application also use local PBX for voice call.
You could use Ad-hoc testing, where you could test the app for the real time environment and using the local-server/LAN. You will need to create distribution profile for adhoc testing of your app and mention the devices on which you want to test the app.
If you will try to submit app with the Demo version of your app in the appstore, then it will get rejected, apple requires fully working application in order to be available on the server, so make sure that your app is tested before submitting to app-store.

Resources