History log of /expo/ios/Exponent/Kernel/Core/EXKernel.h (Results 1 – 25 of 39)
Revision Date Author Comments
# 489c2041 15-Sep-2023 Will Schurman <[email protected]>

[ios] Remove legacy notifications module code (#24325)


# 0502d1f9 18-May-2023 Tomasz Sapeta <[email protected]>

Remove Amplitude from Expo Go (#22523)


# 167fd314 30-Jun-2021 Will Schurman <[email protected]>

[ios] Use stable manifest ID where applicable (#13280)


# 42300cfb 19-Nov-2020 Stanisław Chmiela <[email protected]>

[ios] Migrate installation identifier to non-backed-up storage (#11019)

# Why

- iOS companion for https://github.com/expo/expo/pull/11005.
- https://github.com/expo/expo/pull/11019/commits/1e22e

[ios] Migrate installation identifier to non-backed-up storage (#11019)

# Why

- iOS companion for https://github.com/expo/expo/pull/11005.
- https://github.com/expo/expo/pull/11019/commits/1e22e08195b1b4c49650f8243eeb89b5f938b9a5 fixes https://github.com/expo/expo/issues/11008#issuecomment-726370187 ensuring future versioned `EXInstallationIdProvider`s use the common installation ID

# How

Implemented https://github.com/expo/expo/pull/10261#issuecomment-725396140.

- As in https://github.com/expo/expo/pull/11005, the migration code is present in ~3~2 places:
- ~in `ExpoKit` for managed apps relying on legacy notifications~
- in `expo-constants` for bare workflow apps and for managed workflow apps (`EXKernel` now uses `expo-constants` directly to fetch installation ID)
- in `expo-notifications` for bare workflow apps that for some reason do not get UUID migrated by `expo-constants` (eg. because they do not have `expo-constants` installed or have installed in older version).
- To expose common, migrated `deviceInstallUUID` to versioned `expo-constants` code I've added a simple kernel service plugged into already versioned `EXConstantsBinding`s.

# Test Plan

I have verified (previously) that:
- `Constants.installationId` from running Expo client on `master` is the same as `.installationId` returned when running Expo client on this branch
- `expo-notifications`'s installation ID from running Expo client on `master` is the same as `installationId` returned when running Expo client on this branch
- removing and reinstalling Expo client **does not** generate a different installationId (as we know keychain isn't removed!)
- if we fetch an invalid UUID from the Keychain, new UUID is generated
- I experienced an app freeze once on `__ulock_wait`, when waiting for return from `SecItemCopyMatching` which isn't a common issue and were only a few reports online of

# Test approach #2

Test scenarios for installation identifiers:
- **on an experience running on SDK39 when Expo client upgrades**
- SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey` which is now cleared by migration. Patched `EXConstantsService` uses `EXDeviceInstallUUIDManager` kernel service which provides it with the "common" ID, migrated from the `NSUserDefaults.EXDeviceInstallUUIDKey`, so the value doesn't change. ✅
- SDK39 `EXInstallationIdProvider` used `NSUserDefaults.ABI39_0_0EXDeviceInstallUUIDKey` which is not cleared by any migration. **Identifier keeps being backed-up** but it doesn't change. ⚠️
- **when an experience using SDK39 upgrades to SDK40 in Expo client**
- SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey` which got migrated to keychain. SDK40 `EXConstantsService` uses the same keychain entry as the migrator, so they're using the same value. ✅
- SDK39 `EXInstallationIdProvider` used `NSUserDefaults.ABI39_0_0EXDeviceInstallUUIDKey` while SDK40 uses common device UUID the sources are obviously different. Token changes. ❌ This is a bug introduced with `expo-notifications` Expo client integration, we can't do anything about it apart from fixing it in SDK40, IDs for old SDKs are already created and will be used in corresponding SDKs and if we didn't do anything about it in SDK40, the ID per experience would change nonetheless, so let's change it this time for the last time.
- when standalone app using SDK39 upgrades to SDK40
- Unversioned SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey` which gets migrated to keychain, unversioned SDK40 `EXConstantsService` uses the same keychain entry as common UUID, no changes. ✅
- Unversioned SDK39 `EXInstallationIdProvider` used `NSUserDefaults.EXDeviceInstallUUIDKey` which gets migrated to keychain, unversioned SDK40 `EXInstallationIdProvider` uses the same keychain entry as common UUID, no changes. ✅
- when an SDK39 project ejects to bare
- SDK39 `EXConstantsService` used `NSUserDefaults.EXDeviceInstallUUIDKey`, the same which is used in bare, ✅
- SDK39 `EXInstallationIdProvider` used `NSUserDefaults.EXDeviceInstallUUIDKey` in standalone apps, but `NSUserDefaults.ABI39_0_0EXDeviceInstallUUIDKey` in Expo client. Token changes on developers' devices. ⚠️
- when an SDK40 project ejects to bare
- SDK40 `EXConstantsService` used `EXDeviceInstallUUIDKey` keychain entry, the same which is used in bare, ✅
- SDK40 `EXInstallationIdProvider` used `EXDeviceInstallUUIDKey` keychain entry, the same which is used in bare (`EXDeviceInstallUUIDKey`), ✅
- when a bare project upgrades `expo-notifications` or `expo-constants`
- both projects have migrators that move `EXDeviceInstallUUIDKey` value from `NSUserDefaults` to keychain, token doesn't change. ✅

show more ...


# b8e86ac0 06-May-2020 Tomasz Sapeta <[email protected]>

[ios][et] Remove Fabric and Crashlytics on iOS (#8160)

# Why

Part of #8047 - not closing yet because I'm gonna make separate PR for Android.

# How

I removed:
- Fabric and Crashlytics from

[ios][et] Remove Fabric and Crashlytics on iOS (#8160)

# Why

Part of #8047 - not closing yet because I'm gonna make separate PR for Android.

# How

I removed:
- Fabric and Crashlytics from `Podfile` and run `pod install`.
- code calling Fabric & Crashlytics libraries.
- `et ios-run-fabric` command and its `run-fabric.sh` build phase in general.
- modifying `Info.plist` while generating dynamic macros, it was used only to apply fabric's api key.
- `et ios-cleanup-dynamic-macros` command - no longer needed if we don't modify `Info.plist`.
- Fabric's key from `Info.plist`.

## Side notes

Previously, once Crashlytics detects a crash, we set a flag in user defaults and then if that flag is set we invalidated cached kernel's bundle. After these changes, kernel's bundle won't be invalidated. I chatted with James and he agrees that we actually don't need this anymore.

# Test Plan

Xcode project builds and works as expected.

show more ...


# 05aa4e6c 04-May-2020 Tomasz Sapeta <[email protected]>

[ios] Fix dev menu classes being used in detached mode


# f67462bc 21-Apr-2020 Tomasz Sapeta <[email protected]>

[ios][home] Add three finger gesture to open the dev menu + some refactoring (#7891)

# Why

Fixes #7644 and brings us closer to the separate `expo-dev-menu` package that can live without kernel.

[ios][home] Add three finger gesture to open the dev menu + some refactoring (#7891)

# Why

Fixes #7644 and brings us closer to the separate `expo-dev-menu` package that can live without kernel.
Also fixed https://twitter.com/bantingGamer/status/1251154340129062917

# How

- Added `EXDevMenuManager` singleton that manages the dev menu. Most parts of it were in kernel or some others classes strongly connected with kernel. Now, kernel is just its delegate.
- Refactored `EXKernelDevMotionHandler` to `EXDevMenuMotionInterceptor` which is much clearer and makes it possible to uninstall the interceptor (these interceptors are kinda hacky, I tried not to do them this way but well, RN does the same ��).
- Added `EXDevMenuGestureRecognizer` for long press gesture, with minimum press duration set to 0.5s and with light impact haptic feedback.
- Added `EXDevMenuGestureInterceptor` that swaps the default implementation of `UIView#gestureRecognizers`, but only for `UIWindow`s. This is needed to make three-finger gesture work everywhere in the app.
- Renamed `EXMenuViewController` to `EXDevMenuViewController` (all dev menu classes should be prefixed by `EXDevMenu`) and again, removed some connections to kernel.
- Added UI in user settings to select dev menu gestures (can select them separately).
- Fixed an issue with dev menu view being below modals in the view hierarchy.

# Test Plan

So far I've tested it only with published experience. I'm gonna do smoke tests on dev apps later.
I mostly focused on testing whether:
- the dev menu works in general (after refactoring)
- three-finger gesture works on the initial screen of the app, on the modals and on the dev menu itself
- all combinations of selected gestures work as expected
- selected gestures persist after killing and relaunching the client

show more ...


# b333b418 08-Nov-2019 Brent Vatne <[email protected]>

[ios][android] Make redbox and rr (android) and cmd+r (ios) reload manifest and JS rather than just JS (#6134)

* [ios] Make cmd+r reload manifest and JS rather than just JS

* [ios] Reload from de

[ios][android] Make redbox and rr (android) and cmd+r (ios) reload manifest and JS rather than just JS (#6134)

* [ios] Make cmd+r reload manifest and JS rather than just JS

* [ios] Reload from dev menu grabs manifest too

* [ios] Clean up reload code and ensure redbox injection code works outside of developer mode

* [android] Reload on dev menu also reloads from manifest

* [ios] Fix typo

* [android] Reload from manifest from redbox and with rr shortcut

* [android] Address feedback

* [react-native-lab] Copy changes to ReactAndroid over

* [android] Clean up extra newlines

* [react-native-lab] Update on sdk-36 branch

show more ...


# 4d0e0805 01-Feb-2019 Eric Samelson <[email protected]>

[ios][home] remove deprecated client-side authentication checks for opening projects


# 7100de8c 03-Dec-2018 Szymon20000 <[email protected]>

[ios] Upgrade notifications framework to User Notifications Framework (#2316)

* Updated notifications

Moved new permissions files to packages

fix

updated yarn.lock

fixes

Requested cha

[ios] Upgrade notifications framework to User Notifications Framework (#2316)

* Updated notifications

Moved new permissions files to packages

fix

updated yarn.lock

fixes

Requested changes

fix after rabase

Made requested changes

Renamed UserNotificationCenterProxy classes

Run `pod install`

* Post-review fixes

* Minor JS fixes

* Do not remember pending notifications in Expo Client (behavior matching previous one)

* Prevent blocking main queue at all times by EXUserNotificationRequester

* Do not scope categories identifiers in ejected applications

* Apply review comments

* Remove obsolete if condition

* Do not store resolver and rejecter in EXUserNotificationRequester

* Update Pods

* Add support for deleting custom notification categories

* Pass notification to a remembered experience when tapped a notification in backgrounded Expo Client

* Update jest-expo mocks

* Ensure permissions consuming happens on permissions queue in EXRemoteNotificationRequester

* Do not scope notification identifiers

* Change cancelScheduledNotification into cancelScheduledNotificationAsync returning native Promise

* Deny scheduleNotificationAsync with both time and repeat set on iOS

* Allow scheduleNotificationAsync with both time and repeat set on iOS using deprecated UILocalNotification

* Add more notification testing buttons to NCL

* Export EXUserNotificationManager service as kernel service

* Add EXNotificationsIdentifiersManager protocol capable of scoping and unscoping identifiers

* Require both RemoteNotificationManager and UserNotificationManager in EXNotifications module

* Scope and unscope action identifiers by EXUserNotificationManager

* Update pods

show more ...


# d699b379 01-May-2018 Ben Roth <[email protected]>

Fix passing initial notif props to standalone/ExpoKit

See: https://github.com/expo/expo/issues/1691

fbshipit-source-id: 5df7144


# 9777fddb 16-Apr-2018 Eric Samelson <[email protected]>

add `Updates.reloadFromCache` (#2315)

* [android][sdk][docs] added Updates.reloadFromCache() on android

* [ios] some slight renaming and refactoring in AppLoader to make manifest usage somewhat cle

add `Updates.reloadFromCache` (#2315)

* [android][sdk][docs] added Updates.reloadFromCache() on android

* [ios] some slight renaming and refactoring in AppLoader to make manifest usage somewhat clearer

* [ios] add Updates.reloadFromCache to ios

fbshipit-source-id: 0a0321e

show more ...


# 2f2bf1c0 11-Apr-2018 Ben Roth <[email protected]>

Show clearer information on Expo Client error screen for trying to load an app belonging to a different account

see: https://github.com/expo/universe/issues/2251

fbshipit-source-id: 8e79e5b


# 00b26551 07-Mar-2018 James Ide <[email protected]>

Use the new push/getExpoPushToken endpoint with new www client

This is a rewrite of how device tokens are registered and sent to our server. There are several changes:
- It uses the new `push/getExp

Use the new push/getExpoPushToken endpoint with new www client

This is a rewrite of how device tokens are registered and sent to our server. There are several changes:
- It uses the new `push/getExpoPushToken` endpoint that both saves the APNs device token and returns an Expo push token.
- *Breaking change:* Notifications.getExpoPushToken will throw if the app doesn't have permission to show notifications, instead of returning an Expo push token (that would later fail when trying to send to it).
- It saves the token in NSUserDefaults only when it has successfully been registered, allowing us to skip re-registering with our server if the token hasn't changed across app starts.
- More detailed error info, should we need it
- Looked over the thread-safety of EXRemoteNotificationManager -- all ivar access happens on the same queue now (which is the main queue, for now, until we leave the deprecated UIApplication API for UserNotifications instead).

Fixes #764

fbshipit-source-id: cb15b20

show more ...


# 85f025b0 08-Mar-2018 Ben Roth <[email protected]>

Restore analytics behavior

fbshipit-source-id: 51ce815


# e7ac6e4f 08-Mar-2018 Ben Roth <[email protected]>

Restore ErrorRecovery and clean up visible/invisible app interface

fbshipit-source-id: 917ce6f


# 928bc3ba 07-Mar-2018 Ben Roth <[email protected]>

Restore Util.reload in standalone and ExpoKit

fbshipit-source-id: d2bd70c


# 89fd6b24 06-Mar-2018 Ben Roth <[email protected]>

restore ExpoKit project wiring

fbshipit-source-id: 14b07c5


# 66169681 05-Mar-2018 Ben Roth <[email protected]>

Support JS nux, clean up JS loaded notifs

fbshipit-source-id: b3721f2


# 2fcba380 03-Mar-2018 Ben Roth <[email protected]>

support QR code reader from menu

fbshipit-source-id: ebf9f40


# c01e3d9c 03-Mar-2018 Ben Roth <[email protected]>

clean up loading cases

fbshipit-source-id: fef4e8f


# b987b50f 03-Mar-2018 Ben Roth <[email protected]>

restores full menu functionality except QR button

fbshipit-source-id: 8370f90


# c67a7dcd 02-Mar-2018 Ben Roth <[email protected]>

support routing notifications

fbshipit-source-id: 49aa8ea


# f5e2fbc5 02-Mar-2018 Ben Roth <[email protected]>

restore linking, util.reload, initial uri, and initial props behavior

fbshipit-source-id: 0c15c1b


# d5216206 01-Mar-2018 Ben Roth <[email protected]>

add loading view, loading progress, restore splash, consolidate view controllers

fbshipit-source-id: 2e0cfb3


12