FIRIAMMessageDefinition.m 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. /*
  2. * Copyright 2017 Google
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #import <TargetConditionals.h>
  17. #if TARGET_OS_IOS
  18. #import "FirebaseInAppMessaging/Sources/Private/Data/FIRIAMMessageDefinition.h"
  19. @implementation FIRIAMMessageRenderData
  20. - (instancetype)initWithMessageID:(NSString *)messageID
  21. messageName:(NSString *)messageName
  22. contentData:(id<FIRIAMMessageContentData>)contentData
  23. renderingEffect:(FIRIAMRenderingEffectSetting *)renderEffect {
  24. if (self = [super init]) {
  25. _contentData = contentData;
  26. _renderingEffectSettings = renderEffect;
  27. _messageID = [messageID copy];
  28. _name = [messageName copy];
  29. }
  30. return self;
  31. }
  32. @end
  33. @implementation FIRIAMMessageDefinition
  34. - (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
  35. startTime:(NSTimeInterval)startTime
  36. endTime:(NSTimeInterval)endTime
  37. triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers
  38. appData:(nullable NSDictionary *)appData
  39. experimentPayload:(nullable ABTExperimentPayload *)experimentPayload
  40. isTestMessage:(BOOL)isTestMessage {
  41. if (self = [super init]) {
  42. _renderData = renderData;
  43. _renderTriggers = renderTriggers;
  44. _startTime = startTime;
  45. _endTime = endTime;
  46. _isTestMessage = isTestMessage;
  47. _appData = [appData copy];
  48. _experimentPayload = experimentPayload;
  49. }
  50. return self;
  51. }
  52. - (instancetype)initWithRenderData:(FIRIAMMessageRenderData *)renderData
  53. startTime:(NSTimeInterval)startTime
  54. endTime:(NSTimeInterval)endTime
  55. triggerDefinition:(NSArray<FIRIAMDisplayTriggerDefinition *> *)renderTriggers {
  56. return [self initWithRenderData:renderData
  57. startTime:startTime
  58. endTime:endTime
  59. triggerDefinition:renderTriggers
  60. appData:nil
  61. experimentPayload:nil
  62. isTestMessage:NO];
  63. }
  64. - (instancetype)initTestMessageWithRenderData:(FIRIAMMessageRenderData *)renderData
  65. experimentPayload:(nullable ABTExperimentPayload *)experimentPayload {
  66. return [self initWithRenderData:renderData
  67. startTime:0
  68. endTime:0
  69. triggerDefinition:@[]
  70. appData:nil
  71. experimentPayload:experimentPayload
  72. isTestMessage:YES];
  73. }
  74. - (BOOL)messageHasExpired {
  75. return self.endTime < [[NSDate date] timeIntervalSince1970];
  76. }
  77. - (BOOL)messageRenderedOnTrigger:(FIRIAMRenderTrigger)trigger {
  78. for (FIRIAMDisplayTriggerDefinition *nextTrigger in self.renderTriggers) {
  79. if (nextTrigger.triggerType == trigger) {
  80. return YES;
  81. }
  82. }
  83. return NO;
  84. }
  85. - (BOOL)messageRenderedOnAnalyticsEvent:(NSString *)eventName {
  86. for (FIRIAMDisplayTriggerDefinition *nextTrigger in self.renderTriggers) {
  87. if (nextTrigger.triggerType == FIRIAMRenderTriggerOnFirebaseAnalyticsEvent &&
  88. [nextTrigger.firebaseEventName isEqualToString:eventName]) {
  89. return YES;
  90. }
  91. }
  92. return NO;
  93. }
  94. - (BOOL)messageHasStarted {
  95. return self.startTime < [[NSDate date] timeIntervalSince1970];
  96. }
  97. @end
  98. #endif // TARGET_OS_IOS