Skip to content
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
10 changes: 8 additions & 2 deletions FirebaseInAppMessaging/Sources/Data/FIRIAMFetchResponseParser.m
Original file line number Diff line number Diff line change
Expand Up @@ -335,14 +335,20 @@ - (FIRIAMMessageDefinition *)convertToMessageDefinitionWithMessageDict:(NSDictio
messageName:messageName
contentData:msgData
renderingEffect:renderEffect];

NSDictionary *dataBundle = nil;
id dataBundleNode = messageNode[@"dataBundle"];
if ([dataBundleNode isKindOfClass:[NSDictionary class]]) {
dataBundle = dataBundleNode;
}
if (isTestMessage) {
return [[FIRIAMMessageDefinition alloc] initTestMessageWithRenderData:renderData];
} else {
return [[FIRIAMMessageDefinition alloc] initWithRenderData:renderData
startTime:startTimeInSeconds
endTime:endTimeInSeconds
triggerDefinition:triggersDefinition];
triggerDefinition:triggersDefinition
appData:dataBundle
isTestMessage:NO];
}
} @catch (NSException *e) {
FIRLogWarning(kFIRLoggerInAppMessaging, @"I-IAM900006",
Expand Down
30 changes: 23 additions & 7 deletions FirebaseInAppMessaging/Sources/Data/FIRIAMMessageDefinition.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,23 +36,39 @@ @implementation FIRIAMMessageDefinition
- (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
startTime:(NSTimeInterval)startTime
endTime:(NSTimeInterval)endTime
triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers {
triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers
appData:(nullable NSDictionary *)appData
isTestMessage:(BOOL)isTestMessage {
if (self = [super init]) {
_renderData = renderData;
_renderTriggers = renderTriggers;
_startTime = startTime;
_endTime = endTime;
_isTestMessage = NO;
_isTestMessage = isTestMessage;
_appData = [appData copy];
}
return self;
}

- (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
startTime:(NSTimeInterval)startTime
endTime:(NSTimeInterval)endTime
triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers {
return [self initWithRenderData:renderData
startTime:startTime
endTime:endTime
triggerDefinition:renderTriggers
appData:nil
isTestMessage:NO];
}

- (instancetype)initTestMessageWithRenderData:(FIRIAMMessageRenderData *)renderData {
if (self = [super init]) {
_renderData = renderData;
_isTestMessage = YES;
}
return self;
return [self initWithRenderData:renderData
startTime:0
endTime:0
triggerDefinition:@[]
appData:nil
isTestMessage:YES];
}

- (BOOL)messageHasExpired {
Expand Down
12 changes: 8 additions & 4 deletions FirebaseInAppMessaging/Sources/Flows/FIRIAMDisplayExecutor.m
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,8 @@ - (void)checkAndDisplayNextContextualMessageForAnalyticsEvent:(NSString *)eventN
portraitImageData:portraitImageData
backgroundColor:renderData.renderingEffectSettings.displayBGColor
primaryActionButton:primaryActionButton
primaryActionURL:definition.renderData.contentData.actionURL];
primaryActionURL:definition.renderData.contentData.actionURL
appData:definition.appData];

cardMessage.body = body;
cardMessage.landscapeImageData = landscapeImageData;
Expand Down Expand Up @@ -474,7 +475,8 @@ - (void)checkAndDisplayNextContextualMessageForAnalyticsEvent:(NSString *)eventN
textColor:definition.renderData.renderingEffectSettings.textColor
backgroundColor:definition.renderData.renderingEffectSettings.displayBGColor
imageData:imageData
actionURL:definition.renderData.contentData.actionURL];
actionURL:definition.renderData.contentData.actionURL
appData:definition.appData];
#pragma clang diagnostic pop

return bannerMessage;
Expand All @@ -492,7 +494,8 @@ - (void)checkAndDisplayNextContextualMessageForAnalyticsEvent:(NSString *)eventN
renderAsTestMessage:definition.isTestMessage
triggerType:triggerType
imageData:imageData
actionURL:definition.renderData.contentData.actionURL];
actionURL:definition.renderData.contentData.actionURL
appData:definition.appData];
#pragma clang diagnostic pop

return imageOnlyMessage;
Expand Down Expand Up @@ -533,7 +536,8 @@ - (void)checkAndDisplayNextContextualMessageForAnalyticsEvent:(NSString *)eventN
backgroundColor:renderData.renderingEffectSettings.displayBGColor
imageData:imageData
actionButton:actionButton
actionURL:definition.renderData.contentData.actionURL];
actionURL:definition.renderData.contentData.actionURL
appData:definition.appData];
#pragma clang diagnostic pop

return modalViewMessage;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,21 @@ NS_ASSUME_NONNULL_BEGIN
/// A flag for client-side testing messages
@property(nonatomic, readonly) BOOL isTestMessage;

/// Additional key-value pairs that can be optionally sent along with the FIAM
@property(nonatomic, nullable, readonly) NSDictionary *appData;

- (instancetype)init NS_UNAVAILABLE;

/**
* Create a regular message definition.
*/
- (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
startTime:(NSTimeInterval)startTime
endTime:(NSTimeInterval)endTime
triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers
appData:appData
isTestMessage:(BOOL)isTestMessage NS_DESIGNATED_INITIALIZER;

- (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
startTime:(NSTimeInterval)startTime
endTime:(NSTimeInterval)endTime
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,11 @@ NS_SWIFT_NAME(InAppMessagingDisplayMessage)
*/
@property(nonatomic, readonly) FIRInAppMessagingDisplayTriggerType triggerType;

/**
* Extra key-value dictionary data that can be sent along with the message
*/
@property(nonatomic, nullable, readonly) NSDictionary *appData;

/// Unavailable.
- (instancetype)init NS_UNAVAILABLE;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,26 @@

@implementation FIRInAppMessagingDisplayMessage

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
messageType:(FIRInAppMessagingDisplayMessageType)messageType
triggerType:(FIRInAppMessagingDisplayTriggerType)triggerType
appData:(NSDictionary *)appData {
if (self = [super init]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
_campaignInfo = [[FIRInAppMessagingCampaignInfo alloc] initWithMessageID:messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage];
#pragma clang diagnostic pop
_type = messageType;
_triggerType = triggerType;
_appData = [appData copy];
}
return self;
}

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
Expand All @@ -31,9 +51,11 @@ - (instancetype)initWithMessageID:(NSString *)messageID
renderAsTestMessage:renderAsTestMessage];
_type = messageType;
_triggerType = triggerType;
_appData = nil;
}
return self;
}

@end

@implementation FIRInAppMessagingCardDisplay
Expand All @@ -54,6 +76,36 @@ - (void)setSecondaryActionURL:(NSURL *_Nullable)secondaryActionURL {
_secondaryActionURL = secondaryActionURL;
}

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
triggerType:(FIRInAppMessagingDisplayTriggerType)triggerType
titleText:(NSString *)title
textColor:(UIColor *)textColor
portraitImageData:(FIRInAppMessagingImageData *)portraitImageData
backgroundColor:(UIColor *)backgroundColor
primaryActionButton:(FIRInAppMessagingActionButton *)primaryActionButton
primaryActionURL:(NSURL *)primaryActionURL
appData:(NSDictionary *)appData {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
if (self = [super initWithMessageID:messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeCard
triggerType:triggerType
appData:appData]) {
#pragma clang diagnostic pop
_title = title;
_textColor = textColor;
_portraitImageData = portraitImageData;
_displayBackgroundColor = backgroundColor;
_primaryActionButton = primaryActionButton;
_primaryActionURL = primaryActionURL;
}
return self;
}

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
Expand All @@ -70,7 +122,8 @@ - (instancetype)initWithMessageID:(NSString *)messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeCard
triggerType:triggerType]) {
triggerType:triggerType
appData:nil]) {
#pragma clang diagnostic pop
_title = title;
_textColor = textColor;
Expand All @@ -85,6 +138,33 @@ - (instancetype)initWithMessageID:(NSString *)messageID
@end

@implementation FIRInAppMessagingBannerDisplay
- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
triggerType:(FIRInAppMessagingDisplayTriggerType)triggerType
titleText:(NSString *)title
bodyText:(NSString *)bodyText
textColor:(UIColor *)textColor
backgroundColor:(UIColor *)backgroundColor
imageData:(nullable FIRInAppMessagingImageData *)imageData
actionURL:(nullable NSURL *)actionURL
appData:(NSDictionary *)appData {
if (self = [super initWithMessageID:messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeBanner
triggerType:triggerType
appData:appData]) {
_title = title;
_bodyText = bodyText;
_textColor = textColor;
_displayBackgroundColor = backgroundColor;
_imageData = imageData;
_actionURL = actionURL;
}
return self;
}

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
Expand All @@ -99,7 +179,8 @@ - (instancetype)initWithMessageID:(NSString *)messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeBanner
triggerType:triggerType]) {
triggerType:triggerType
appData:nil]) {
_title = title;
_bodyText = bodyText;
_textColor = textColor;
Expand All @@ -109,10 +190,40 @@ - (instancetype)initWithMessageID:(NSString *)messageID
}
return self;
}

@end

@implementation FIRInAppMessagingModalDisplay

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
triggerType:(FIRInAppMessagingDisplayTriggerType)triggerType
titleText:(NSString *)title
bodyText:(NSString *)bodyText
textColor:(UIColor *)textColor
backgroundColor:(UIColor *)backgroundColor
imageData:(nullable FIRInAppMessagingImageData *)imageData
actionButton:(nullable FIRInAppMessagingActionButton *)actionButton
actionURL:(nullable NSURL *)actionURL
appData:(nullable NSDictionary *)appData {
if (self = [super initWithMessageID:messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeModal
triggerType:triggerType
appData:appData]) {
_title = title;
_bodyText = bodyText;
_textColor = textColor;
_displayBackgroundColor = backgroundColor;
_imageData = imageData;
_actionButton = actionButton;
_actionURL = actionURL;
}
return self;
}

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
Expand All @@ -128,7 +239,8 @@ - (instancetype)initWithMessageID:(NSString *)messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeModal
triggerType:triggerType]) {
triggerType:triggerType
appData:nil]) {
_title = title;
_bodyText = bodyText;
_textColor = textColor;
Expand All @@ -143,6 +255,25 @@ - (instancetype)initWithMessageID:(NSString *)messageID

@implementation FIRInAppMessagingImageOnlyDisplay

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
triggerType:(FIRInAppMessagingDisplayTriggerType)triggerType
imageData:(nullable FIRInAppMessagingImageData *)imageData
actionURL:(nullable NSURL *)actionURL
appData:(nullable NSDictionary *)appData {
if (self = [super initWithMessageID:messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeModal
triggerType:triggerType
appData:appData]) {
_imageData = imageData;
_actionURL = actionURL;
}
return self;
}

- (instancetype)initWithMessageID:(NSString *)messageID
campaignName:(NSString *)campaignName
renderAsTestMessage:(BOOL)renderAsTestMessage
Expand All @@ -153,7 +284,8 @@ - (instancetype)initWithMessageID:(NSString *)messageID
campaignName:campaignName
renderAsTestMessage:renderAsTestMessage
messageType:FIRInAppMessagingDisplayMessageTypeModal
triggerType:triggerType]) {
triggerType:triggerType
appData:nil]) {
_imageData = imageData;
_actionURL = actionURL;
}
Expand Down
Loading