Skip to content

docs(firebase_analytics): example app initialization and docs support status #7745

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Jan 5, 2022
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions docs/auth/social.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,13 @@ Install the official [`google_sign_in`](https://pub.dev/packages/google_sign_in)

```yaml title="pubspec.yaml"
dependencies:
google_sign_in: "{{ external.google_sign_in }}"
google_sign_in: '{{ external.google_sign_in }}'
```

:::caution
Dart-only initialization isn't yet supported by `google_sign_in` plugin, in which case you still have to do the [manual installation](./manual-installation.mdx) if you're using Google as an auth provider.
:::

Once installed, trigger the sign-in flow and create a new credential:

```dart
Expand Down Expand Up @@ -127,7 +131,7 @@ Install the [`flutter_facebook_auth`](https://pub.dev/packages/flutter_facebook_

```yaml title="pubspec.yaml"
dependencies:
flutter_facebook_auth: "{{ external.flutter_facebook_auth }}"
flutter_facebook_auth: '{{ external.flutter_facebook_auth }}'
```

You will need to follow the steps in the plugin documentation to ensure that both the Android & iOS Facebook SDKs have been initialized
Expand Down Expand Up @@ -199,7 +203,6 @@ to `true` if your user logs in with Facebook. Should your user login using a pro
For further information, see this [issue](https://github.com/FirebaseExtended/flutterfire/issues/4612#issuecomment-782107867).
:::


## Apple

Apple [announced](https://developer.apple.com/news/?id=09122019b) that any applications using 3rd party login
Expand Down Expand Up @@ -283,12 +286,13 @@ Future<UserCredential> signInWithApple() async {
return await FirebaseAuth.instance.signInWithCredential(oauthCredential);
}
```

</TabItem>

<TabItem value="android">

At the moment, the preferable solution is blocked by this
[issue](https://github.com/FirebaseExtended/flutterfire/issues/2691).
At the moment, the preferable solution is blocked by this
[issue](https://github.com/FirebaseExtended/flutterfire/issues/2691).

</TabItem>

Expand All @@ -313,6 +317,7 @@ Future<UserCredential> signInWithApple() async {

An alternative is to use `signInWithRedirect`. In that case the browser will navigate away from your app
and you have to use `getRedirectResult` to check for authentication results during app startup.

</TabItem>
</Tabs>

Expand Down Expand Up @@ -370,7 +375,7 @@ Future<UserCredential> signInWithTwitter() async {
<TabItem value="web">

On the web, the Twitter SDK provides support for automatically handling the authentication flow using the
Twitter application details provided on the Firebase console. Ensure that the callback URL in the Firebase console is added
Twitter application details provided on the Firebase console. Ensure that the callback URL in the Firebase console is added
as a callback URL in your Twitter application on their developer console.

For example:
Expand Down Expand Up @@ -401,7 +406,6 @@ Ensure that you have setup an OAuth App from your [GitHub Developer Settings](ht
that the "GitHub" sign-in provider is enabled on the [Firebase Console](https://console.firebase.google.com/project/_/authentication/providers)
with the Client ID and Secret are set, with the callback URL set in the GitHub app.


<Tabs
defaultValue="native"
values={[
Expand Down Expand Up @@ -448,7 +452,7 @@ Future<UserCredential> signInWithGitHub() async {
<TabItem value="web">

On the web, the GitHub SDK provides support for automatically handling the authentication flow using the
GitHub application details provided on the Firebase console. Ensure that the callback URL in the Firebase console is added
GitHub application details provided on the Firebase console. Ensure that the callback URL in the Firebase console is added
as a callback URL in your GitHub application on the developer console.

For example:
Expand Down
15 changes: 15 additions & 0 deletions docs/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,21 @@ Once installed, the `flutterfire` command will be globally available.

## Usage

:::note
Some plugins or platforms do not support Dart-only initialization **yet**, for which you will use the platform
config files through the [manual installation](./manual-installation.mdx). The following table shows the current
status of support, the plugins not in this table are fully supported.
:::
| Plugin | iOS | Android | Web | macOS |
| --------- | --- | ------- | --- | ----- |
| Analytics | ✔ | ❌ | ✔ | ✔ |
| Crashlytics | ❌ | ❌ | N/A | ❌ |
| Dynamic Links | ❌ | ✔ | N/A | N/A |
| In-App Messaging | ❌ | ✔ | N/A | ❌ |
| Performance Monitoring | ✔ | ❌ | ❌ | N/A |

In addition, [`google_sign_in` plugin](./auth/social#google) which is used by `firebase_auth` also requires manual installation.

### Generating Firebase Options

FlutterFire can now be initialized from Dart on all platforms using `Firebase.initializeApp`, however
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ if (flutterVersionName == null) {

apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
apply plugin: 'com.google.gms.google-services'

android {
compileSdkVersion 29
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import 'dart:developer';
import 'dart:io';

import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/foundation.dart';

class DefaultFirebaseConfig {
static FirebaseOptions? get platformOptions {
if (kIsWeb) {
// Web
return const FirebaseOptions(
apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0',
authDomain: 'react-native-firebase-testing.firebaseapp.com',
databaseURL: 'https://react-native-firebase-testing.firebaseio.com',
projectId: 'react-native-firebase-testing',
storageBucket: 'react-native-firebase-testing.appspot.com',
messagingSenderId: '448618578101',
appId: '1:448618578101:web:0b650370bb29e29cac3efc',
measurementId: 'G-F79DJ0VFGS',
);
} else if (Platform.isIOS || Platform.isMacOS) {
// iOS and MacOS
return const FirebaseOptions(
appId: '1:448618578101:ios:cc6c1dc7a65cc83c',
apiKey: 'AIzaSyAHAsf51D0A407EklG1bs-5wA7EbyfNFg0',
projectId: 'react-native-firebase-testing',
messagingSenderId: '448618578101',
iosBundleId: 'com.invertase.testing',
iosClientId:
'448618578101-28tsenal97nceuij1msj7iuqinv48t02.apps.googleusercontent.com',
androidClientId:
'448618578101-a9p7bj5jlakabp22fo3cbkj7nsmag24e.apps.googleusercontent.com',
databaseURL: 'https://react-native-firebase-testing.firebaseio.com',
storageBucket: 'react-native-firebase-testing.appspot.com',
);
} else {
// Android
log("Analytics Dart-only initializer doesn't work on Android, please make sure to add the config file.");

return null;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,12 @@ import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

import 'firebase_config.dart';
import 'tabs_page.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: const FirebaseOptions(
apiKey: 'AIzaSyAgUhHU8wSJgO5MVNy95tMT07NEjzMOfz0',
authDomain: 'react-native-firebase-testing.firebaseapp.com',
databaseURL: 'https://react-native-firebase-testing.firebaseio.com',
projectId: 'react-native-firebase-testing',
storageBucket: 'react-native-firebase-testing.appspot.com',
messagingSenderId: '448618578101',
appId: '1:448618578101:web:772d484dc9eb15e9ac3efc',
measurementId: 'G-0N1G9FLDZE',
),
);
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
runApp(const MyApp());
}

Expand Down