Skip to content

Conversation

IjzerenHein
Copy link
Contributor

Why

This PR adds a Pure JS Firebase Analytics module to expo-firebase-analytics, which is used on the standard Expo Client to log events. Using Firebase Analytics is otherwise not possible as the firebase JS SDK Analytics module requires browser features, and the native Firebase SDK requires a google-services file to be bundled with the app, and cannot be (re-)initialized correctly.

The pure JS implementation makes it possible for users to use and test firebase analytics without having to create a standalone build or use a custom client.

How

A Pure JS Firebase Analytics implementation was created which uses the Google Measurement Protocol version 2. This protocol is used by the gtag.js/firebase-sdk itself and communicates with the https://www.google-analytics.com domain. This protocol is not officially documented by Google yet, so it may be affected by API changes in the future.
In order to log events to the Google Analytics server, a measurementId is needed. This can be configured in app.json, through the new web.config.firebase key.

Test Plan

Some manual steps need to be performed in order to test this using the test-suite.
I've been working on getting google-services config dynamically linked in test-suite using app.config.js but that is not ready yet and requires updates to expo-cli.

  • Follow the steps to setup "native" firebase with the test-suite
  • Make sure to include the web-configuration
  • Open the project on the standard Expo Client
  • Run the "Firebase Analytics" tests
  • After a short while (couple mins at most) the Analytics events show up in your firebase project

@IjzerenHein IjzerenHein changed the title @hein/expo firebase/analytics js [firebase-analytics] Add pure JS analytics for use on Expo Client Feb 18, 2020
@brentvatne
Copy link
Member

A Pure JS Firebase Analytics implementation was created which uses the Google Measurement Protocol version 2. This protocol is used by the gtag.js/firebase-sdk itself and communicates with the https://www.google-analytics.com domain. This protocol is not officially documented by Google yet, so it may be affected by API changes in the future.

It might be worth reaching out to the Firebase team and letting them know that we plan on using this and what for, just so that they are aware. That said, given that it's used by those gtag.js/firebase-sdk I doubt they will make abrupt breaking changes without reasonable warning / chance to upgrade.

@IjzerenHein
Copy link
Contributor Author

A Pure JS Firebase Analytics implementation was created which uses the Google Measurement Protocol version 2. This protocol is used by the gtag.js/firebase-sdk itself and communicates with the https://www.google-analytics.com domain. This protocol is not officially documented by Google yet, so it may be affected by API changes in the future.

It might be worth reaching out to the Firebase team and letting them know that we plan on using this and what for, just so that they are aware. That said, given that it's used by those gtag.js/firebase-sdk I doubt they will make abrupt breaking changes without reasonable warning / chance to upgrade.

I've posted an issue on the firebase-js-sdk repo:
firebase/firebase-js-sdk#2644

@IjzerenHein IjzerenHein force-pushed the @hein/expo-firebase/analytics branch from dade76c to 3f1291b Compare February 19, 2020 17:22
@IjzerenHein IjzerenHein force-pushed the @hein/expo-firebase/analytics-js branch from 829e324 to db8bfb2 Compare February 19, 2020 17:28
@ExpoBot
Copy link

ExpoBot commented Feb 19, 2020

Warnings
⚠️

You modified sdk/firebase-analytics.md in the unversioned directory. Please consider copying the changes to the latest released version if applicable.

Generated by 🚫 dangerJS against 635796a

@IjzerenHein IjzerenHein force-pushed the @hein/expo-firebase/analytics branch from 3f1291b to c3f7d25 Compare February 20, 2020 10:14
@IjzerenHein IjzerenHein force-pushed the @hein/expo-firebase/analytics-js branch from db8bfb2 to 616beb4 Compare February 20, 2020 13:59
@IjzerenHein IjzerenHein force-pushed the @hein/expo-firebase/analytics branch from c3f7d25 to 80c1f6b Compare February 21, 2020 10:26
@IjzerenHein IjzerenHein force-pushed the @hein/expo-firebase/analytics-js branch from 616beb4 to 635796a Compare February 21, 2020 15:02
@brentvatne
Copy link
Member

it seems like there is some risk that the measurement protocol v2 will change without warning, but i think this is fine:

  • this would only impact expo client and we can roll out and update to this library easily since it's just js
  • we have a dialogue open with firebase to get more info about it and also for supporting multiple apps with native analytics
  • it's the best workaround that we can think of so far

@brentvatne brentvatne merged commit 1228cce into @hein/expo-firebase/analytics Feb 21, 2020
@brentvatne brentvatne deleted the @hein/expo-firebase/analytics-js branch February 21, 2020 18:07
@brentvatne brentvatne restored the @hein/expo-firebase/analytics-js branch February 21, 2020 18:37
brentvatne added a commit that referenced this pull request Feb 21, 2020
brentvatne pushed a commit that referenced this pull request Feb 21, 2020
)

* [firebase-analytics] WIP js analytics

* [firebase-analytics] Add Pure JS FirebaseAnalytics (wip, 80% done)

* [firebase-analytics] Add pure JS Firebase Analytics (done)

* [firebase-analytics] Update & integrate Pure JS Analytics tracker

* [docs] Add instruction on how to use firebase analytics on Expo Client

* [firebase-analytics] Fixes after review feedback

* [firebase-analytics] Update JS build files

* [firebase-analytics] Update analytics-js to use DEFAULT_WEB_APP_OPTIONS

* [firebase-analytics] Update JS build files

* [firebase-analytics] Add recording of `screen_view` events on Expo client, when calling `setCurrentScreen`

This mimics the behavior on Native, when calling setCurrentScreen also records a screen-view event.

Note that this is different from the Firebase JS SDK, which does not record a screen-view event, and requires `logEvent` to be called manually.

* [firebase-analytics] Update JS build files
ccheever added a commit that referenced this pull request Mar 2, 2020
I made some updates to the guide for using custom fonts.

Changes include:
- Using Snacks for examples
- Using the `useFonts` hook for a simpler example
- Example of loading a remote font
- Discussion of font formats

Squashed commits below

* [android] 🤏 Update react-native-gesture-handler to 1.6.0 (#7121)

# Why

Part of #7006 

# How

- Used `et update-vendored-module` to update `react-native-gesture-handler`.
- Updated versions in some apps.
- Tried to run it on Android... and it turned out there is a new `RNGHModalUtils` file scoped under `com.facebook.react` package so I've copied this file manually to appropriate directory in `expoview`.
- Added a warning saying that `com.facebook.react` needs to be manually updated, we already do the same in `react-native-reanimated`.
- Added changelog entry.

# Test Plan

Tested examples in `native-component-list`.

* [constants] make installationId available in bare (#6906)

* [constants] make available in bare

* make filename constant

* remove installationId from scoped android module

* remove installationId from scoped ios

* fix ios_test_suite

* fix app auth code block (#7138)

* fix app auth code block

* Update app-auth.md

* Update app-auth.md

* [ios][expo-constants] remove duplicate symbol kEXDeviceInstallUUIDKey to fix iOS client build

* Updated linking.md (#7136)

* Updated linking.md

Updated description for WebBrowser to follow latest changes.

* Tidy up docs

Less `const fn = () => `, function keyword is usually better

Co-authored-by: James Ide <ide@users.noreply.github.com>

* [android][home] 🤖 Add DevMenu on Android (#6829)

# Why

Fixes #6521 

# How

- Created unversioned `DevMenuManager` class which mostly just delegates calls to versioned `DevMenuModule` modules specific for SDK version. These modules are responsible for providing initial props, dev menu options and actions to run when these options are selected. The manager creates a new `ReactRootView` that bases on kernel's (home's) React instance manager and starts `HomeMenu` app which is registered as a second entry point in `home` and then, manager adds this root view to the currently used activity (it must implement `ExperienceActivity`). As I needed to know which experience activity is the current one, I've added `sCurrentActivity` static member to that class and just track it using activity's lifecycle methods.
- Backported `DevMenuModule` to all SDK versions included in the client. Including some changes between them - for example hot and fast reloading.
- Added support for back button and Android's menu press (which can be simulated by `adb shell input keyevent 82`).
- Removed some unused code related to `Nux` and replaced it with new onboarding screen (see #6793).
- Created new `ShakeDetector` which works more like on iOS. The one provided by React Native is annoying in most cases as it actually requires two shakes.
- Updated `ReactAndroidCodeTransformer` to turn off showing React Native dev menu in non-standalone apps.
- **To do after merging:** Rebuild versioned expoviews.

# Test Plan

- [x] Test on experience in debug mode
- [x] Test on experience in production mode
- [x] Test on snacks
- [x] Test on older SDKs
- [x] Test on simulators
- [x] Test that onboarding shows up once you open the experience for the first time or you didn't accept it yet (clicked `Got it` button).
- [x] Test that using dev menu still works once we kill home's activity.

* [home] 🏠 Publish new dev home

* [auth-session] Extract AuthSession into unimodule (#6989)

* [expo-auth-session] Extract

* [expo-auth-session] Remove from the expo package

* [expo-auth-session] Add bare support

* [expo-auth-session] Refactor

* [expo-auth-session] Fix CI

* [expo-auth-session] Update CHANGELOG

* [expo-auth-session] Apply requested changes

* [expo-auth-session] Update README

* [expo-auth-session] Update documentation

* [expo-auth-session] apply requested changes

* [auth-session] Fix CI

* run yarn

* [expo-screen-orientation] Update documentation (#6838)

* [expo-screen-orientation] Update docs & add checks to lockPlatfomAsync on iOS

* [expo-screen-orientation] Update installation instruction

* [expo-screen-orientation] Fix quotations marks

* [expo-screen-orientation] Update changelog

* [expo-screen-orientation] Apply requested changes

* [screen-orientation] Apply requested changes

* [screen-orientation] Apply requested changes

* [screen-orientation] Apply requested changes

* [firebase-core] Add core functionality for supporting native Firebase packages (#7013)

* [bare-expo] Fix database-url in GoogleService-Info.plist

* [firebase-core] Add `expo-firebase-core` package

* [firebase-core] Add tests to test-suite

* [firebase-core] Add scoped firebase-core to Expo client to create native sandboxed firebase apps

* [firebase-core] Update bare-expo BasePackageList

* [firebase-core] Add firebase-core to bundledNativeModules.json

* [firebase-core] Add SDK documentation

* [firebase-core] Add firebase-core to Expo client iOS project file

* [firebase-core] Add js build files

* [firebase-core] Update SDK doc to refer to native firebase guide

* [firebase-core] Add web-support & code cleanup

* [docs] Fixes to firebase-core docs

* [firebase-core] Update build files

* [firebase-core] Fix test in test-suite

* [fireabase-core] Cleanup COMPARISON.md

* [firebase-core] Improve google-services.json parsing and client selection

* [firebase-core] Updated SDK docs

* [fireabse-core] Update readme description

* [firebase-core] Removed outcommented line on Android

* [firebase-core] Minor iOS code improvements after review

* [firebase-core] Fixes after review to unit tests

* [firebase-core] Updated iOS code after review feedback

* [firebase-core] Fix tests

* [firebase-core] Simplify JS code

* [firebase-core] Update js build output

* [fireabse-core] Add DEFAULT_WEB_APP_OPTIONS constant + doc improvements

* [firebase-core] Update JS build files

* [firebase-core] Fix unimodulePeerDependencies in package.json

* [firebase-core] Android build.gradle fixes

* [firebase-core] Android base64 encoding code improvement

* [firebase-core] Prevent hard javascript import error when native lib not linked

* [firebase-core] Update various Android methods to be protected i.s.o. public

* [firebase-core] Android protected DEFAULT_APP_NAME and re-use in scoped

* [firebase-core] Update changelog

* [fireabse-core] Update JS build files

* [firebase-android] Fix Firebase App cleanup when multiple projects are loaded on Android

* [ios] Update pods

* [firebase-analytics] Add native Firebase Analytics (#7017)

* [firebase-core] Add tests to test-suite

* [fireabse-analytics] Add expo-firebase-analytics package

* [firebase-core] Add firebase-core to Expo client iOS project file

* [firebase-analytics] Add tests to test-suite

* [bare-expo] Update iOS app-icon assets

* [firebase-analytics] Add expo-firebase-analytics to Expo client

* [bare-expo] Add firebase-analytics to BasePackageList.java

* [firebase-analytics] Add firebase-analytics to bundleNativeModules.json

* [docs] Add firebase-analytics docs

* [firebase-analytics] Update yarn.lock after adding `firebase` (js sdk) dependency

* [firebase-analytics] Add js build output

* [firebase-analytics] Update sdk docs

* [firebase-analytics] Update SDK docs

* [firebase-analytics] Remove firebase JS dep to check CI

* [docs] Update SDK docs & readme for expo-firebase-analytics

* [expo-analytics] Remove firebase peer-dependency

* [firebase-analytics] Add web-support & code cleanup

* [docs] Update firebase-analytics docs

* [firebase-analytics] Update build files

* [firebase-analytics] Fix outdated build files

* [firebase-analytics] Fix lint warnings

* [firebase-analytics] Fixed code-style errors & typos after review

* [firebase-analytics] Moved `unimodulePeerDependencies` to regular peerDependencies in package.json

* [firebase-analytics] Update js build output

* [fireabse-analytics] Update changelog

* [firebse-analytics] Update Android build.gradle

* [ios] Update pods

* [firebase-analytics] Add recording of `screen_view` event when calling `setCurrentScreen`

On web, calling `setCurrentScreen` does not automatically record a screen_view event as
it does on native. We therefore record the 'screen_view' event manually.
https://stackoverflow.com/questions/59330467/how-to-track-page-view-with-firebase-analytics-in-a-web-single-page-app

* [firebase-analytics] Update JS build files

* [firebase-analytics] Remove @unimodules/core peerDependency from package.json

* [docs] Add firebase web-config to app.json docs (#7086)

* [firebase-analytics] Add pure JS analytics for use on Expo Client (#7093)

* [firebase-analytics] WIP js analytics

* [firebase-analytics] Add Pure JS FirebaseAnalytics (wip, 80% done)

* [firebase-analytics] Add pure JS Firebase Analytics (done)

* [firebase-analytics] Update & integrate Pure JS Analytics tracker

* [docs] Add instruction on how to use firebase analytics on Expo Client

* [firebase-analytics] Fixes after review feedback

* [firebase-analytics] Update JS build files

* [firebase-analytics] Update analytics-js to use DEFAULT_WEB_APP_OPTIONS

* [firebase-analytics] Update JS build files

* [firebase-analytics] Add recording of `screen_view` events on Expo client, when calling `setCurrentScreen`

This mimics the behavior on Native, when calling setCurrentScreen also records a screen-view event.

Note that this is different from the Firebase JS SDK, which does not record a screen-view event, and requires `logEvent` to be called manually.

* [firebase-analytics] Update JS build files

* [iOS][notifications] feature: customize notification preview placeholders (#7052)

* [ios] add handling for previewPlaceholder

* fix on android

* update docs

* feedback: mark api availability

* resolve conflict

* Update docs/pages/versions/unversioned/sdk/notifications.md

Co-Authored-By: James Ide <ide@users.noreply.github.com>

* fix typo

* fix ci errors for expo package

Co-authored-by: James Ide <ide@users.noreply.github.com>

* [camera][iOS] Reject from takePictureAsync if camera is not ready (#7144)

# Why

Resolves #3020

Calling [camera#takePictureAsync](https://docs.expo.io/versions/latest/sdk/camera/#takepictureasync) should reject if [camera#onCameraReady](https://docs.expo.io/versions/latest/sdk/camera/#oncameraready) callback wasn't called before (native camera isn't ready yet), while now call is silently lost and promise is neither resolved nor rejected.

# How

Reject from `camera.takePictureAsync` if native camera is not ready yet.

# Test Plan

[snack](https://snack.expo.io/@bbarthec/github---camera---ios---takepictureasync)

* [android][ncl] Update @react-native-community/masked-view to 0.1.6

* [android][ios][ncl] Update @react-native-community/viewpager to 3.3.0

* [android][ios][ncl][bare-expo] Update react-native-reanimated to 1.7.0

* [android][ios][ncl] Update react-native-svg to 11.0.1

* [android][ios][ncl] Updated react-native-webview to 8.1.1

* [expo] Update react-native-view-shot to 3.1.2

* [expotools] fix update-vendored-module for react-native-appearance

* [android][ncl][home] Update react-native-appearance to 0.3.2

* [android][ios][ncl][bare-expo] Update react-native-safe-area-context to 0.7.3

* [ios] fix improperly namespaced import in RNSVGForeignObject

* [bare-expo] reinstall pods

* [android][location] Fixed NPE crash when mTask is made null mid-process. (#7147)

* Remove ANY_HOSTNAME_VERIFIER from Android app-auth debug connection builder (#7152)

* Change constant declaration to static ot aviod duplication of symbols. (#7161)

* [image-picker] Prevent from reloading on OnePlus 7 (#7162)

# Why

Resolves #5804.

# How

Create the output file before open the camera intent.

# Test Plan

- NCL ✅
- #5804 (comment) ✅

* [test-suite] Fix test-suite error on start (#7163)

# Why

Dismissing error screen on every refresh can be daunting after some time (when running in `bare-expo`).

# How

- added `try`-`catch` around calls to missing Facebook Ads module
- added `if (ExpoTaskManager)` around `eventEmitter.addListener`, since event name is fetched as a constant of the module which may be `undefined`
- moved `require(testScreen)` which define tasks to _initialization phase_
- moved `require(cameraScreen)` to global scope since I feel `optionalRequire` only works in global scope (and well, it let me get rid of red screen)

# Test Plan

Running `bare-expo` does not show error screen.

* [image-picker] Remove unused header import (#7168)

# Why

Resolves #7167.

# How

Remove unused import.

# Test Plan

- ios build ✅

* [docs] add permissions methods to api list (#7053)

* add permissions methods to api list

* add requestPermissionsAsync and getPermissionsAsync methods to TOC

* Suggestion in sentry guide (#7157)

* Suggestion in sentry guide

* identical changes to v36.0.0 docs

* [android][task-manager] Task manager for bare in Expo (#6828)

Task manager for bare android and iOS applications.

* [docs] fix app signing page (#7171)

* [docs] fix app signing page

* unversioned

* typo

* [android] remove SDK 33 code re-committed after 38ccf62

* [docs] Update ‘using-firebase’ guide with Analytics section (#7145)

* [docs] Update ‘using-firebase’ guide with Analytics section

* [docs] Add missing `expo-firebase-core` dep to ‘usinig-firebase’ doc

* Update docs/pages/versions/unversioned/guides/using-firebase.md

Co-Authored-By: Brent Vatne <brentvatne@gmail.com>

* [jest-expo-enzyme] publish 1.0.0

* Update expo-module-scripts dependency (#7175)

* [docs] Custom fonts guide update

Work in progress

* [docs] Updating guide to using custom fonts

I made some updates to the guide for using custom fonts.

Changes include:
- Using Snacks for examples
- Using the `useFonts` hook for a simpler example
- Example of loading a remote font
- Discussion of font formats

* Update docs/pages/versions/unversioned/guides/using-custom-fonts.md

Co-Authored-By: Brent Vatne <brentvatne@gmail.com>

* Update docs/pages/versions/unversioned/guides/using-custom-fonts.md

Co-Authored-By: Cedric van Putten <me@bycedric.com>

* Update docs/pages/versions/unversioned/guides/using-custom-fonts.md

Co-Authored-By: Brent Vatne <brentvatne@gmail.com>

Co-authored-by: Tomasz Sapeta <1714764+tsapeta@users.noreply.github.com>
Co-authored-by: Charlie Cruzan <35579283+cruzach@users.noreply.github.com>
Co-authored-by: Evan Bacon <baconbrix@gmail.com>
Co-authored-by: Eric Samelson <esamelson@users.noreply.github.com>
Co-authored-by: Saumya Sharma <saumyasharma010@gmail.com>
Co-authored-by: James Ide <ide@users.noreply.github.com>
Co-authored-by: Łukasz Kosmaty <lukasz.kosmaty@student.uj.edu.pl>
Co-authored-by: Dominik Sokal <dominiksokal@gmail.com>
Co-authored-by: Hein Rutjes <IjzerenHein@users.noreply.github.com>
Co-authored-by: Bartłomiej Bukowski <bartlomiejbukowski.b@gmail.com>
Co-authored-by: briefjudofox <1484049+briefjudofox@users.noreply.github.com>
Co-authored-by: Michał Czernek <czernekmichal@gmail.com>
Co-authored-by: Stanisław Chmiela <sjchmiela@users.noreply.github.com>
Co-authored-by: Ziv Levy <zivl@users.noreply.github.com>
Co-authored-by: Nishant Singh <saysnishant@gmail.com>
Co-authored-by: Brent Vatne <brentvatne@gmail.com>
Co-authored-by: Cedric van Putten <me@bycedric.com>
bbarthec added a commit that referenced this pull request Mar 3, 2020
I made some updates to the guide for using custom fonts.

Changes include:
- Using Snacks for examples
- Using the `useFonts` hook for a simpler example
- Example of loading a remote font
- Discussion of font formats

Squashed commits below

* [android] 🤏 Update react-native-gesture-handler to 1.6.0 (#7121)

# Why

Part of #7006 

# How

- Used `et update-vendored-module` to update `react-native-gesture-handler`.
- Updated versions in some apps.
- Tried to run it on Android... and it turned out there is a new `RNGHModalUtils` file scoped under `com.facebook.react` package so I've copied this file manually to appropriate directory in `expoview`.
- Added a warning saying that `com.facebook.react` needs to be manually updated, we already do the same in `react-native-reanimated`.
- Added changelog entry.

# Test Plan

Tested examples in `native-component-list`.

* [constants] make installationId available in bare (#6906)

* [constants] make available in bare

* make filename constant

* remove installationId from scoped android module

* remove installationId from scoped ios

* fix ios_test_suite

* fix app auth code block (#7138)

* fix app auth code block

* Update app-auth.md

* Update app-auth.md

* [ios][expo-constants] remove duplicate symbol kEXDeviceInstallUUIDKey to fix iOS client build

* Updated linking.md (#7136)

* Updated linking.md

Updated description for WebBrowser to follow latest changes.

* Tidy up docs

Less `const fn = () => `, function keyword is usually better

Co-authored-by: James Ide <ide@users.noreply.github.com>

* [android][home] 🤖 Add DevMenu on Android (#6829)

# Why

Fixes #6521 

# How

- Created unversioned `DevMenuManager` class which mostly just delegates calls to versioned `DevMenuModule` modules specific for SDK version. These modules are responsible for providing initial props, dev menu options and actions to run when these options are selected. The manager creates a new `ReactRootView` that bases on kernel's (home's) React instance manager and starts `HomeMenu` app which is registered as a second entry point in `home` and then, manager adds this root view to the currently used activity (it must implement `ExperienceActivity`). As I needed to know which experience activity is the current one, I've added `sCurrentActivity` static member to that class and just track it using activity's lifecycle methods.
- Backported `DevMenuModule` to all SDK versions included in the client. Including some changes between them - for example hot and fast reloading.
- Added support for back button and Android's menu press (which can be simulated by `adb shell input keyevent 82`).
- Removed some unused code related to `Nux` and replaced it with new onboarding screen (see #6793).
- Created new `ShakeDetector` which works more like on iOS. The one provided by React Native is annoying in most cases as it actually requires two shakes.
- Updated `ReactAndroidCodeTransformer` to turn off showing React Native dev menu in non-standalone apps.
- **To do after merging:** Rebuild versioned expoviews.

# Test Plan

- [x] Test on experience in debug mode
- [x] Test on experience in production mode
- [x] Test on snacks
- [x] Test on older SDKs
- [x] Test on simulators
- [x] Test that onboarding shows up once you open the experience for the first time or you didn't accept it yet (clicked `Got it` button).
- [x] Test that using dev menu still works once we kill home's activity.

* [home] 🏠 Publish new dev home

* [auth-session] Extract AuthSession into unimodule (#6989)

* [expo-auth-session] Extract

* [expo-auth-session] Remove from the expo package

* [expo-auth-session] Add bare support

* [expo-auth-session] Refactor

* [expo-auth-session] Fix CI

* [expo-auth-session] Update CHANGELOG

* [expo-auth-session] Apply requested changes

* [expo-auth-session] Update README

* [expo-auth-session] Update documentation

* [expo-auth-session] apply requested changes

* [auth-session] Fix CI

* run yarn

* [expo-screen-orientation] Update documentation (#6838)

* [expo-screen-orientation] Update docs & add checks to lockPlatfomAsync on iOS

* [expo-screen-orientation] Update installation instruction

* [expo-screen-orientation] Fix quotations marks

* [expo-screen-orientation] Update changelog

* [expo-screen-orientation] Apply requested changes

* [screen-orientation] Apply requested changes

* [screen-orientation] Apply requested changes

* [screen-orientation] Apply requested changes

* [firebase-core] Add core functionality for supporting native Firebase packages (#7013)

* [bare-expo] Fix database-url in GoogleService-Info.plist

* [firebase-core] Add `expo-firebase-core` package

* [firebase-core] Add tests to test-suite

* [firebase-core] Add scoped firebase-core to Expo client to create native sandboxed firebase apps

* [firebase-core] Update bare-expo BasePackageList

* [firebase-core] Add firebase-core to bundledNativeModules.json

* [firebase-core] Add SDK documentation

* [firebase-core] Add firebase-core to Expo client iOS project file

* [firebase-core] Add js build files

* [firebase-core] Update SDK doc to refer to native firebase guide

* [firebase-core] Add web-support & code cleanup

* [docs] Fixes to firebase-core docs

* [firebase-core] Update build files

* [firebase-core] Fix test in test-suite

* [fireabase-core] Cleanup COMPARISON.md

* [firebase-core] Improve google-services.json parsing and client selection

* [firebase-core] Updated SDK docs

* [fireabse-core] Update readme description

* [firebase-core] Removed outcommented line on Android

* [firebase-core] Minor iOS code improvements after review

* [firebase-core] Fixes after review to unit tests

* [firebase-core] Updated iOS code after review feedback

* [firebase-core] Fix tests

* [firebase-core] Simplify JS code

* [firebase-core] Update js build output

* [fireabse-core] Add DEFAULT_WEB_APP_OPTIONS constant + doc improvements

* [firebase-core] Update JS build files

* [firebase-core] Fix unimodulePeerDependencies in package.json

* [firebase-core] Android build.gradle fixes

* [firebase-core] Android base64 encoding code improvement

* [firebase-core] Prevent hard javascript import error when native lib not linked

* [firebase-core] Update various Android methods to be protected i.s.o. public

* [firebase-core] Android protected DEFAULT_APP_NAME and re-use in scoped

* [firebase-core] Update changelog

* [fireabse-core] Update JS build files

* [firebase-android] Fix Firebase App cleanup when multiple projects are loaded on Android

* [ios] Update pods

* [firebase-analytics] Add native Firebase Analytics (#7017)

* [firebase-core] Add tests to test-suite

* [fireabse-analytics] Add expo-firebase-analytics package

* [firebase-core] Add firebase-core to Expo client iOS project file

* [firebase-analytics] Add tests to test-suite

* [bare-expo] Update iOS app-icon assets

* [firebase-analytics] Add expo-firebase-analytics to Expo client

* [bare-expo] Add firebase-analytics to BasePackageList.java

* [firebase-analytics] Add firebase-analytics to bundleNativeModules.json

* [docs] Add firebase-analytics docs

* [firebase-analytics] Update yarn.lock after adding `firebase` (js sdk) dependency

* [firebase-analytics] Add js build output

* [firebase-analytics] Update sdk docs

* [firebase-analytics] Update SDK docs

* [firebase-analytics] Remove firebase JS dep to check CI

* [docs] Update SDK docs & readme for expo-firebase-analytics

* [expo-analytics] Remove firebase peer-dependency

* [firebase-analytics] Add web-support & code cleanup

* [docs] Update firebase-analytics docs

* [firebase-analytics] Update build files

* [firebase-analytics] Fix outdated build files

* [firebase-analytics] Fix lint warnings

* [firebase-analytics] Fixed code-style errors & typos after review

* [firebase-analytics] Moved `unimodulePeerDependencies` to regular peerDependencies in package.json

* [firebase-analytics] Update js build output

* [fireabse-analytics] Update changelog

* [firebse-analytics] Update Android build.gradle

* [ios] Update pods

* [firebase-analytics] Add recording of `screen_view` event when calling `setCurrentScreen`

On web, calling `setCurrentScreen` does not automatically record a screen_view event as
it does on native. We therefore record the 'screen_view' event manually.
https://stackoverflow.com/questions/59330467/how-to-track-page-view-with-firebase-analytics-in-a-web-single-page-app

* [firebase-analytics] Update JS build files

* [firebase-analytics] Remove @unimodules/core peerDependency from package.json

* [docs] Add firebase web-config to app.json docs (#7086)

* [firebase-analytics] Add pure JS analytics for use on Expo Client (#7093)

* [firebase-analytics] WIP js analytics

* [firebase-analytics] Add Pure JS FirebaseAnalytics (wip, 80% done)

* [firebase-analytics] Add pure JS Firebase Analytics (done)

* [firebase-analytics] Update & integrate Pure JS Analytics tracker

* [docs] Add instruction on how to use firebase analytics on Expo Client

* [firebase-analytics] Fixes after review feedback

* [firebase-analytics] Update JS build files

* [firebase-analytics] Update analytics-js to use DEFAULT_WEB_APP_OPTIONS

* [firebase-analytics] Update JS build files

* [firebase-analytics] Add recording of `screen_view` events on Expo client, when calling `setCurrentScreen`

This mimics the behavior on Native, when calling setCurrentScreen also records a screen-view event.

Note that this is different from the Firebase JS SDK, which does not record a screen-view event, and requires `logEvent` to be called manually.

* [firebase-analytics] Update JS build files

* [iOS][notifications] feature: customize notification preview placeholders (#7052)

* [ios] add handling for previewPlaceholder

* fix on android

* update docs

* feedback: mark api availability

* resolve conflict

* Update docs/pages/versions/unversioned/sdk/notifications.md

Co-Authored-By: James Ide <ide@users.noreply.github.com>

* fix typo

* fix ci errors for expo package

Co-authored-by: James Ide <ide@users.noreply.github.com>

* [camera][iOS] Reject from takePictureAsync if camera is not ready (#7144)

# Why

Resolves #3020

Calling [camera#takePictureAsync](https://docs.expo.io/versions/latest/sdk/camera/#takepictureasync) should reject if [camera#onCameraReady](https://docs.expo.io/versions/latest/sdk/camera/#oncameraready) callback wasn't called before (native camera isn't ready yet), while now call is silently lost and promise is neither resolved nor rejected.

# How

Reject from `camera.takePictureAsync` if native camera is not ready yet.

# Test Plan

[snack](https://snack.expo.io/@bbarthec/github---camera---ios---takepictureasync)

* [android][ncl] Update @react-native-community/masked-view to 0.1.6

* [android][ios][ncl] Update @react-native-community/viewpager to 3.3.0

* [android][ios][ncl][bare-expo] Update react-native-reanimated to 1.7.0

* [android][ios][ncl] Update react-native-svg to 11.0.1

* [android][ios][ncl] Updated react-native-webview to 8.1.1

* [expo] Update react-native-view-shot to 3.1.2

* [expotools] fix update-vendored-module for react-native-appearance

* [android][ncl][home] Update react-native-appearance to 0.3.2

* [android][ios][ncl][bare-expo] Update react-native-safe-area-context to 0.7.3

* [ios] fix improperly namespaced import in RNSVGForeignObject

* [bare-expo] reinstall pods

* [android][location] Fixed NPE crash when mTask is made null mid-process. (#7147)

* Remove ANY_HOSTNAME_VERIFIER from Android app-auth debug connection builder (#7152)

* Change constant declaration to static ot aviod duplication of symbols. (#7161)

* [image-picker] Prevent from reloading on OnePlus 7 (#7162)

# Why

Resolves #5804.

# How

Create the output file before open the camera intent.

# Test Plan

- NCL ✅
- #5804 (comment) ✅

* [test-suite] Fix test-suite error on start (#7163)

# Why

Dismissing error screen on every refresh can be daunting after some time (when running in `bare-expo`).

# How

- added `try`-`catch` around calls to missing Facebook Ads module
- added `if (ExpoTaskManager)` around `eventEmitter.addListener`, since event name is fetched as a constant of the module which may be `undefined`
- moved `require(testScreen)` which define tasks to _initialization phase_
- moved `require(cameraScreen)` to global scope since I feel `optionalRequire` only works in global scope (and well, it let me get rid of red screen)

# Test Plan

Running `bare-expo` does not show error screen.

* [image-picker] Remove unused header import (#7168)

# Why

Resolves #7167.

# How

Remove unused import.

# Test Plan

- ios build ✅

* [docs] add permissions methods to api list (#7053)

* add permissions methods to api list

* add requestPermissionsAsync and getPermissionsAsync methods to TOC

* Suggestion in sentry guide (#7157)

* Suggestion in sentry guide

* identical changes to v36.0.0 docs

* [android][task-manager] Task manager for bare in Expo (#6828)

Task manager for bare android and iOS applications.

* [docs] fix app signing page (#7171)

* [docs] fix app signing page

* unversioned

* typo

* [android] remove SDK 33 code re-committed after 38ccf62

* [docs] Update ‘using-firebase’ guide with Analytics section (#7145)

* [docs] Update ‘using-firebase’ guide with Analytics section

* [docs] Add missing `expo-firebase-core` dep to ‘usinig-firebase’ doc

* Update docs/pages/versions/unversioned/guides/using-firebase.md

Co-Authored-By: Brent Vatne <brentvatne@gmail.com>

* [jest-expo-enzyme] publish 1.0.0

* Update expo-module-scripts dependency (#7175)

* [docs] Custom fonts guide update

Work in progress

* [docs] Updating guide to using custom fonts

I made some updates to the guide for using custom fonts.

Changes include:
- Using Snacks for examples
- Using the `useFonts` hook for a simpler example
- Example of loading a remote font
- Discussion of font formats

* Update docs/pages/versions/unversioned/guides/using-custom-fonts.md

Co-Authored-By: Brent Vatne <brentvatne@gmail.com>

* Update docs/pages/versions/unversioned/guides/using-custom-fonts.md

Co-Authored-By: Cedric van Putten <me@bycedric.com>

* Update docs/pages/versions/unversioned/guides/using-custom-fonts.md

Co-Authored-By: Brent Vatne <brentvatne@gmail.com>

Co-authored-by: Tomasz Sapeta <1714764+tsapeta@users.noreply.github.com>
Co-authored-by: Charlie Cruzan <35579283+cruzach@users.noreply.github.com>
Co-authored-by: Evan Bacon <baconbrix@gmail.com>
Co-authored-by: Eric Samelson <esamelson@users.noreply.github.com>
Co-authored-by: Saumya Sharma <saumyasharma010@gmail.com>
Co-authored-by: James Ide <ide@users.noreply.github.com>
Co-authored-by: Łukasz Kosmaty <lukasz.kosmaty@student.uj.edu.pl>
Co-authored-by: Dominik Sokal <dominiksokal@gmail.com>
Co-authored-by: Hein Rutjes <IjzerenHein@users.noreply.github.com>
Co-authored-by: Bartłomiej Bukowski <bartlomiejbukowski.b@gmail.com>
Co-authored-by: briefjudofox <1484049+briefjudofox@users.noreply.github.com>
Co-authored-by: Michał Czernek <czernekmichal@gmail.com>
Co-authored-by: Stanisław Chmiela <sjchmiela@users.noreply.github.com>
Co-authored-by: Ziv Levy <zivl@users.noreply.github.com>
Co-authored-by: Nishant Singh <saysnishant@gmail.com>
Co-authored-by: Brent Vatne <brentvatne@gmail.com>
Co-authored-by: Cedric van Putten <me@bycedric.com>
@IjzerenHein IjzerenHein deleted the @hein/expo-firebase/analytics-js branch April 16, 2020 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants