AutoDisplayMesagesTableVC.m 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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 "AutoDisplayMesagesTableVC.h"
  17. #import <FirebaseInAppMessaging/FIRIAMDisplayTriggerDefinition.h>
  18. #import <FirebaseInAppMessaging/FIRIAMMessageContentData.h>
  19. @interface AutoDisplayMesagesTableVC ()
  20. @end
  21. @implementation AutoDisplayMesagesTableVC
  22. - (void)messageDataChanged {
  23. dispatch_async(dispatch_get_main_queue(), ^{
  24. [self.tableView reloadData];
  25. });
  26. }
  27. - (void)viewDidLoad {
  28. [super viewDidLoad];
  29. // Uncomment the following line to preserve selection between presentations.
  30. // self.clearsSelectionOnViewWillAppear = NO;
  31. // Uncomment the following line to display an Edit button in the navigation bar for this view
  32. // controller. self.navigationItem.rightBarButtonItem = self.editButtonItem;
  33. }
  34. - (void)didReceiveMemoryWarning {
  35. [super didReceiveMemoryWarning];
  36. // Dispose of any resources that can be recreated.
  37. }
  38. #pragma mark - Table view data source
  39. - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  40. return 1;
  41. }
  42. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  43. NSArray<FIRIAMMessageDefinition *> *messages = self.messageCache.allRegularMessages;
  44. if (messages) {
  45. return messages.count;
  46. } else {
  47. return 0;
  48. }
  49. }
  50. static NSString *CellIdentifier = @"CellIdentifier";
  51. - (NSString *)viewModeDisplayString:(FIRIAMRenderingMode)viewMode {
  52. switch (viewMode) {
  53. case FIRIAMRenderAsBannerView:
  54. return @"Banner";
  55. case FIRIAMRenderAsModalView:
  56. return @"Modal";
  57. case FIRIAMRenderAsImageOnlyView:
  58. return @"Image";
  59. default:
  60. return @"Unknown";
  61. }
  62. }
  63. - (NSString *)triggerDisplayString:(NSArray<FIRIAMDisplayTriggerDefinition *> *)triggers {
  64. NSMutableString *s = [[NSMutableString alloc] init];
  65. for (FIRIAMDisplayTriggerDefinition *trigger in triggers) {
  66. [s appendString:[self triggerDisplayStringForOneTrigger:trigger]];
  67. [s appendString:@","];
  68. }
  69. return [s copy];
  70. }
  71. - (NSString *)triggerDisplayStringForOneTrigger:
  72. (FIRIAMDisplayTriggerDefinition *)triggerDefinition {
  73. switch (triggerDefinition.triggerType) {
  74. case FIRIAMRenderTriggerOnAppForeground:
  75. return @"app_foreground";
  76. case FIRIAMRenderTriggerOnFirebaseAnalyticsEvent:
  77. return triggerDefinition.firebaseEventName;
  78. default:
  79. return @"Unknown";
  80. }
  81. }
  82. - (UITableViewCell *)tableView:(UITableView *)tableView
  83. cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  84. NSArray<FIRIAMMessageDefinition *> *messageDefs = self.messageCache.allRegularMessages;
  85. NSInteger rowIndex = [indexPath row];
  86. if (messageDefs.count > rowIndex) {
  87. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
  88. if (cell == nil) {
  89. cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
  90. reuseIdentifier:CellIdentifier];
  91. }
  92. UILabel *titleLabel = (UILabel *)[cell.contentView viewWithTag:10];
  93. UILabel *modeLabel = (UILabel *)[cell.contentView viewWithTag:20];
  94. UIImageView *imageView = (UIImageView *)[cell.contentView viewWithTag:30];
  95. UILabel *triggerLabel = (UILabel *)[cell.contentView viewWithTag:40];
  96. titleLabel.text = messageDefs[rowIndex].renderData.contentData.titleText;
  97. modeLabel.text = [self
  98. viewModeDisplayString:messageDefs[rowIndex].renderData.renderingEffectSettings.viewMode];
  99. triggerLabel.text = [self triggerDisplayString:messageDefs[rowIndex].renderTriggers];
  100. [messageDefs[rowIndex].renderData.contentData
  101. loadImageDataWithBlock:^(NSData *_Nullable imageData, NSData *_Nullable landscapeImageData,
  102. NSError *error) {
  103. if (error) {
  104. NSLog(@"error in loading image: %@", error.localizedDescription);
  105. } else {
  106. UIImage *image = [UIImage imageWithData:imageData];
  107. dispatch_async(dispatch_get_main_queue(), ^{
  108. [imageView setImage:image];
  109. });
  110. }
  111. }];
  112. return cell;
  113. } else {
  114. return nil;
  115. }
  116. }
  117. @end