[ios] Migrate all remaining native code
[ios] Use stable manifest ID where applicable (#13280)
[ios] Merge unimodules core and adapter into expo-modules-core (#13353)# Why Part of Expo modules re-architecture # How - Copied iOS sources from `@unimodules/core` and `@unimodules/react-
[ios] Merge unimodules core and adapter into expo-modules-core (#13353)# Why Part of Expo modules re-architecture # How - Copied iOS sources from `@unimodules/core` and `@unimodules/react-native-adapter` to `expo-modules-core` - In these copied files replaced `UM` prefix with `EX` - Swift names for classes used by the users (`AppDelegateWrapper`, `ModuleRegistry`, `ModuleRegistryAdapter`, `ModuleRegistryProvider`) won't have any prefix — we would drop these prefixes anyway, in the future when we rewrite them to Swift - Old `UM*` names are still supported and most of them are marked as deprecated, however I couldn't get it to work for Swift (but seems like no one uses it for app delegates?) and protocols - `ExpoModulesCore` provides `EXUnimodulesCompat.h` header that expands old `UM_*` macros to `EX_*` - Previously `ExpoModulesCore` depended upon `UMCore`, now it's the other way around — `UMReactNativeAdapter` and `UMCore` depend on `ExpoModulesCore` to import `EXUnimodulesCompat` header - Fixed `EXTrackingTransparency` to depend on `ExpoModulesCore` directly - _There are no changes in the logic or architecture of unimodules/expo modules, I'll do this separately_ # Test Plan - CI jobs are passing - Tested locally, apps seem to work as before
show more ...
[permissions] Migrate interface to expo-modules-core (#12961)
[expo-permissions] Deprecate permissions package (#11955)# Why Deprecated expo-permissions for removal in SDK 42. # How - Moved permissions service to the `react-native-adapter` - Fixed
[expo-permissions] Deprecate permissions package (#11955)# Why Deprecated expo-permissions for removal in SDK 42. # How - Moved permissions service to the `react-native-adapter` - Fixed usage of `Manifest.permission.ACCESS_BACKGROUND_LOCATION` # Test Plan - NCL - Expo Go ✅ - bare expo ✅ - Checks if the permissions are scoped correctly ✅
[expo-permissions] Fix `getPermissionsAsync` returns incorrect status (#9060)
Fix grammatical mistake (#7741)
[expo-notifications][expo-permissions] Move notification permission requesters to notifications package (#8486)# Why Fixes https://github.com/unimodules/react-native-unimodules/issues/136. This
[expo-notifications][expo-permissions] Move notification permission requesters to notifications package (#8486)# Why Fixes https://github.com/unimodules/react-native-unimodules/issues/136. This is what we wanted to do anyway—move code responsible for permissions to respective modules. # How - removed `EXUserNotificationPermissionRequester` as it was left only as a fallback for when `expo-notifications` is not installed. Now that in Expo Client `expo-notifications` will be installed, this class would never be used. - moved remote notification permission requester from `expo-permissions` to `expo-notifications`, effectively removing support for calling `askAsync(Permissions.NOTIFICATIONS)` from `expo-permission` if `expo-notifications` is not installed - while moving I write a way for the requester to receive callbacks about permission being accepted or declined. I used a `UIApplicationDelegate` singleton module to which requesters can register to receive callbacks. - since new notification permission requesters now may return `null` inside the permission response I had to either: - add support for `NSNull` in `EXPermissionsManager` (it is returned by the user notifications permissions requester) - exclude `notifications` and `userFacingNotifications` from being saved to kernel service since we don't scope them even so (thanks @lukmccall for the tip!) We decided to stick to the second idea. # Test Plan - [x] Ran Expo Client on an ExpoClient-less device, fetched and asked for both notification-related permissions.
[Permission] Rework (#5061)* [Permissions] Extract base class for requester * [Permissions] Refactor * [Permissions] Make podspecs for each requester * [Permissions] Add missing self ensur
[Permission] Rework (#5061)* [Permissions] Extract base class for requester * [Permissions] Refactor * [Permissions] Make podspecs for each requester * [Permissions] Add missing self ensurement to requesters * [Permissions] Android fix * [Permissions] Rewrite module to kotlin * [Permissions] Move scoped ask to activity * [Permissions] Remove permissions manager * [Permissions] Remove PermissionsServiceBinding * [Permissions] Make requesters * [Permissions] Improve code styling * [Permissions] Make SystemBrightnessRequester (#5147) * Make SystemBrightnessRequester * Make type enum Co-Authored-By: Bartłomiej Bukowski <[email protected]> * [Permissions] Rewrite android native api (#5186) * Move logic form module to service * Remove static var from PermissionsService * Make getPermission not throwable * Store asked permissions * [Permissions] Make requester registrable (#5187) * Clean iOS * Fix scoped permissions status (never undetermined) * Requesters belong to EXPermission * Remove permissions delegate * Make requester registrable * [Permissions] Small fixes * [Permissions] Add app ownership check and fix code style * [Permissions] Rework native api (#5418) * [Permissions] Move requesters to modules on iOS * [Permissions] Add bool granted * [Permissions] Add to native modules, permissions related methods * [Permissions] Repair CI * [Permissions] Fix typo * [Permissions] Reduce boilerplate code * [Permissions] Fix error description * [Permissions] Export constants for permissions status * [Permissions] Rename methods wrapper * [Permissions] Remove scoped permissions from standalone apps * [Permissions] Fix lateinit and scoped permissions Location module in OnHostResume calls getPermissions method before Activity Provider is available. * [Permissions] Add `never ask again` support * [Permissions] Scoping only dangerous permission * [Permissions] Rename `neverAskAgain` to `canAskAgain` * [Permissions] Run pod install * [Permissions] Update docs * [Permissions] Fix CI * [Permissions] Fix typo and imports after rebase * [Permissions] Small improvements in Android * [Permissions] Make test-suits pass * [Permissions] Add requested changes * [Permissions] Move ts types to unimodule * [Permissions] Add missing requester * [Permissions] Small fixes * [Permissions] Fix after rebase * [Permissions] Update docs * [Permissions] Publish dev home * [Permissions] Add kotlin dependency to build.gradle * [Permissions] Fix permissions in ContactsModule * [Permissions] Set manifest in HomeActivity class * [Permissions] Regenerate pods projects
[ios][android] Drop SDK 31 and 32 (#5381)# Why resolves: https://github.com/expo/expo/issues/5146 # How Using `et rm-sdk` expotools command. # Test Plan Run NCL.
[ios] Prompt for scoped permissions in client rather than standalone (#5117)# Why Follow up from https://github.com/expo/expo/pull/4839 as the underlying issue remained afterwards (see: https://
[ios] Prompt for scoped permissions in client rather than standalone (#5117)# Why Follow up from https://github.com/expo/expo/pull/4839 as the underlying issue remained afterwards (see: https://twitter.com/elie2222/status/1156297725438304256) # How I believe we meant to check that the appOwnership *is not* `expo` and in that case invoke the allow action, rather than do it when appOwnership *is* `expo`. # Test Plan I tested this locally in Expo client by asking for a permission and forcing it to enter into the undetermined scope state so it would prompt.
[permissions][iOS] Prevent scoped permissions dialog from showing in standalone apps (#4839)# Why Resolves #4680
[ios] Fix all warnings (#4738)# Why Fixes https://github.com/expo/expo/issues/4429. # How - added `Bolts` to `Podfile` to be able to suppress warnings from this specific pod, - added sett
[ios] Fix all warnings (#4738)# Why Fixes https://github.com/expo/expo/issues/4429. # How - added `Bolts` to `Podfile` to be able to suppress warnings from this specific pod, - added setting deployment target for all development pods - went through every warning and fixed # Test Plan The project compiles, Camera works, ImagePicker works ok.
[ios] Make iOS ExpoKit work without unimodules that need to be scoped (#4336)# Why I was unable to build a newly ejected app with ExpoKit for SDK33 without explicitly installing unimodules that
[ios] Make iOS ExpoKit work without unimodules that need to be scoped (#4336)# Why I was unable to build a newly ejected app with ExpoKit for SDK33 without explicitly installing unimodules that are being extended and overriden by scoped modules. # How Added `#if __has_include` macros to check whether the unimodule is installed before we initialize and register scoped modules. # Test Plan Expo Client builds, ExpoKit app without some unimodules work as expected.
[sdk33] Version iOS code for SDK33 (#4249)# Why Step of #4154 # How `gulp ios-add-version --abi 33.0.0` # Test Plan Versioning script passes, project builds and `native-component-li
[sdk33] Version iOS code for SDK33 (#4249)# Why Step of #4154 # How `gulp ios-add-version --abi 33.0.0` # Test Plan Versioning script passes, project builds and `native-component-list` for SDK33 launches as expected.
[unimodules] Remove experience references (#3993)# Why Properly closes https://github.com/expo/expo/pull/3875, fixes https://github.com/expo/expo/issues/3517, fixes https://github.com/expo/expo/
[unimodules] Remove experience references (#3993)# Why Properly closes https://github.com/expo/expo/pull/3875, fixes https://github.com/expo/expo/issues/3517, fixes https://github.com/expo/expo/issues/3864. # How Removed all `experience` references from universal modules, adding scoped implementations to ExpoKit. # Test Plan - [x] NCL works - [x] bare template works