CardMessageViewController.swift 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275
  1. /*
  2. * Copyright 2019 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 UIKit
  17. class CardMessageViewController: CommonMessageTestVC {
  18. func testCardMessage(titleText: String, body: String?, textColor: UIColor,
  19. portraitImageData: InAppMessagingImageData,
  20. landscapeImageData: InAppMessagingImageData?, backgroundColor: UIColor,
  21. primaryActionButton: InAppMessagingActionButton, primaryActionURL: URL?,
  22. secondaryActionButton: InAppMessagingActionButton?,
  23. secondaryActionURL: URL?) -> InAppMessagingCardDisplay {
  24. return InAppMessagingCardDisplay(
  25. campaignName: "campaignName",
  26. titleText: titleText,
  27. bodyText: body,
  28. textColor: textColor,
  29. portraitImageData: portraitImageData,
  30. landscapeImageData: landscapeImageData,
  31. backgroundColor: backgroundColor,
  32. primaryActionButton: primaryActionButton,
  33. secondaryActionButton: secondaryActionButton,
  34. primaryActionURL: primaryActionURL,
  35. secondaryActionURL: secondaryActionURL,
  36. appData: nil
  37. )
  38. }
  39. let displayImpl = InAppMessagingDefaultDisplayImpl()
  40. @IBOutlet var verifyLabel: UILabel!
  41. override func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage,
  42. with action: InAppMessagingAction) {
  43. super.messageClicked(inAppMessage, with: action)
  44. verifyLabel.text = "message clicked!"
  45. }
  46. override func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
  47. dismissType: InAppMessagingDismissType) {
  48. super.messageDismissed(inAppMessage, dismissType: dismissType)
  49. verifyLabel.text = "message dismissed!"
  50. }
  51. @IBAction func showRegularOneButtonWithBothImages(_ sender: Any) {
  52. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  53. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  54. imageData: portraitImageRawData!)
  55. let landscapeImageRawData = produceImageOfSize(size: CGSize(width: 200, height: 200))
  56. let landscapeImageData = InAppMessagingImageData(imageURL: "url not important",
  57. imageData: landscapeImageRawData!)
  58. let cardMessage = testCardMessage(
  59. titleText: normalMessageTitle,
  60. body: normalMessageBody,
  61. textColor: UIColor.black,
  62. portraitImageData: portraitImageData,
  63. landscapeImageData: landscapeImageData,
  64. backgroundColor: UIColor.white,
  65. primaryActionButton: defaultActionButton,
  66. primaryActionURL: URL(string: "http://google.com")!,
  67. secondaryActionButton: nil,
  68. secondaryActionURL: nil
  69. )
  70. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  71. }
  72. @IBAction func showRegularOneButtonWithOnlyPortrait(_ sender: Any) {
  73. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  74. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  75. imageData: portraitImageRawData!)
  76. let cardMessage = testCardMessage(
  77. titleText: normalMessageTitle,
  78. body: nil,
  79. textColor: UIColor.black,
  80. portraitImageData: portraitImageData,
  81. landscapeImageData: nil,
  82. backgroundColor: UIColor.white,
  83. primaryActionButton: defaultActionButton,
  84. primaryActionURL: URL(string: "http://google.com")!,
  85. secondaryActionButton: nil,
  86. secondaryActionURL: nil
  87. )
  88. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  89. }
  90. @IBAction func showRegularTwoButtonWithBothImages(_ sender: Any) {
  91. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  92. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  93. imageData: portraitImageRawData!)
  94. let landscapeImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 300))
  95. let landscapeImageData = InAppMessagingImageData(imageURL: "url not important",
  96. imageData: landscapeImageRawData!)
  97. let cardMessage = testCardMessage(
  98. titleText: normalMessageTitle,
  99. body: normalMessageBody,
  100. textColor: UIColor.black,
  101. portraitImageData: portraitImageData,
  102. landscapeImageData: landscapeImageData,
  103. backgroundColor: UIColor.white,
  104. primaryActionButton: defaultActionButton,
  105. primaryActionURL: URL(string: "http://google.com")!,
  106. secondaryActionButton: defaultSecondaryActionButton,
  107. secondaryActionURL: nil
  108. )
  109. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  110. }
  111. @IBAction func showLongTitleRegularBody(_ sender: Any) {
  112. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  113. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  114. imageData: portraitImageRawData!)
  115. let cardMessage = testCardMessage(
  116. titleText: longTitleText,
  117. body: normalMessageBody,
  118. textColor: UIColor.black,
  119. portraitImageData: portraitImageData,
  120. landscapeImageData: nil,
  121. backgroundColor: UIColor.white,
  122. primaryActionButton: defaultActionButton,
  123. primaryActionURL: URL(string: "http://google.com")!,
  124. secondaryActionButton: defaultSecondaryActionButton,
  125. secondaryActionURL: nil
  126. )
  127. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  128. }
  129. @IBAction func showRegularTitleLongBody(_ sender: Any) {
  130. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  131. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  132. imageData: portraitImageRawData!)
  133. let cardMessage = testCardMessage(
  134. titleText: normalMessageTitle,
  135. body: longBodyText,
  136. textColor: UIColor.black,
  137. portraitImageData: portraitImageData,
  138. landscapeImageData: nil,
  139. backgroundColor: UIColor.white,
  140. primaryActionButton: defaultActionButton,
  141. primaryActionURL: URL(string: "http://google.com")!,
  142. secondaryActionButton: defaultSecondaryActionButton,
  143. secondaryActionURL: nil
  144. )
  145. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  146. }
  147. @IBAction func showLongTitleNoBody(_ sender: Any) {
  148. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  149. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  150. imageData: portraitImageRawData!)
  151. let cardMessage = testCardMessage(
  152. titleText: longTitleText,
  153. body: nil,
  154. textColor: UIColor.black,
  155. portraitImageData: portraitImageData,
  156. landscapeImageData: nil,
  157. backgroundColor: UIColor.white,
  158. primaryActionButton: defaultActionButton,
  159. primaryActionURL: URL(string: "http://google.com")!,
  160. secondaryActionButton: defaultSecondaryActionButton,
  161. secondaryActionURL: nil
  162. )
  163. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  164. }
  165. @IBAction func showLongPrimaryButton(_ sender: Any) {
  166. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  167. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  168. imageData: portraitImageRawData!)
  169. let cardMessage = testCardMessage(
  170. titleText: longTitleText,
  171. body: normalMessageBody,
  172. textColor: UIColor.black,
  173. portraitImageData: portraitImageData,
  174. landscapeImageData: nil,
  175. backgroundColor: UIColor.white,
  176. primaryActionButton: longTextButton,
  177. primaryActionURL: URL(string: "http://google.com")!,
  178. secondaryActionButton: defaultSecondaryActionButton,
  179. secondaryActionURL: nil
  180. )
  181. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  182. }
  183. @IBAction func showLongSecondaryButton(_ sender: Any) {
  184. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
  185. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  186. imageData: portraitImageRawData!)
  187. let cardMessage = testCardMessage(
  188. titleText: longTitleText,
  189. body: normalMessageBody,
  190. textColor: UIColor.black,
  191. portraitImageData: portraitImageData,
  192. landscapeImageData: nil,
  193. backgroundColor: UIColor.white,
  194. primaryActionButton: defaultActionButton,
  195. primaryActionURL: URL(string: "http://google.com")!,
  196. secondaryActionButton: longTextButton,
  197. secondaryActionURL: nil
  198. )
  199. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  200. }
  201. @IBAction func showSmallImage(_ sender: Any) {
  202. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 30, height: 20))
  203. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  204. imageData: portraitImageRawData!)
  205. let cardMessage = testCardMessage(
  206. titleText: normalMessageTitle,
  207. body: normalMessageBody,
  208. textColor: UIColor.black,
  209. portraitImageData: portraitImageData,
  210. landscapeImageData: nil,
  211. backgroundColor: UIColor.white,
  212. primaryActionButton: defaultActionButton,
  213. primaryActionURL: URL(string: "http://google.com")!,
  214. secondaryActionButton: nil,
  215. secondaryActionURL: nil
  216. )
  217. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  218. }
  219. @IBAction func showHugeImage(_ sender: Any) {
  220. let portraitImageRawData = produceImageOfSize(size: CGSize(width: 3000, height: 2000))
  221. let portraitImageData = InAppMessagingImageData(imageURL: "url not important",
  222. imageData: portraitImageRawData!)
  223. let cardMessage = testCardMessage(
  224. titleText: normalMessageTitle,
  225. body: normalMessageBody,
  226. textColor: UIColor.black,
  227. portraitImageData: portraitImageData,
  228. landscapeImageData: nil,
  229. backgroundColor: UIColor.white,
  230. primaryActionButton: defaultActionButton,
  231. primaryActionURL: URL(string: "http://google.com")!,
  232. secondaryActionButton: nil,
  233. secondaryActionURL: nil
  234. )
  235. displayImpl.displayMessage(cardMessage, displayDelegate: self)
  236. }
  237. }