I really hope I missed something.
================================
TL;DR
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 ios/<PROJECT-NAME>/Supporting/EXShell.plist
and 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.