Skip to content

Commit e304dd2

Browse files
committed
firebase v11.0.0
1 parent 21d6ed6 commit e304dd2

File tree

187 files changed

+1408
-1108
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+1408
-1108
lines changed

docs/firebase/auth/_includes/add-manual-appdescriptor.mdx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,19 @@ The following should be added to your `extensions` node in your application desc
55

66
```xml
77
<extensions>
8-
<extensionID>com.distriqt.firebase.Auth</extensionID>
9-
<extensionID>androidx.browser</extensionID>
10-
<extensionID>com.distriqt.playservices.Auth</extensionID>
11-
<extensionID>com.google.android.recaptcha</extensionID>
12-
13-
<!-- Firebase Core -->
148
<extensionID>androidx.core</extensionID>
9+
<extensionID>androidx.browser</extensionID>
1510
<extensionID>com.distriqt.Core</extensionID>
1611
<extensionID>com.distriqt.Firebase</extensionID>
12+
<extensionID>com.distriqt.firebase.Auth</extensionID>
1713
<extensionID>com.distriqt.playservices.AdsIdentifier</extensionID>
14+
<extensionID>com.distriqt.playservices.Auth</extensionID>
1815
<extensionID>com.distriqt.playservices.Base</extensionID>
1916
<extensionID>com.distriqt.playservices.CloudMessaging</extensionID>
2017
<extensionID>com.google.android.datatransport</extensionID>
18+
<extensionID>com.google.android.recaptcha</extensionID>
2119
<extensionID>com.google.firebase.core</extensionID>
2220
<extensionID>com.jetbrains.kotlin</extensionID>
23-
2421
</extensions>
2522
```
2623

@@ -41,7 +38,7 @@ Ensure you:
4138

4239
```xml
4340
<manifest android:installLocation="auto" >
44-
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="34"/>
41+
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="35"/>
4542
<uses-permission android:name="android.permission.INTERNET"/>
4643
<application>
4744
<activity android:name="com.distriqt.core.auth.AuthorisationActivity" android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
---
2+
title: Auth - Migrating to v11.0
3+
sidebar_label: Migrating to v11.0
4+
---
5+
6+
import Tabs from '@theme/Tabs'
7+
import TabItem from '@theme/TabItem'
8+
9+
10+
## Email Link Authentication
11+
12+
With the deprecation of Firebase Dynamic Links you will need to change the way you handle email link authentication as you will no longer receive the `DynamicLinkEvent.RECEIVED` event.
13+
14+
You should remove the Firebase Dynamic Links extension from your application as it is no longer required for email link authentication.
15+
16+
17+
<Tabs
18+
groupId="packagemanager"
19+
defaultValue="apm"
20+
values={[
21+
{label: 'APM', value: 'apm'},
22+
{label: 'Manual', value: 'manual'},
23+
]}>
24+
25+
<TabItem value="apm" >
26+
27+
To remove the Firebase Dynamic Links extension using the AIR Package Manager (`apm`), you can run the following commands:
28+
29+
```bash
30+
apm uninstall com.distriqt.firebase.DynamicLinks
31+
apm generate app-descriptor
32+
```
33+
34+
</TabItem>
35+
<TabItem value="manual" >
36+
37+
Remove the `com.distriqt.firebase.DynamicLinks` extension from your application descriptor and remove the extension from your project.
38+
Remove any entries in the manifest that relate to the Firebase Dynamic Links extension.
39+
Ensure you remove the `com.distriqt.firebase.DynamicLinks` extension entry from your `extensions` list in the application descriptor.
40+
41+
</TabItem>
42+
43+
</Tabs>
44+
45+
In the past you would have used the `DynamicLinkEvent.RECEIVED` event to handle the email link authentication, however now you will need to use the `FirebaseAuthEvent.EMAIL_LINK_RECEIVED` event instead.
46+
47+
```actionscript
48+
FirebaseDynamicLinks.service.addEventListener( DynamicLinkEvent.RECEIVED, dynamicLink_receivedHandler );
49+
```
50+
51+
You should replace it this with the following code to handle the email link authentication:
52+
53+
```actionscript
54+
FirebaseAuth.service.addEventListener( FirebaseAuthEvent.EMAIL_LINK_RECEIVED, emailLink_receivedHandler );
55+
56+
function emailLink_receivedHandler( event:FirebaseAuthEvent ):void
57+
{
58+
// Handle the email link authentication here
59+
if (FirebaseAuth.service.isSignInWithEmailLink( event.link ))
60+
{
61+
// Proceed with email link sign-in
62+
FirebaseAuth.service.signInWithEmailLink( email, event.link );
63+
}
64+
}
65+
```
66+
67+
You will need to ensure that you make some changes to your manifest to ensure that the email link authentication works correctly.
68+
69+
With dynamic links you would have added the following to your manifest:
70+
71+
```xml
72+
<activity>
73+
<intent-filter>
74+
<action android:name="android.intent.action.MAIN"></action>
75+
<category android:name="android.intent.category.LAUNCHER"></category>
76+
</intent-filter>
77+
<intent-filter>
78+
<action android:name="android.intent.action.VIEW"/>
79+
<category android:name="android.intent.category.DEFAULT"/>
80+
<category android:name="android.intent.category.BROWSABLE"/>
81+
82+
<data android:host="airnativeextensions.com" android:scheme="http"/>
83+
<data android:host="airnativeextensions.com" android:scheme="https"/>
84+
</intent-filter>
85+
</activity>
86+
```
87+
88+
You will need to change this to the following:
89+
90+
```xml
91+
<activity>
92+
<intent-filter>
93+
<action android:name="android.intent.action.MAIN"/>
94+
<category android:name="android.intent.category.LAUNCHER"/>
95+
</intent-filter>
96+
<intent-filter android:autoVerify="true">
97+
<action android:name="android.intent.action.VIEW" />
98+
<category android:name="android.intent.category.DEFAULT" />
99+
<category android:name="android.intent.category.BROWSABLE" />
100+
<data
101+
android:scheme="https"
102+
android:host="<PROJECT_ID>.firebaseapp.com"
103+
android:pathPrefix="/__/auth/links" />
104+
</intent-filter>
105+
</activity>
106+
```
107+
108+
Follow the [email link integration guide](provider/email-link.mdx) to set the host value (`<PROJECT_ID>.firebaseapp.com`) or your custom domain" correctly.
109+

docs/firebase/auth/provider/email-link.md renamed to docs/firebase/auth/provider/email-link.mdx

Lines changed: 129 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ title: Auth - Provider - Email Link
33
sidebar_label: Email Link
44
---
55

6+
import Tabs from '@theme/Tabs'
7+
import TabItem from '@theme/TabItem'
8+
69
You can use Firebase Authentication to sign in a user by sending them an email containing a link,
710
which they can click to sign in. In the process, the user's email address is also verified.
811

@@ -35,7 +38,7 @@ Firebase send the authentication link to the user's email.
3538

3639
1. Construct the ActionCodeSettings object, which provides Firebase with instructions on how to construct the email link. Set the following fields:
3740
- `url`: The deep link to embed and any additional state to be passed along. The link's domain has to be whitelisted in the Firebase Console list of authorized domains, which can be found by going to the Sign-in method tab (Authentication -> Sign-in method). The link will redirect the user to this URL if the app is not installed on their device and the app was not able to be installed.
38-
- `androidPackageName` and `IOSBundleId`: The apps to use when the sign-in link is opened on an Android or iOS device. Learn more on how to configure Firebase Dynamic Links to open email action links via mobile apps.
41+
- `androidPackageName` and `IOSBundleId`: The apps to use when the sign-in link is opened on an Android or iOS device.
3942
- `handleCodeInApp`: Set to `true`. The sign-in operation has to always be completed in the app unlike other out of band email actions (password reset and email verifications). This is because, at the end of the flow, the user is expected to be signed in and their Auth state persisted within the app.
4043

4144
2. Ask the user for their email.
@@ -80,38 +83,133 @@ At this point the user will need to check their email and click on the link in t
8083

8184
### URL
8285

83-
For the URL we generally suggest you use your Firebase app url (`https://PROJECT_ID.firebaseapp.com`). This normally can be found by checking the *Authorized Domains* in the Firebase Console under *Authentication > Sign in Method*
86+
For the URL, Firebase suggests you use your Firebase app url (`https://PROJECT_ID.firebaseapp.com`). This normally can be found by checking the *Authorized Domains* in the Firebase Console under *Authentication > Sign in Method*
8487

85-
Using this method and adding the Dynamic Links extension simplifies the development and integration required.
88+
Using this method simplifies the development and integration required.
8689

8790
This guide will assume this approach however you can use whatever approach suits you needs to handle the url redirection.
8891

8992

9093
## Complete sign in with the email link
9194

9295

93-
### Add Dynamic Links
96+
### Completing sign-in in an Android App
9497

95-
Firebase Auth uses Firebase Dynamic Links when sending a link that is meant to be opened in a mobile application. In order to use this feature, Dynamic Links must be configured in the Firebase Console.
98+
Firebase Authentication uses Firebase Hosting to send the email link to a mobile device. For sign-in completion via mobile application, the application has to be configured to detect the incoming application link, parse the underlying deep link and then complete the sign-in. To learn more, see [Android App Links documentation](https://developer.android.com/training/app-links).
9699

97-
Follow the guide to add the Dynamic Links extension to your application:
98100

99-
- [DynamicLinks](../../dynamiclinks/add-the-extension.mdx)
101+
#### Configure Firebase Hosting
100102

103+
Firebase Authentication uses Firebase Hosting domains when creating and sending a link that is meant to be opened in a mobile application. A default Firebase Hosting domain has already been configured for you.
101104

102-
Now you can listen for the user to click on the link in the email
105+
1. Configure Firebase Hosting domains:
103106

104-
```actionscript
105-
FirebaseDynamicLinks.service.addEventListener(
106-
DynamicLinkEvent.RECEIVED,
107-
dynamicLink_receivedHandler );
107+
In the Firebase console, open the Hosting section.
108+
- If you want to use the default domain for the email link that opens in mobile applications, go to your default site and take note of your default Hosting domain. A default Hosting domain typically looks like this: `PROJECT_ID.firebaseapp.com`. You'll need this value when you configure your app to intercept the incoming link.
109+
- If you want to use a custom domain for the email link, you can register one with Firebase Hosting and use that for the link's domain.
108110

109-
function dynamicLink_receivedHandler( event:DynamicLinkEvent ):void
110-
{
111-
trace( "dynamicLink_receivedHandler(): " + event.link );
111+
2. Configuring Android applications:
112+
113+
In order to handle these links from your Android application, your app's package name needs to be specified in the Firebase console project settings. In addition, the SHA-1 and SHA-256 of the application certificate need to be provided.
112114

113-
// This could be the email link
115+
To configure your Android application, follow these steps:
116+
117+
<Tabs
118+
groupId="packagemanager"
119+
defaultValue="apm"
120+
values={[
121+
{label: 'APM', value: 'apm'},
122+
{label: 'Manual', value: 'manual'},
123+
]}>
124+
125+
<TabItem value="apm" >
126+
127+
```bash
128+
apm generate config android
129+
```
130+
131+
Edit the `AndroidManifest.xml` that was created at `config/android/AndroidManifest.xml` file to include the following intent filter:
132+
133+
```xml
134+
<?xml version="1.0" encoding="utf-8"?>
135+
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
136+
137+
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="35" />
138+
<uses-prermission android:name="android.permission.INTERNET" />
139+
<application>
140+
<activity>
141+
<intent-filter>
142+
<action android:name="android.intent.action.MAIN"/>
143+
<category android:name="android.intent.category.LAUNCHER"/>
144+
</intent-filter>
145+
<intent-filter android:autoVerify="true">
146+
<action android:name="android.intent.action.VIEW" />
147+
<category android:name="android.intent.category.DEFAULT" />
148+
<category android:name="android.intent.category.BROWSABLE" />
149+
<data
150+
android:scheme="https"
151+
android:host="<PROJECT_ID>.firebaseapp.com"
152+
android:pathPrefix="/__/auth/links" />
153+
</intent-filter>
154+
</activity>
155+
</application>
156+
157+
</manifest>
158+
```
159+
160+
Then regenerate the application descriptor:
161+
162+
```bash
163+
apm generate app-descriptor
164+
```
165+
166+
</TabItem>
167+
<TabItem value="manual" >
168+
169+
In your application descriptor, you need to add an intent filter that will handle the incoming link.
170+
This is done by adding the following code to your manifest additions:
171+
172+
```xml
173+
<uses-sdk android:minSdkVersion="23" android:targetSdkVersion="35" />
174+
<uses-prermission android:name="android.permission.INTERNET" />
175+
<application>
176+
<activity>
177+
<intent-filter>
178+
<action android:name="android.intent.action.MAIN"/>
179+
<category android:name="android.intent.category.LAUNCHER"/>
180+
</intent-filter>
181+
<intent-filter android:autoVerify="true">
182+
<action android:name="android.intent.action.VIEW" />
183+
<category android:name="android.intent.category.DEFAULT" />
184+
<category android:name="android.intent.category.BROWSABLE" />
185+
<data
186+
android:scheme="https"
187+
android:host="<PROJECT_ID>.firebaseapp.com"
188+
android:pathPrefix="/__/auth/links" />
189+
</intent-filter>
190+
</activity>
191+
</application>
192+
```
114193

194+
</TabItem>
195+
196+
</Tabs>
197+
198+
:::note
199+
It's important that the `<activity>` element has no attributes and that you leave the first `<intent-filter>` element as is,
200+
as this is required for the AIR application to be launched correctly.
201+
202+
Also you must replace `<PROJECT_ID>.firebaseapp.com` with your actual domain, either `<PROJECT_ID>.firebaseapp.com` or your custom domain.
203+
:::
204+
205+
When users open a hosting link in your Android app, the app will be launched and the extension will receive the link and dispatch the `FirebaseAuthEvent.EMAIL_LINK_RECEIVED` event:
206+
207+
```actionscript
208+
FirebaseAuth.service.addEventListener( FirebaseAuthEvent.EMAIL_LINK_RECEIVED, emailLink_receivedHandler );
209+
210+
function emailLink_receivedHandler( event:FirebaseAuthEvent ):void
211+
{
212+
// Handle the email link authentication here
115213
}
116214
```
117215

@@ -156,10 +254,25 @@ function signInWithEmailLink_completeHandler( event:FirebaseAuthEvent ):void
156254
Of course you can use your global `FirebaseAuthEvent.AUTHSTATE_CHANGED` to listen for sign in success as well as this handler.
157255

158256

257+
### Linking/re-authentication with email link
258+
259+
You can also link this method of authentication to an existing user. For example a user previously authenticated with another provider, such as a phone number, can add this method of sign-in to their existing account.
260+
261+
```actionscript
262+
var credential:AuthCredential = EmailAuthProvider.getEmailLinkCredential( email, link );
263+
264+
var user:FirebaseUser = FirebaseAuth.service.getCurrentUser();
265+
266+
user.linkWithCredential( credential );
267+
```
268+
159269

160270

161271
## Differentiating email/password from email link
162272

273+
:::warning Deprecated
274+
This functionality has been deprecated in order to improve user account security.
275+
:::
163276

164277
In case you support both password and link-based sign in with email, to differentiate the method of sign in for a password/link user, use `fetchSignInMethodsForEmail()`. This is useful for identifier-first flows where the user is first asked to provide their email and then presented with the method of sign-in:
165278

docs/firebase/changelog.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,37 @@
1+
### 2025.08.26 [v11.0.0]
2+
3+
```
4+
## Major update
5+
6+
This release implements the latest versions the Firebase SDK:
7+
- Android BOM v34.1.0
8+
- iOS v12.1.0
9+
10+
The major change is the deprecation and removal of the Dynamic Links extension. This has an impact if you are using the email link authentication method and the Auth extension has been updated to use the latest method.
11+
This affects anyone using the email link authentication method, as the new method does not require Dynamic Links and uses a different approach to handle the email link.
12+
13+
> Deprecated: Firebase Dynamic Links is deprecated and should not be adopted in projects that don't already use it. The service will shut down on August 25, 2025. See the [Dynamic Links Deprecation FAQ](https://firebase.google.com/support/dynamic-links-faq) for more information.
14+
15+
See the migration guide: https://docs.airnativeextensions.com/docs/firebase/migrating-to-v11.0
16+
17+
### Updates
18+
19+
feat(core): update sdk - android v23.0.0, ios v12.1.0
20+
feat(auth): update sdk - android v24.0.1, ios v12.1.0
21+
feat(auth): new email link integration without dynamic links
22+
feat(crashlytics): update sdk - android v20.0.0, ios v12.1.0
23+
feat(database): update sdk - android v22.0.0, ios v12.1.0
24+
feat(dynamiclinks): remove deprecated dynamic links extension
25+
feat(firestore): update sdk - android v26.0.0, ios v12.1.0
26+
feat(firestore): add ability to change default query order (resolves https://github.com/distriqt/ANE-Firebase/issues/512)
27+
feat(performance): update sdk - android v22.0.0, ios v12.1.0
28+
feat(performance): add custom attributes to Trace
29+
feat(remoteconfig): update sdk - android v23.0.0, ios v12.1.0
30+
feat(remoteconfig): add support for config update event
31+
feat(remoteconfig): add activate and fetch methods
32+
feat(storage): update sdk - android v22.0.0, ios v12.1.0
33+
```
34+
135
### 2025.02.13 [v10.1.0]
236

337
```

docs/firebase/dynamiclinks/introduction.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ Further information can be found in the [Dynamic Links Deprecation FAQ](https://
2626

2727
Dynamic Links are links that work the way you want, on multiple platforms, and whether or not your app is already installed.
2828

29+
2930
## About
3031

3132
Firebase Dynamic Links are links that work the way you want, on multiple platforms, and whether or not your app is already installed.

0 commit comments

Comments
 (0)