| #
7c3ed0c0 |
| 14-Dec-2022 |
Douglas Lowder <[email protected]> |
[Expo Go][iOS] No remote home app loads in release builds (#20416)
# Why
Per ENG-7047, we need to disable remote loading of home app, and
checking for home app updates, for release builds.
Upda
[Expo Go][iOS] No remote home app loads in release builds (#20416)
# Why
Per ENG-7047, we need to disable remote loading of home app, and
checking for home app updates, for release builds.
Updates and loading from the packager will still work in debug builds.
# How
Add `#ifdef DEBUG` in several places in
`Exponent/Kernel/AppLoader/EXAppLoader.m`
# Test Plan
- CI should pass
- Test Expo Go builds locally and verify that updates are not loaded,
and that nothing else is broken
# Checklist
<!--
Please check the appropriate items below if they apply to your diff.
This is required for changes to Expo modules.
-->
- [x] Documentation is up to date to reflect these changes (eg:
https://docs.expo.dev and README.md).
- [x] Conforms with the [Documentation Writing Style
Guide](https://github.com/expo/expo/blob/main/guides/Expo%20Documentation%20Writing%20Style%20Guide.md)
- [x] This diff will work correctly for `expo prebuild` & EAS Build (eg:
updated a module plugin).
show more ...
|
| #
167fd314 |
| 30-Jun-2021 |
Will Schurman <[email protected]> |
[ios] Use stable manifest ID where applicable (#13280)
|
| #
3b6a24fb |
| 13-Dec-2018 |
Tomasz Sapeta <[email protected]> |
[ios][android][sdk][ncl] Background location, geofencing and background fetch (#2338)
# Why
Canny issues:
- https://expo.canny.io/feature-requests/p/background-tasks-support
- https://expo.cann
[ios][android][sdk][ncl] Background location, geofencing and background fetch (#2338)
# Why
Canny issues:
- https://expo.canny.io/feature-requests/p/background-tasks-support
- https://expo.canny.io/feature-requests/p/background-location-tracking
- https://expo.canny.io/feature-requests/p/geofencing-api
Related PR:
- https://github.com/expo/universe/pull/3201 (docs)
# How
The core of this PR is to implement TaskManager that provides an API to manage tasks, especially these that run while the app is in the background. I hope I documented this piece enough so I don't have to write it here again
This PR also adds three ways of how we can use background tasks:
- Background location updates
`Location.startLocationUpdatesAsync`, `Location.stopLocationUpdatesAsync`, `Location.hasStartedLocationUpdatesAsync`
- Geofencing
`Location.startGeofencingAsync`, `Location.stopGeofencingAsync`, `Location.hasStartedGeofencingAsync`
- Background fetch
`expo-background-fetch` module, *iOS only so far*
Also, to improve the quality of `expo-location`, I've deprecated `enableHighAccuracy` option and introduced a new one called `accuracy`. It allows to use all possible accuracies provided by iOS platform. Android has fewer options of accuracy, but I've made simple mapping (see https://github.com/expo/expo/pull/2338/files#diff-66bdbbc66d3410d9198aa17584b5409eR633).
All new modules and `expo-location` are now TypeScripted
# Test Plan
New APIs examples in `native-component-list`:
- `BackgroundFetch` - shows the status and the date of the last background fetch which can be manually triggered in Xcode (Debug -> Simulate background fetch).
- `Location` -> `Background location map` - it tracks your location by drawing a polyline.
- `Location` -> `Geofencing map` - this one will work better once we merge #2316, as it should show local notifications when the device enters/exits a region.
- `TaskManager` - shows all registered tasks for the experience.
There are also some quick tests in `test-suite` for the new methods in `Location` and `TaskManager` modules.
show more ...
|
| #
36851f71 |
| 24-May-2018 |
Ben Roth <[email protected]> |
Remove isShell property because it is now identical to isDetached
Also clean up a few other props that had shell in the name
closes https://github.com/expo/universe/issues/2460
fbshipit-source-id:
Remove isShell property because it is now identical to isDetached
Also clean up a few other props that had shell in the name
closes https://github.com/expo/universe/issues/2460
fbshipit-source-id: fac520e
show more ...
|
| #
00fcd3c6 |
| 24-May-2018 |
Ben Roth <[email protected]> |
EXShellManager -> EXEnvironment
fbshipit-source-id: 2347314
|
| #
9088dd0e |
| 07-May-2018 |
Ben Roth <[email protected]> |
Organize AppLoader, fix AppLoader tests
fbshipit-source-id: e80e891
|
| #
e3eee906 |
| 07-Mar-2018 |
Ben Roth <[email protected]> |
Identify shell app record, restore appOwnership and initial shell props
fbshipit-source-id: f120e13
|
| #
c67a7dcd |
| 02-Mar-2018 |
Ben Roth <[email protected]> |
support routing notifications
fbshipit-source-id: 49aa8ea
|
| #
f322f621 |
| 01-Mar-2018 |
Ben Roth <[email protected]> |
support error handling, wire up dev bridge loading callbacks
fbshipit-source-id: ea89a22
|
| #
7f6367d0 |
| 27-Feb-2018 |
Ben Roth <[email protected]> |
initial transition to native kernel with basic browser model
fbshipit-source-id: e14dd8b
|
| #
89c6c39c |
| 14-Feb-2018 |
Eric Samelson <[email protected]> |
OTA Updates improvements (#1925)
* [android] fetch updated manifest on launch and allow specified amount of time to do this before populating experienceactivity
* [android] only consume response on
OTA Updates improvements (#1925)
* [android] fetch updated manifest on launch and allow specified amount of time to do this before populating experienceactivity
* [android] only consume response once in onCachedResponse
* [android] removed CountDownTimer in favor of Handler.postDelayed
* [WIP][android] moved all new manifest loading code to new methods with AtomicBundleListener rather than ManifestListener
* [android] moved JS bundle loading to before populating experienceactivity
* [android] refactored most of the new logic into its own AtomicBundleListener class per conversation with Jesse
* [ios][wip] beginning ios changes
* [ios] WIP
* [ios] more wip, have full manifest-fetching logic in AtomicBundleManager
* [ios] reverted changes to bridgeRecord in favor of creating new AppRegistry and AppRecord classes; will eventually refactor everything to use these rather than BridgeRegistry; getManifestAsync now uses AtomicBundleManager for fetching manifest
* [ios] wip, start on bundle loading
* [ios] wip wip wip. not sure how much of the logic to be moving from EXFrameReactAppManager to new class - maybe should keep _jsResource logic in original
* [ios] bundle loading now working from atomic bundle manager
* [ios] renamed new class to AtomicBundleLoader to avoid using word Manager
* [ios] trying to get reloading to work again; there is some weird issue with objc/js communication but going to save it for later
* [ios] wip with adding js bundle loading into timeout - currently just setting a timeout directly on the request
* [ios] bundle loading part of timeout
* [ios] renaming methods to use underscore prefix
* [ios] fully replace EXKernelBridgeRegistry and BridgeRecord with AppRegistry and AppRecord
* [ios] refactor request bundle method to use FrameReactAppManager as delegate
* [ios] renamed AtomicBundleLoader to AppLoader per Ben's suggestion
* [ios] step 1 in resolving reloading issue
* [ios] fix reloading on ios -- now using a UUID to identify record rather than manifestUrl, and we enforce uniqueness after the entire manifest/bundle is loaded to give time for the other record to be removed. Also, changed _appRegistry to an NSMutableDictionary, since NSMapTable was no longer needed and NSMutableDictionary is easier to copy -- safer since we're mixing mutations & enumeration more.
* [ios] a couple more fixes to make sure we're handling possible duplicate AppRecords properly
* [ios] better handling of various cases with possible inconsistencies/network errors
* [ios] add loadedFromCache key to manifest
* [ios] separated resolveWithCachedManifest and resolveWithCachedBundle to avoid situation where resolveWithCachedManifest is called with an error after manifest _finished == YES and therefore bundle never gets fetched
* [android] added loadedFromCache key to manifest, not sure why it's always false...
* [android] loadedFromCache manifest key working now
* [android] prevent onManifestCompleted from being called twice
* [ios] EXKernelAppLoader - control downloading bundle entirely, and don't resolve with manifest until after bundle has been downloaded successfully
* [ios] removed now obsolete EXKernelBundleLoaderDelegate methods
* [home] first step in loading progress fix - move manifest and bundleUrl fetching to a separate flux action, and allow a BrowserScreen to be mounted to show loading progress before manifest is fetched
* [ios][home] bundle loading progress now showing; need to show assets/icon properly, and resolve occasional crash when bundle download reaches 100%
* [home] fixed missing icons and name in project history
* [ios][home] send new manifest optimistically to JS as soon as we receive it so that JS can show the correct icon and background color on loading screen
* [home] moved some logic from BrowserActions to Browser to try and keep actions more pure
* [ios] fix for opening client from a notification - previously an EXKernelAppRecord was never created in this case. Might want to think about only ever creating AppRecords when the manifest is requested
* [home] improve safety/handling of optimisticManifest
* [home] fix for standalone apps where props.task is initially null
* [ios] pass recordId into frame so it can use this to unregister itself safely instead of trying to iterate through all of the records to find a potentially non-unique experienceId. Also, register AppRecords when manifest is requested as there is no reason for them to exist before this
* [ios] add new EXCachedResourceBehavior to never read from the cache but make sure we are always writing to it
* [android] don't send manifest or bundle until we have either downloaded a new bundle or timed out
* [android] only write the manifest that we are actually using to shared preferences
* [android] correct loadedFromCache value (again)
* [android] fix loading icon and progress for dev mode - don't try and download the bundle in exponent code
* [android] send optimistic manifest to ExperienceActivity as soon as we download it so that the activity can display the proper loading screen/icon/task info
* [android] use AtomicBundleListener for detached and shell apps as well
* [android] make sure that AtomicBundleListener is the only thing that is calling loadJSBundle (for non-kernel bundles)
* [android] fix opening detached apps after the first run
* [android] improve handling of failures
* [home] stop accidentally swallowing errors wfrom fetching manifest on iOS
* [ios] clean up stopTimer usage, as anytime we call _resolve we don't want to call it again
* [ios] simplify timeout on JS bundle fetching - since the NSTimer will take care of resolving anyway, we don't need to set the timeout on the JS bundle request based on the timer
* [android] renamed AtomicBundleListener to AppLoader as this is a better description of what it does
* [server] updated unversioned schema with new app.json fields
* [ios][android] make sure to only fetch remote manifest if the shouldCheckForUpdate is true
* [android] if in dev mode, skip the cached manifest + set timer step and just go fetch the remote manifest every time
* [ios][android] stop making bad assumptions -- if a cached manifest exists, it is possible that the corresponding bundle does not exist for some reason, and in this case we should download rather than failing to user
* [ios] resolved first cycle of ben's comments
* [ios][home] resolved some of ben's 2nd round of comments
* [ios] resolved most of ben's 3rd round of comments'
* [ios][server] resolved a few more comments
* [ios] added status enum property to EXKernelAppRecord & so that kernel services can skip over any AppRecords which are partially loaded
* [ios] add todo to get rid of lazy copy workaround
* [android] resolve jesse's comments
* [android] store loading errors in ExponentSharedPreferences, and make sure that we always try to load a new manifest + bundle if this is set to true when loading experience
* [ios] resolved last of Ben's comments, including adding a way for AppRecord to be notified when bridge has successfully loaded JS
* [schema] mark loadJSInBackgroundExperimental as deprecated
* [android] fix loading apps for the first time in dev mode
fbshipit-source-id: 4d763d0
show more ...
|