diff --git a/Firebase/DynamicLinks/CHANGELOG.md b/Firebase/DynamicLinks/CHANGELOG.md index f0872de9b54..79655c21b1b 100644 --- a/Firebase/DynamicLinks/CHANGELOG.md +++ b/Firebase/DynamicLinks/CHANGELOG.md @@ -1,4 +1,5 @@ -# v3.1.2 +# v3.2.0 +- Add support for creating and receiving dynamic links from custom domains. This feature is not yet available for public consumption. (#1962, #2017, #2078) - Delete deprecated source files. (#2038) # v3.1.1 diff --git a/Firebase/DynamicLinks/FDLURLComponents/FDLURLComponents.m b/Firebase/DynamicLinks/FDLURLComponents/FDLURLComponents.m index d7ec1d48295..2fe4323bbba 100644 --- a/Firebase/DynamicLinks/FDLURLComponents/FDLURLComponents.m +++ b/Firebase/DynamicLinks/FDLURLComponents/FDLURLComponents.m @@ -452,6 +452,10 @@ @implementation FIRDynamicLinkComponents #pragma mark Deprecated Initializers. + (instancetype)componentsWithLink:(NSURL *)link domain:(NSString *)domain { NSURL *domainURL = [NSURL URLWithString:domain]; + if (!domainURL.scheme) { + FDLLog(FDLLogLevelWarning, FDLLogIdentifierSetupWarnHTTPSScheme, + @"Only https scheme is allowed. The supplied domain's scheme will be treated as https."); + } NSString *domainURIPrefix = domainURL.scheme ? domain : [NSString stringWithFormat:@"https://%@", domain]; return [FIRDynamicLinkComponents componentsWithLink:link domainURIPrefix:domainURIPrefix]; @@ -459,6 +463,10 @@ + (instancetype)componentsWithLink:(NSURL *)link domain:(NSString *)domain { - (instancetype)initWithLink:(NSURL *)link domain:(NSString *)domain { NSURL *domainURL = [NSURL URLWithString:domain]; + if (!domainURL.scheme) { + FDLLog(FDLLogLevelWarning, FDLLogIdentifierSetupWarnHTTPSScheme, + @"Only https scheme is allowed. The supplied domain's scheme will be treated as https."); + } NSString *domainURIPrefix = domainURL.scheme ? domain : [NSString stringWithFormat:@"https://%@", domain]; return [self initWithLink:link domainURIPrefix:domainURIPrefix]; @@ -472,7 +480,7 @@ + (instancetype)componentsWithLink:(NSURL *)link domainURIPrefix:(NSString *)dom @"Invalid domainURIPrefix. Please input a valid URL."); return nil; } - if (![[domainURIPrefixURL.scheme lowercaseString] hasPrefix:@"https"]) { + if (![[domainURIPrefixURL.scheme lowercaseString] isEqualToString:@"https"]) { FDLLog(FDLLogLevelError, FDLLogIdentifierSetupInvalidDomainURIPrefixScheme, @"Invalid domainURIPrefix scheme. Scheme needs to be https"); return nil; @@ -491,7 +499,7 @@ - (instancetype)initWithLink:(NSURL *)link domainURIPrefix:(NSString *)domainURI @"Invalid domainURIPrefix. Please input a valid URL."); return nil; } - if (![[domainURIPrefixURL.scheme lowercaseString] hasPrefix:@"https"]) { + if (![[domainURIPrefixURL.scheme lowercaseString] isEqualToString:@"https"]) { FDLLog(FDLLogLevelError, FDLLogIdentifierSetupInvalidDomainURIPrefixScheme, @"Invalid domainURIPrefix scheme. Scheme needs to be https"); return nil; diff --git a/Firebase/DynamicLinks/Logging/FDLLogging.h b/Firebase/DynamicLinks/Logging/FDLLogging.h index 084fcb0df3a..2d0efc572e2 100644 --- a/Firebase/DynamicLinks/Logging/FDLLogging.h +++ b/Firebase/DynamicLinks/Logging/FDLLogging.h @@ -35,6 +35,7 @@ typedef NS_ENUM(NSInteger, FDLLogIdentifier) { FDLLogIdentifierSetupNonDefaultApp = 2, FDLLogIdentifierSetupInvalidDomainURIPrefixScheme = 3, FDLLogIdentifierSetupInvalidDomainURIPrefix = 4, + FDLLogIdentifierSetupWarnHTTPSScheme = 5, }; /** The appropriate formatter for using NSInteger in FIRLogger. */ diff --git a/Firebase/DynamicLinks/Public/FDLURLComponents.h b/Firebase/DynamicLinks/Public/FDLURLComponents.h index 20fdd9ba6f5..a06dc5a1585 100644 --- a/Firebase/DynamicLinks/Public/FDLURLComponents.h +++ b/Firebase/DynamicLinks/Public/FDLURLComponents.h @@ -512,7 +512,8 @@ FIR_SWIFT_NAME(DynamicLinkComponents) * @param link Deep link to be stored in created Dynamic link. This link also called "payload" of * the Dynamic link. * @param domain Domain of your App. This value must be equal to your assigned domain from Firebase - * Console. + * Console. (e.g. xyz.page.link). Note that the domain scheme is required to be https and is + * assumed as such by this API. */ + (instancetype)componentsWithLink:(NSURL *)link domain:(NSString *)domain @@ -527,7 +528,8 @@ FIR_SWIFT_NAME(DynamicLinkComponents) * @param link Deep link to be stored in created Dynamic link. This link also called "payload" of * the Dynamic link. * @param domain Domain of your App. This value must be equal to your assigned domain from Firebase - * Console. + * Console. (e.g. xyz.page.link). Note that the domain scheme is required to be https and is + * assumed as such by this API. */ - (instancetype)initWithLink:(NSURL *)link domain:(NSString *)domain