I had built an app which is already available in the app store with version 1.0. This app has local database (i.e. SQLite). Now I am working on next Version (i.e 1.1) and in this Version I have added a new table to my local DB. With this the development is complete.
Now, using testFlight I am performing Internal Testing.
Let's consider two Scenarios:
Case 1:
On my device, I had freshly installed the beta build version 1.1 from testFlight. Once installed, I checked my local DB and found that my local DB is updated with the newly added table.
So this is working fine.
Case 2:
Let's consider a scenario Wherein on my device I am running my app store build i.e version 1.0 and now I am installing the beta build from Testflight. Once clicked on install button I get a message "Do you want to update the existing app" and by clicking on the ok button the beta build which is version 1.1 is installed on the app.
But when I checked my local DB I found that the database is not updated with the new table. i.e. It's still showing the older database into the app.
Why only my local database is not updated in the second scenario?
Does testFlight build do not override complete app store build along with local DB?
If you want to really test migration process on production you have to install your app with Itunes because TestFlight or the build process via xCode does not completely override the App.
Install an ad hoc distribution of an archived build of the update using iTunes on a device that already has the old version of the app installed.
Test your App with Itunes
I had similar issue with CoreData. I had to make a migration of my DB, and I was unable to test the real scenario of updating the App.
The only true test was :
Have the old app (from the actual store) installed on the phone.
Install your new App with Itunes with an Ad-hoc distribution.
Related
I'm not very familiar with TestFlight. I would like to add a build with a new version for my app. Do I need to add the new version to the App Store settings first?
For every build you upload to iTunes Connect you can decide whether you want to share it with testers on TestFlight and/or submit it for app store review.
When you share builds with TestFlight Apple will review these builds too and you can receive warnings to them too. The initial TestFlight build will be tested more extensively.
Do I need to add the new version to the App Store settings first?
I don't know about which app store settings you are talking about, but all you have to do before uploading to iTunes connect is set the code signing and provisioning profiles first in XCode and Apple's development portal and make sure you increment the build number on every new upload because the upload will fail if you try to upload a build with a build number already present on iTunes Connect.
Once uploaded iTunes Connect will start processing it and then you can share it for testing with TestFlight or submit for app store release review.
You can read more info about TestFlight in Apple's dev site
1 - Test Flight have nothing to do with Live apps
2 - Versions can contain unlimited number of builds before submitting one to the Live app store
3 - Every time you upload new build it goes under the version number in test flight.
So lets say I am on version 1.0, everyday I'am uploading new build under the same version number
day one : 1.0 (1)
day two: 1.0 (2)
And so on, after i upload the final build i can submit that to the live app store, next i will start working on version 1.1 I add that and submit builds to test flight as before, then i submit my 1.1 to the store, and so on .
On app store users will not see anything but the version submitted and current version live is not affected by any test flight version, i can be on version 9 on test flight but 3 on app store, and even schedule an update every month till i reach 9.
Is it normal that TestFlight uses a different keychain then the app store build?
I have added my login-credentials in my keychain so that the app login's automatically when it is started, but when I install the TestFlight app over the AppStore app.
The keychain seems to not be the same as the app store because it cannot find the credentials.
both apps have the same bundle identifier.
Yes it is normal. As you install your app from AppStore and from TestFlight, iPhone/iPad consider both the app as different apps even with the same name. There may be difference in both builds'versions. Or even if both the builds are same it consider the different one. If you have noticed the TestFlight version and AppStore version are installed separately. And another thing to note is that when you install an app from test flight then the app name Start with a colored Dot which denotes that the build is downloaded from test flight and it makes the app different from other all apps.Please see the Image attached which show a build installed from test flight.Application installed from TestFlight denoted with colored note in the starting of the application name
I have an app on the App Store and I downloaded it onto my phone. Now, I want to integrate iCloud and Push Notification into this app. If I open Xcode and run it on the same device, it overwrites the App Store app. My goal is to have 2 versions of this 1 app on my phone: 1 from the App Store and 1 from Xcode for development purposes.
I have read two articles and can't come up with a solution:
Unable to install same apps on 1 device
Create Multiple Targets/Apps for 1 Xcode Project
By changing the Bundle Identifier, it is possible based on the article above. But will there be a problem when testing iCloud and push notifications? The App ID and what is in iTunes Connect relies on the Bindle Identifier and when testing iCloud and push notifications, I need iTunes Connect. So this is the problem from what I see.
Any suggestions?
Create a new bundle ID (say with an added .CLONE suffix). Use Xcode to build your App Store submitted code (from your source repository) identical except built using this new bundle ID. Install it side-by-side with the original App Store app (identical source code).
Then manually copy your notes out of your App Store app and paste them into the new Clone app. You can use Xcode to back up the new clone app's sandbox. (There might also be tools that are able to pull you app's notes DB out of an unencrypted iTunes backup, if you make or have such.)
Then delete your App Store app (if needed) and install any new version as needed for development and testing using the original bundle ID for iCloud testing.
Your real non-test data will reside in the Clone of your earlier App Store app during development. You can copy it back into the App Store submission when done.
We are going to submit a prerelease version of an app to external users, but I wonder: what will their experience be?
The user had a production App Store version of the app on the device, and now installs a new beta via TestFlight. Will this be in-place update, with the data preserved, or a completely new install with data wiped, or will TestFlight's version be installed next to production - so that the user has the app twice?
Testing is over, and the production-ready version is submitted to the App Store. Will the tester be able to update to the new App Store version seamlessly (in-place), with the beta version's data preserved? Or is it a complete wipe? Or will beta stay on his device and he has to download a new full version from scratch?
By the way, I have submitted another question regarding version numbering beta vs. production.
According to https://developer.apple.com/testflight/
Once you accept your invitation, you’ll be able to download a
beta version of the app you’ve been invited to test. If you already
have the live app installed on your device, the beta version of the
app will replace the live version. When you’ve downloaded the beta
app, you’ll see an orange dot next to its name that identifies it as a
beta. TestFlight will notify you each time a new build is available
and provide instructions on where to focus. You can easily offer
feedback by tapping the Provide Feedback button in the App Details
view in TestFlight. An email automatically opens with pertinent app
and device details, and you can add additional details and
screenshots.
It's said that the beta version of the app will replace the live version. The reason is the beta app has exactly the same bundle identifier with the one on the App Store.
After installing the beta app, the user will still see the updates from the App Store as the live version has been installed (without losing any data) because the beta app is deployed using exactly the same certificate.
I think the things changed a while ago.
Even if you have a beta (which is signed with production certificate - remember, no AdHoc needed), the TestFlight version will function as an update for the existing app. I tested those things and can confirm no NSUser defined entities were overwritten or deleted by the TestFlight build.
For the second part: the user can preserve saved data if the application is not a major build (I mean, you cannot expect a database stored in some format to work with another new model of your app version). To be sure your app does not clear or attempt to modify previous content, put a version check on the new one. If there are data found, update to the new schema. I think this is the way to go. Anyway, you cannot have duplicated versions of the app because they are signed by the same profile.
I have archived and uploaded the build file of my swift application to iTunes Connect and started to use TestFlight Beta Testing with internal testers from my developing team. After a while, I have made some updates and bug-fixes (as expected :)), archived new version, uploaded the new build file to iTunes Connect and disabled the old application. However, when the testers had installed the new app, they have started to face crashes while application is launching and there is not any crash report generated. I am using the same version without any crash/problem installing the app directly from XCode via cable, but people who are installing via iTunes Connect keeps crashing. I am checking my iTunes Connect again and again. I have updated version info in Versions segment, enabled TestFlight Beta Testing for new version (it automatically disabled the older one).
Testers have tried deleting the old version from their devices, but still crashing. What might be the problem?