Skip to content

Commit 69f31d9

Browse files
authored
Migrate to using the FDL API for app re-opens (#2238)
* Allow for pasteboard links with trailing slashes as valid custom domain links. * Example App: Read the correct domainURIPrefix key from paramvalues dictionary. * Update comment. * Migrate the Reopen REST endpoint from AppInvite to FDL. * Only include long FDLs with a trailing /. * Run style script. * Fix typo in test.
1 parent ad69626 commit 69f31d9

File tree

5 files changed

+33
-26
lines changed

5 files changed

+33
-26
lines changed

Example/DynamicLinks/Tests/FIRDynamicLinkNetworkingTests.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ - (void)testResolveShortLinkServiceCompletionDoesntCrashWhenNilDataIsRetrieved {
8686
XCTestExpectation *expectation = [self expectationWithDescription:@"completion called"];
8787

8888
[self.service resolveShortLink:url
89+
FDLSDKVersion:@"1.0.0"
8990
completion:^(NSURL *_Nullable url, NSError *_Nullable error) {
9091
[expectation fulfill];
9192
}];

Example/DynamicLinks/Tests/FIRDynamicLinksTest.m

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ + (instancetype)resolverWithBlock:(FakeShortLinkResolverHandler)resolverHandler
9292
return resolver;
9393
}
9494

95-
- (void)resolveShortLink:(NSURL *)url completion:(FIRDynamicLinkResolverHandler)completion {
95+
- (void)resolveShortLink:(NSURL *)url
96+
FDLSDKVersion:(NSString *)FDLSDKVersion
97+
completion:(FIRDynamicLinkResolverHandler)completion {
9698
if (_resolverHandler && completion) {
9799
NSURL *resolvedLink = _resolverHandler(url);
98100
completion(resolvedLink, nil);
@@ -129,7 +131,7 @@ static void SwizzleDynamicLinkNetworkingWithMock() {
129131
id linkResolver = OCMPartialMock([[FIRDynamicLinkNetworking alloc] initWithAPIKey:kAPIKey
130132
clientID:kClientID
131133
URLScheme:kURLScheme]);
132-
[[linkResolver stub] resolveShortLink:OCMOCK_ANY completion:OCMOCK_ANY];
134+
[[linkResolver stub] resolveShortLink:OCMOCK_ANY FDLSDKVersion:@"1.0.0" completion:OCMOCK_ANY];
133135

134136
SwizzleDynamicLinkNetworking(linkResolver);
135137
}
@@ -1027,17 +1029,11 @@ - (void)testValidCustomDomainNames {
10271029
NSArray<NSString *> *urlStrings = @[
10281030
@"https://google.com/mylink", // Short FDL starting with 'https://google.com'
10291031
@"https://google.com/one", // Short FDL starting with 'https://google.com'
1030-
@"https://google.com?link=abcd", // Long FDL starting with 'https://google.com'
1032+
@"https://google.com/?link=abcd", // Long FDL starting with 'https://google.com'
10311033
@"https://google.com/one/mylink", // Long FDL starting with 'https://google.com/one'
10321034
@"https://a.firebase.com/mypath/mylink", // Short FDL starting https://a.firebase.com/mypath
1033-
@"https://a.firebase.com/mypath?link=abcd&test=1", // Long FDL starting with
1034-
// https://a.firebase.com/mypath
1035-
@"https://a.firebase.com/mypath/?link=https://www.google.com&test=1" // Long FDL coming from
1036-
// the app preview page.
1037-
// Note that the long FDL
1038-
// coming from the
1039-
// pasteboard has an extra
1040-
// trailing slash.
1035+
@"https://a.firebase.com/mypath/?link=abcd&test=1", // Long FDL starting with
1036+
// https://a.firebase.com/mypath
10411037
];
10421038

10431039
for (NSString *urlString in urlStrings) {

Firebase/DynamicLinks/FIRDynamicLinkNetworking.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,9 @@ FOUNDATION_EXPORT NSString *const kApiaryRestBaseUrl;
9191
* @param url A Short Dynamic Link.
9292
* @param completion Block to be run upon completion.
9393
*/
94-
- (void)resolveShortLink:(NSURL *)url completion:(FIRDynamicLinkResolverHandler)completion;
94+
- (void)resolveShortLink:(NSURL *)url
95+
FDLSDKVersion:(NSString *)FDLSDKVersion
96+
completion:(FIRDynamicLinkResolverHandler)completion;
9597

9698
/**
9799
* @method

Firebase/DynamicLinks/FIRDynamicLinkNetworking.m

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
NS_ASSUME_NONNULL_BEGIN
2424

2525
NSString *const kApiaryRestBaseUrl = @"https://appinvite-pa.googleapis.com/v1";
26+
static NSString *const kiOSReopenRestBaseUrl = @"https://firebasedynamiclinks.googleapis.com/v1";
2627

2728
// IPv4 and IPv6 Endpoints.
2829
static NSString *const kApiaryRestBaseUrlIPV4 = @"https://appinvite-ipv4-pa.googleapis.com/v1";
@@ -41,11 +42,9 @@
4142

4243
NSString *const kFDLResolvedLinkDeepLinkURLKey = @"deepLink";
4344
NSString *const kFDLResolvedLinkMinAppVersionKey = @"iosMinAppVersion";
44-
45-
static NSString *const kFDLAnalyticsDataKey = @"durableLinkAnalyticsData";
46-
static NSString *const kFDLAnalyticsDataSourceKey = @"source";
47-
static NSString *const kFDLAnalyticsDataMediumKey = @"medium";
48-
static NSString *const kFDLAnalyticsDataCampaignKey = @"campaign";
45+
static NSString *const kFDLAnalyticsDataSourceKey = @"utmSource";
46+
static NSString *const kFDLAnalyticsDataMediumKey = @"utmMedium";
47+
static NSString *const kFDLAnalyticsDataCampaignKey = @"utmCampaign";
4948
static NSString *const kHeaderIosBundleIdentifier = @"X-Ios-Bundle-Identifier";
5049

5150
typedef NSDictionary *_Nullable (^FIRDLNetworkingParserBlock)(
@@ -102,14 +101,20 @@ - (instancetype)initWithAPIKey:(NSString *)APIKey
102101

103102
#pragma mark - Public interface
104103

105-
- (void)resolveShortLink:(NSURL *)url completion:(FIRDynamicLinkResolverHandler)handler {
104+
- (void)resolveShortLink:(NSURL *)url
105+
FDLSDKVersion:(NSString *)FDLSDKVersion
106+
completion:(FIRDynamicLinkResolverHandler)handler {
106107
NSParameterAssert(handler);
107108
if (!url) {
108109
handler(nil, nil);
109110
return;
110111
}
111112

112-
NSDictionary *requestBody = @{@"link" : url.absoluteString};
113+
NSDictionary *requestBody = @{
114+
@"requestedLink" : url.absoluteString,
115+
@"bundle_id" : [NSBundle mainBundle].bundleIdentifier,
116+
@"sdk_version" : FDLSDKVersion
117+
};
113118

114119
FIRNetworkRequestCompletionHandler resolveLinkCallback = ^(NSData *data, NSError *error) {
115120
NSURL *resolvedURL;
@@ -129,10 +134,9 @@ - (void)resolveShortLink:(NSURL *)url completion:(FIRDynamicLinkResolverHandler)
129134

130135
NSString *deepLinkString = result[kFDLResolvedLinkDeepLinkURLKey];
131136
NSString *minAppVersion = result[kFDLResolvedLinkMinAppVersionKey];
132-
NSDictionary *analytics = result[kFDLAnalyticsDataKey];
133-
NSString *utmSource = analytics[kFDLAnalyticsDataSourceKey];
134-
NSString *utmMedium = analytics[kFDLAnalyticsDataMediumKey];
135-
NSString *utmCampaign = analytics[kFDLAnalyticsDataCampaignKey];
137+
NSString *utmSource = result[kFDLAnalyticsDataSourceKey];
138+
NSString *utmMedium = result[kFDLAnalyticsDataMediumKey];
139+
NSString *utmCampaign = result[kFDLAnalyticsDataCampaignKey];
136140
resolvedURL = FIRDLDeepLinkURLWithInviteID(invitationIDString, deepLinkString, utmSource,
137141
utmMedium, utmCampaign, NO, nil, minAppVersion,
138142
self->_URLScheme, nil);
@@ -141,8 +145,9 @@ - (void)resolveShortLink:(NSURL *)url completion:(FIRDynamicLinkResolverHandler)
141145
handler(resolvedURL, error);
142146
};
143147

144-
NSString *requestURLString = [NSString stringWithFormat:@"%@/resolveLink%@", kApiaryRestBaseUrl,
145-
FIRDynamicLinkAPIKeyParameter(_APIKey)];
148+
NSString *requestURLString =
149+
[NSString stringWithFormat:@"%@/reopenAttribution%@", kiOSReopenRestBaseUrl,
150+
FIRDynamicLinkAPIKeyParameter(_APIKey)];
146151
[self executeOnePlatformRequest:requestBody
147152
forURL:requestURLString
148153
completionHandler:resolveLinkCallback];

Firebase/DynamicLinks/FIRDynamicLinks.m

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,7 @@ - (nullable FIRDynamicLink *)dynamicLinkFromUniversalLinkURL:(NSURL *)url {
408408
// TODO: Create dedicated logging function to prevent this.
409409
[self.dynamicLinkNetworking
410410
resolveShortLink:url
411+
FDLSDKVersion:kFIRDLVersion
411412
completion:^(NSURL *_Nullable resolverURL, NSError *_Nullable resolverError){
412413
// Nothing to do
413414
}];
@@ -453,7 +454,9 @@ - (BOOL)handleUniversalLink:(NSURL *)universalLinkURL
453454
}
454455

455456
- (void)resolveShortLink:(NSURL *)url completion:(FIRDynamicLinkResolverHandler)completion {
456-
[self.dynamicLinkNetworking resolveShortLink:url completion:completion];
457+
[self.dynamicLinkNetworking resolveShortLink:url
458+
FDLSDKVersion:kFIRDLVersion
459+
completion:completion];
457460
}
458461

459462
- (BOOL)matchesShortLinkFormat:(NSURL *)url {

0 commit comments

Comments
 (0)