Skip to content
This repository was archived by the owner on Feb 22, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all 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
5 changes: 5 additions & 0 deletions packages/firebase_dynamic_links/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 0.3.0.

* Update Android dependencies to 16.1.7.
* **Breaking change**. Dynamic link parameter `domain` replaced with `uriPrefix`.

## 0.2.1

* Throw `PlatformException` if there is an error retrieving dynamic link.
Expand Down
8 changes: 4 additions & 4 deletions packages/firebase_dynamic_links/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ To use this plugin, add `firebase_dynamic_links` as a [dependency in your pubspe

## Create Dynamic Links

You create a Dynamic Link either by using the Firebase console, using a REST API, iOS or Android Builder API, Flutter API, or by forming a URL by adding Dynamic Link parameters to a domain specific to your app. These parameters specify the links you want to open, depending on the user's platform and whether your app is installed.
You create a Dynamic Link either by using the Firebase console, using a REST API, iOS or Android Builder API, Flutter API, or by forming a URL by adding Dynamic Link parameters to a URI prefix specific to your app. These parameters specify the links you want to open, depending on the user's platform and whether your app is installed.

Below are instructions to create Dynamic Links using Flutter with the Firebase Dynamic Links API. This API accepts either a long Dynamic Link or an object containing Dynamic Link parameters, and returns a URL like the following example:

Expand All @@ -30,7 +30,7 @@ You can create a Dynamic Link programmatically by setting the following paramete

```dart
final DynamicLinkParameters parameters = DynamicLinkParameters(
domain: 'abc123.app.goo.gl',
uriPrefix: 'https://abc123.app.goo.gl',
link: Uri.parse('https://example.com/'),
androidParameters: AndroidParameters(
packageName: 'com.example.android',
Expand Down Expand Up @@ -83,7 +83,7 @@ You can receive a Dynamic Link containing a deep link that takes the user to spe

1. In the [Firebase Console](https://console.firebase.google.com), open the Dynamic Links section.
- Accept the terms of service if you are prompted to do so.
- Take note of your project's Dynamic Links domain, which is displayed at the top of the Dynamic Links page. You need your project's Dynamic Links domain to programmatically create Dynamic Links. A Dynamic Links domain looks like `YOUR_SUBDOMAIN.page.link`.
- Take note of your project's Dynamic Links URL prefix, which is displayed at the top of the Dynamic Links page. You need your project's Dynamic Links URL prefix to programmatically create Dynamic Links. A Dynamic Links URL prefix looks like `https://YOUR_SUBDOMAIN.page.link`.

Receiving dynamic links on *iOS* requires a couple more steps than *Android*. If you only want to receive dynamic links on *Android*, skip to step 4. You can also follow a video on the next two steps [here.](https://youtu.be/sFPo296OQqk?t=2m40s)

Expand Down Expand Up @@ -138,4 +138,4 @@ If your app did not open from a dynamic link, `retrieveDynamicLink()` will retur

## Getting Started

See the `example` directory for a complete sample app using Google Dynamic Links for Firebase.
See the `example` directory for a complete sample app using Google Dynamic Links for Firebase.
2 changes: 1 addition & 1 deletion packages/firebase_dynamic_links/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ android {
disable 'InvalidPackage'
}
dependencies {
api 'com.google.firebase:firebase-dynamic-links:16.1.2'
api 'com.google.firebase:firebase-dynamic-links:16.1.8'
implementation 'androidx.annotation:annotation:1.0.0'
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,10 @@ private void buildShortDynamicLink(
private DynamicLink.Builder setupParameters(MethodCall call) {
DynamicLink.Builder dynamicLinkBuilder = FirebaseDynamicLinks.getInstance().createDynamicLink();

String domain = call.argument("domain");
String uriPrefix = call.argument("uriPrefix");
String link = call.argument("link");

dynamicLinkBuilder.setDynamicLinkDomain(domain);
dynamicLinkBuilder.setDomainUriPrefix(uriPrefix);
dynamicLinkBuilder.setLink(Uri.parse(link));

Map<String, Object> androidParameters = call.argument("androidParameters");
Expand Down
2 changes: 1 addition & 1 deletion packages/firebase_dynamic_links/example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ class _MainScreenState extends State<_MainScreen> with WidgetsBindingObserver {
});

final DynamicLinkParameters parameters = DynamicLinkParameters(
domain: 'cx4k7.app.goo.gl',
uriPrefix: 'https://cx4k7.app.goo.gl',
link: Uri.parse('https://dynamic.link.example/helloworld'),
androidParameters: AndroidParameters(
packageName: 'io.flutter.plugins.firebasedynamiclinksexample',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,10 @@ - (FIRDynamicLinkComponentsOptions *)setupOptions:(NSDictionary *)arguments {

- (FIRDynamicLinkComponents *)setupParameters:(NSDictionary *)arguments {
NSURL *link = [NSURL URLWithString:arguments[@"link"]];
NSString *domain = arguments[@"domain"];
NSString *uriPrefix = arguments[@"uriPrefix"];

FIRDynamicLinkComponents *components = [FIRDynamicLinkComponents componentsWithLink:link
domain:domain];
domainURIPrefix:uriPrefix];

if (![arguments[@"androidParameters"] isEqual:[NSNull null]]) {
NSDictionary *params = arguments[@"androidParameters"];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,26 @@ part of firebase_dynamic_links;
class DynamicLinkParameters {
DynamicLinkParameters({
this.androidParameters,
@required this.domain,
@required this.uriPrefix,
this.dynamicLinkParametersOptions,
this.googleAnalyticsParameters,
this.iosParameters,
this.itunesConnectAnalyticsParameters,
@required this.link,
this.navigationInfoParameters,
this.socialMetaTagParameters,
}) : assert(domain != null),
}) : assert(uriPrefix != null),
assert(link != null);

/// Android parameters for a generated Dynamic Link URL.
final AndroidParameters androidParameters;

/// The Firebase project’s Dynamic Links domain.
///
/// You can find this value in the Dynamic Links section of the Firebase
/// console. https://console.firebase.google.com/
final String domain;
/// Domain URI Prefix of your App.
// This value must be your assigned domain from the Firebase console.
// (e.g. https://xyz.page.link)
//
// The domain URI prefix must start with a valid HTTPS scheme (https://).
final String uriPrefix;

/// Defines behavior for generating Dynamic Link URLs.
final DynamicLinkParametersOptions dynamicLinkParametersOptions;
Expand Down Expand Up @@ -78,7 +79,7 @@ class DynamicLinkParameters {

Map<String, dynamic> get _data => <String, dynamic>{
'androidParameters': androidParameters?._data,
'domain': domain,
'uriPrefix': uriPrefix,
'dynamicLinkParametersOptions': dynamicLinkParametersOptions?._data,
'googleAnalyticsParameters': googleAnalyticsParameters?._data,
'iosParameters': iosParameters?._data,
Expand Down
2 changes: 1 addition & 1 deletion packages/firebase_dynamic_links/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: firebase_dynamic_links
description: Flutter plugin for Google Dynamic Links for Firebase, an app solution for creating
and handling links across multiple platforms.
version: 0.2.1
version: 0.3.0

author: Flutter Team <flutter-dev@googlegroups.com>
homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_dynamic_links
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ void main() {

test('$AndroidParameters', () async {
final DynamicLinkParameters components = DynamicLinkParameters(
domain: 'test-domain',
uriPrefix: 'https://test-domain/',
link: Uri.parse('test-link.com'),
androidParameters: AndroidParameters(
fallbackUrl: Uri.parse('test-url'),
Expand All @@ -110,7 +110,7 @@ void main() {
'minimumVersion': 1,
'packageName': 'test-package',
},
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand All @@ -128,7 +128,7 @@ void main() {
'minimumVersion': 1,
'packageName': 'test-package',
},
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand All @@ -143,7 +143,7 @@ void main() {

test('$DynamicLinkParametersOptions', () async {
final DynamicLinkParameters components = DynamicLinkParameters(
domain: 'test-domain',
uriPrefix: 'https://test-domain/',
link: Uri.parse('test-link.com'),
dynamicLinkParametersOptions: DynamicLinkParametersOptions(
shortDynamicLinkPathLength: ShortDynamicLinkPathLength.short),
Expand All @@ -157,7 +157,7 @@ void main() {
'DynamicLinkParameters#buildUrl',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': <String, dynamic>{
'shortDynamicLinkPathLength':
ShortDynamicLinkPathLength.short.index,
Expand All @@ -174,7 +174,7 @@ void main() {
'DynamicLinkParameters#buildShortLink',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': <String, dynamic>{
'shortDynamicLinkPathLength':
ShortDynamicLinkPathLength.short.index,
Expand All @@ -197,7 +197,7 @@ void main() {

test('$GoogleAnalyticsParameters', () async {
final DynamicLinkParameters components = DynamicLinkParameters(
domain: 'test-domain',
uriPrefix: 'https://test-domain/',
link: Uri.parse('test-link.com'),
googleAnalyticsParameters: GoogleAnalyticsParameters(
campaign: 'where',
Expand All @@ -216,7 +216,7 @@ void main() {
'DynamicLinkParameters#buildUrl',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': <String, dynamic>{
'campaign': 'where',
Expand All @@ -236,7 +236,7 @@ void main() {
'DynamicLinkParameters#buildShortLink',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': <String, dynamic>{
'campaign': 'where',
Expand All @@ -257,7 +257,7 @@ void main() {

test('$IosParameters', () async {
final DynamicLinkParameters components = DynamicLinkParameters(
domain: 'test-domain',
uriPrefix: 'https://test-domain/',
link: Uri.parse('test-link.com'),
iosParameters: IosParameters(
appStoreId: 'is',
Expand All @@ -278,7 +278,7 @@ void main() {
'DynamicLinkParameters#buildUrl',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': <String, dynamic>{
Expand All @@ -300,7 +300,7 @@ void main() {
'DynamicLinkParameters#buildShortLink',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': <String, dynamic>{
Expand All @@ -323,7 +323,7 @@ void main() {

test('$ItunesConnectAnalyticsParameters', () async {
final DynamicLinkParameters components = DynamicLinkParameters(
domain: 'test-domain',
uriPrefix: 'https://test-domain/',
link: Uri.parse('test-link.com'),
itunesConnectAnalyticsParameters: ItunesConnectAnalyticsParameters(
affiliateToken: 'hello',
Expand All @@ -340,7 +340,7 @@ void main() {
'DynamicLinkParameters#buildUrl',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand All @@ -358,7 +358,7 @@ void main() {
'DynamicLinkParameters#buildShortLink',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand All @@ -377,7 +377,7 @@ void main() {

test('$NavigationInfoParameters', () async {
final DynamicLinkParameters components = DynamicLinkParameters(
domain: 'test-domain',
uriPrefix: 'https://test-domain/',
link: Uri.parse('test-link.com'),
navigationInfoParameters:
NavigationInfoParameters(forcedRedirectEnabled: true),
Expand All @@ -391,7 +391,7 @@ void main() {
'DynamicLinkParameters#buildUrl',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand All @@ -407,7 +407,7 @@ void main() {
'DynamicLinkParameters#buildShortLink',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand All @@ -424,7 +424,7 @@ void main() {

test('$SocialMetaTagParameters', () async {
final DynamicLinkParameters components = DynamicLinkParameters(
domain: 'test-domain',
uriPrefix: 'https://test-domain/',
link: Uri.parse('test-link.com'),
socialMetaTagParameters: SocialMetaTagParameters(
description: 'describe',
Expand All @@ -441,7 +441,7 @@ void main() {
'DynamicLinkParameters#buildUrl',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand All @@ -459,7 +459,7 @@ void main() {
'DynamicLinkParameters#buildShortLink',
arguments: <String, dynamic>{
'androidParameters': null,
'domain': 'test-domain',
'uriPrefix': 'https://test-domain/',
'dynamicLinkParametersOptions': null,
'googleAnalyticsParameters': null,
'iosParameters': null,
Expand Down