I really hope I missed something.
I can’t run and build my application on iOS without running ´expo publish´. OTA are enabled (unfortunately, because default) but I don’t want to update my running standalone apps. Can this be achieved?
In order to include expo-in-app-purchases I had to eject to bare workflow (SDK 33).
First side note to Expo Team: If you change the wording from ExpoKit to “Bare Workflow” it’s probably a good idea to update the docs accordingly. Otherwise the docs are more confusing than helpful.
Anyway, I got it working and included IAP successfully. Everything was tested in development for iOS. Android is planned to be implemented later.
So I tried to create a build. After having some trouble I found a similar issue where the OP was told to run
expo publish before building. So I ran the command and the build succeeded. I think I need to say that I never used
expo publish before. What I didn’t know:
expo publish updated my running production standalone apps on iOS and Android. As you can imagine the IAP module brings some big changes. So my running applications are now updated (new UI, new logic) but the actual update is not available yet and won’t be available on Android for the next days/weeks. I was able to revert that and to publish the old version again for now. But I have no idea how to build my ios project without publishing.
After following different instructions on Stackoverflow and in the forum I can’t even start the current version in development. XCode always runs the published js bundle. Is it maybe due to the manifestUrl which is set to my published bundle?
Edit: IMHO the ExpoKit docs are not clear regarding OTA as well. It is said:
" ExpoKit : To change the value of
enabled , edit
android/app/src/main/java/host/exp/exponent/generated/AppConstants.java . All other properties are set at runtime."
My ExShell.plist does not contain a value “enabled”. So what am I supposed to change there in order to disable OTA? Available keys are
isManifestVerificationBypassed set to YES,
isShell set to YES,
manifestUrl currently set to my local expo since this is the only way I can see changes without publishing and
releaseChannel set to default.