Skip to content

Commit 40028e7

Browse files
committed
Add getDynamicLink method
1 parent cb14296 commit 40028e7

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

packages/firebase_dynamic_links/ios/Classes/FirebaseDynamicLinksPlugin.m

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,20 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result
9999
} else {
100100
result(dict);
101101
}
102+
} else if ([@"FirebaseDynamicLinks#getDynamicLink" isEqualToString:call.method]) {
103+
NSURL *shortLink = [NSURL URLWithString:call.arguments[@"url"]];
104+
FIRDynamicLinkUniversalLinkHandler completion =
105+
^(FIRDynamicLink *_Nullable dynamicLink, NSError *_Nullable error) {
106+
if (error) {
107+
result(getFlutterError(error));
108+
} else if (dynamicLink && dynamicLink.url) {
109+
result(@{@"url" : [dynamicLink.url absoluteString]});
110+
} else {
111+
result(@{});
112+
}
113+
};
114+
[[FIRDynamicLinks dynamicLinks] handleUniversalLink:shortLink
115+
completion:completion];
102116
} else {
103117
result(FlutterMethodNotImplemented);
104118
}

packages/firebase_dynamic_links/lib/src/firebase_dynamic_links.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,16 @@ class FirebaseDynamicLinks {
3737
return getPendingDynamicLinkDataFromMap(linkData);
3838
}
3939

40+
Future<Uri> getDynamicLink(Uri url) async {
41+
final Map<String, dynamic> reply = await FirebaseDynamicLinks.channel
42+
.invokeMapMethod<String, dynamic>('FirebaseDynamicLinks#getDynamicLink',
43+
<String, dynamic>{'url': url.toString()});
44+
if (reply['url'] == null) {
45+
return null;
46+
}
47+
return Uri.tryParse(reply['url']);
48+
}
49+
4050
PendingDynamicLinkData getPendingDynamicLinkDataFromMap(
4151
Map<dynamic, dynamic> linkData) {
4252
if (linkData == null) return null;

0 commit comments

Comments
 (0)