diff --git a/ios/RNFirebase/links/RNFirebaseLinks.m b/ios/RNFirebase/links/RNFirebaseLinks.m index 1aa3441b..8e244e40 100644 --- a/ios/RNFirebase/links/RNFirebaseLinks.m +++ b/ios/RNFirebase/links/RNFirebaseLinks.m @@ -171,30 +171,16 @@ RCT_EXPORT_METHOD(createShortDynamicLink: (NSDictionary *) metadata resolver:(RC } - (FIRDynamicLinkComponents *)getDynamicLinkComponentsFromMetadata:(NSDictionary *)metadata { - NSMutableDictionary* dynamicLinkInfoMetadata = metadata[@"dynamicLinkInfo"]; + NSDictionary* dynamicLinkInfoMetadata = metadata[@"dynamicLinkInfo"]; @try { NSURL *link = [NSURL URLWithString:dynamicLinkInfoMetadata[@"link"]]; - [dynamicLinkInfoMetadata removeObjectForKey:@"link"]; - FIRDynamicLinkComponents *components = [FIRDynamicLinkComponents componentsWithLink:link domain:dynamicLinkInfoMetadata[@"dynamicLinkDomain"]]; - [dynamicLinkInfoMetadata removeObjectForKey:@"dynamicLinkDomain"]; [self setAndroidParameters:dynamicLinkInfoMetadata components:components]; - [dynamicLinkInfoMetadata removeObjectForKey:@"androidInfo"]; - [self setIosParameters:dynamicLinkInfoMetadata components:components]; - [dynamicLinkInfoMetadata removeObjectForKey:@"iosInfo"]; - [self setSocialMetaTagParameters:dynamicLinkInfoMetadata components:components]; - [dynamicLinkInfoMetadata removeObjectForKey:@"socialMetaTagInfo"]; - if ([dynamicLinkInfoMetadata count] > 0) { - @throw [NSException - exceptionWithName:@"Invalid arguments" - reason:@"Invalid arguments" - userInfo:nil]; - } return components; } @catch(NSException * e) { @@ -203,109 +189,77 @@ RCT_EXPORT_METHOD(createShortDynamicLink: (NSDictionary *) metadata resolver:(RC } } -- (void)setAndroidParameters:(NSMutableDictionary *)metadata +- (void)setAndroidParameters:(NSDictionary *)metadata components:(FIRDynamicLinkComponents *)components { - NSMutableDictionary *androidParametersDict = metadata[@"androidInfo"]; + NSDictionary *androidParametersDict = metadata[@"androidInfo"]; if (androidParametersDict) { if (!androidParametersDict[@"androidPackageName"]) { @throw [NSException - exceptionWithName:@"Invalid arguments" - reason:@"no androidPackageName was specified" + exceptionWithName:@"missing arguments" + reason:@"no androidPackageName was specified." userInfo:nil]; } FIRDynamicLinkAndroidParameters *androidParams = [FIRDynamicLinkAndroidParameters parametersWithPackageName: androidParametersDict[@"androidPackageName"]]; - [androidParametersDict removeObjectForKey:@"androidPackageName"]; - + if (androidParametersDict[@"androidFallbackLink"]) { androidParams.fallbackURL = [NSURL URLWithString:androidParametersDict[@"androidFallbackLink"]]; - [androidParametersDict removeObjectForKey:@"androidFallbackLink"]; } if (androidParametersDict[@"androidMinPackageVersionCode"]) { androidParams.minimumVersion = [androidParametersDict[@"androidMinPackageVersionCode"] integerValue]; - [androidParametersDict removeObjectForKey:@"androidMinPackageVersionCode"]; } - if ([androidParametersDict count] > 0) { - @throw [NSException - exceptionWithName:@"Invalid arguments" - reason:@"Invalid arguments" - userInfo:nil]; - } components.androidParameters = androidParams; } } -- (void)setIosParameters:(NSMutableDictionary *)metadata +- (void)setIosParameters:(NSDictionary *)metadata components:(FIRDynamicLinkComponents *)components { - NSMutableDictionary *iosParametersDict = metadata[@"iosInfo"]; + NSDictionary *iosParametersDict = metadata[@"iosInfo"]; if (iosParametersDict) { if (!iosParametersDict[@"iosBundleId"]) { @throw [NSException - exceptionWithName:@"Invalid arguments" - reason:@"no iosBundleId was specified" + exceptionWithName:@"missing arguments" + reason:@"no iosBundleId was specified." userInfo:nil]; } FIRDynamicLinkIOSParameters *iOSParams = [FIRDynamicLinkIOSParameters parametersWithBundleID:iosParametersDict[@"iosBundleId"]]; - [iosParametersDict removeObjectForKey:@"iosBundleId"]; if (iosParametersDict[@"iosAppStoreId"]) { iOSParams.appStoreID = iosParametersDict[@"iosAppStoreId"]; - [iosParametersDict removeObjectForKey:@"iosAppStoreId"]; } if (iosParametersDict[@"iosCustomScheme"]) { iOSParams.customScheme = iosParametersDict[@"iosCustomScheme"]; - [iosParametersDict removeObjectForKey:@"iosCustomScheme"]; } if (iosParametersDict[@"iosFallbackLink"]) { iOSParams.fallbackURL = [NSURL URLWithString:iosParametersDict[@"iosFallbackLink"]]; - [iosParametersDict removeObjectForKey:@"iosFallbackLink"]; } if (iosParametersDict[@"iosIpadBundleId"]) { iOSParams.iPadBundleID = iosParametersDict[@"iosIpadBundleId"]; - [iosParametersDict removeObjectForKey:@"iosIpadBundleId"]; } if (iosParametersDict[@"iosIpadFallbackLink"]) { iOSParams.iPadFallbackURL = [NSURL URLWithString:iosParametersDict[@"iosIpadFallbackLink"]]; - [iosParametersDict removeObjectForKey:@"iosIpadFallbackLink"]; } if (iosParametersDict[@"iosMinPackageVersionCode"]) { iOSParams.minimumAppVersion = iosParametersDict[@"iosMinPackageVersionCode"]; - [iosParametersDict removeObjectForKey:@"iosMinPackageVersionCode"]; - } - - if ([iosParametersDict count] > 0) { - @throw [NSException - exceptionWithName:@"Invalid arguments" - reason:@"Invalid arguments" - userInfo:nil]; } components.iOSParameters = iOSParams; } } -- (void)setSocialMetaTagParameters:(NSMutableDictionary *)metadata +- (void)setSocialMetaTagParameters:(NSDictionary *)metadata components:(FIRDynamicLinkComponents *)components { - NSMutableDictionary *socialParamsDict = metadata[@"socialMetaTagInfo"]; + NSDictionary *socialParamsDict = metadata[@"socialMetaTagInfo"]; if (socialParamsDict) { FIRDynamicLinkSocialMetaTagParameters *socialParams = [FIRDynamicLinkSocialMetaTagParameters parameters]; if (socialParamsDict[@"socialTitle"]) { socialParams.title = socialParamsDict[@"socialTitle"]; - [socialParamsDict removeObjectForKey:@"socialTitle"]; } if (socialParamsDict[@"socialDescription"]) { socialParams.descriptionText = socialParamsDict[@"socialDescription"]; - [socialParamsDict removeObjectForKey:@"socialDescription"]; } if (socialParamsDict[@"socialImageLink"]) { socialParams.imageURL = [NSURL URLWithString:socialParamsDict[@"socialImageLink"]]; - [socialParamsDict removeObjectForKey:@"socialImageLink"]; - } - if ([socialParamsDict count] > 0) { - @throw [NSException - exceptionWithName:@"Invalid arguments" - reason:@"Invalid arguments" - userInfo:nil]; } components.socialMetaTagParameters = socialParams; } @@ -333,3 +287,4 @@ RCT_EXPORT_METHOD(createShortDynamicLink: (NSDictionary *) metadata resolver:(RC @end #endif +