How do I track installs through a TestFlight public link with branch.io? I'm not ready to release my app into the store at large yet but want to run a small campaign for testing.
Related
I have a testing and production release channel, on TestFlight and the App Store, respectively. I want the ability to run both on the same device. Otherwise if there is an issue with my testing release channel me and my beta users are blocked from using the working production channel (as least without constantly downloading and overwriting the TestFlight vs App Store versions)
I tried https://medium.com/#ywongcode/building-multiple-versions-of-a-react-native-app-4361252ddde5, but it seems like most of the configurations were reverted on build, and I wound up with the same bundleIdentifier and therefore I could not download the TestFlight testing version without removing the App Store version.
I think your best bet is to release multiple apps from 1 source code. We ran into this problem as well and ended up releasing separate test (internal testing), beta (external testing) and production apps. Each with their own app logo, app name and expo release channel. As far as I know, there is no way to switch release channel after your app has been built.
Alternatively you could (beta) test your app by pointing your users to https://exp.host/#username/yourApp?release-channel=. This way your testers can test most of your app’s functionally in the Expo Go app.
You can use iOS Build Configurations and Android Build Variants to easily create different apps within one project.
I have a react-native application which is using Expo. When I want a build on my iOS device, I run
expo build:ios
then I upload the build to my appstoreconnect account and manage the build version through Testflight. Then on my iOS device I'm able to download it.
This all makes sense, as it mirrors the android process of building, creating a downloadable link, and having the end user download the latest link. But if I make a change and run "expo publish"... the app downloaded on my iOS device automatically has the changes that I made to the source code. How is that possible? Why don't I need to rebuild and reupload the .ipa to Apple for them to distribute through Testflight?
Thank you in advance!
It's happening because of the Expo "OTA" updates system (over the air).
When you publish to a release channel, users will automatically get the new update.
If you make some changes in app.json, or if you updated some native codes, you will need to re-build your app. The OTA updates only works for JS updates.
Just looking for clarification about how react-native apps are intended to be deployed to a platform's native app store (as opposed to being downloaded 2nd-hand from the Expo app) from a continuous-workflow perspective (as opposed to the mechanics of it).
Looking at the expo docs for standalone apps, it seems like the way a project would be continually (re)published would be to rebuild the app into the target platform and upload to the native platform's app store. Have not used react-native in some time, but I had initially thought that if you wanted to publish the app on a native platform's app store, you needed to eject the app and publish the platform's version of the ejected expo app to the native app store (and from then on, work on the app from the ejected version).
Could anyone with actual experience continually deploying react-native apps to native app stores enlighten me how what the standard workflow is here?
Expo provides a method for generating .ipa (iOS) or .apk (Android) without ejecting. You simply run expo build:ios (or build:android) to generate the standalone bundle which can be uploaded to the Play Store or App Store.
It is also worth noting that Expo provides internal over the air updates meaning you only need to publish your application to the App or Play store once. After the initial install, you can deploy updates through expo publish. Then, as per the documentation:
Expo will check for updates automatically when your app is
launched and will try to fetch the latest published version. If a new
bundle is available, Expo will attempt to download it before launching
the experience.
I'm currently developing an app with Expo. I've used Expo's Facebook API for users to sign in and realized that if I want to detach I'd have to use the React Native Facebook SDK. I've heard from many people that you can't publish an expo app to the app store, however, the expo website seems to say otherwise. Should I keep developing in Expo or detach and replace any of the expo imports I have?
You can easily generate a .apk or .ipa file with Expo and then upload it to the corresponding store (I have done this multiple times).
From Expo's docs:
The purpose of this guide is to help you create standalone binaries of your Expo app for iOS and Android which can be submitted to the Apple App Store and Google Play Store.
You can find detailed instructions on how to generate the binary files you need in this link.
What your friends might mean with "You can't publish an Expo app to the app store" is the publish command associated with Expo OTA updates. They even have a section explaining how to publish OTA updates to your standalone app.
A handy mindset when dealing with Expo is to think that "publishing" means using Expo's CLI tools to generate an OTA update, while "building" refers to the act of generating a new binary standalone file.
If you still need help with deploying your app to the app store check Expo's distribution guide.
Downloading beta app from testflight app gives error at the end, says "Unable to download app at this time" on all my devices.
No error is in itune connect upload. App displayed and received notification on adding new app to testflight beta. But everytime same error.
This happened to me when I wasn't using the correct provisioning profile. Very frustrating error that doesn't provide any useful info, and leaves the previous installed version of your test build in a state where it cannot be launched. After I switched my provisioning profile to 'Automatic', bumped the build number, and submitted a new version to iTunes connect I was able to download the new build.
I'm seeing a similar error. I don't know for sure, but I suspect doing things in this order may have something to do with it (this seems to mirror what emrys57 is facing).
You have issued a previous TestFlight release (download/install was working).
You then submitted that version for formal review for publication in the App Store.
While the app submission is still under review, now you uploaded a new TestFlight build with an updated version number (but did not resubmit for App Store review).
It could be that while the app is under review something prevents the download. I seem to recall reading about something like this in one of the guides, but I can't remember where off the top of my head. In my case, as an internal tester I even face the error "Unable to download app at this time", regardless of whether I already have a previous version with the same bundle ID already installed or if I don't have the app already installed (i.e., it's fully uninstalled). I wonder if an accepted App Store review will clear up the issue; it doesn't seem like a good idea to resubmit that latest build for further App Store review if the version previously submitted is what you actually want released.
In my case, for the general testing audience, I have a separate bundle ID that is exclusively for beta testing. And that version is never submitted for App Store review (the one that's slated for App Store review I only use for the purpose of smoketesting the upgrade process with internal testers). That bundle ID for beta had to go through the one-time full TestFlight external review for the initial TestFlight external beta testing. But I've been able to keep adding new versions to that beta-only bundle ID for subsequent TestFlight releases without an issue.