mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-09 22:36:01 +05:45
321 lines
12 KiB
Swift
321 lines
12 KiB
Swift
/*
|
|||
|
|
* Copyright 2019 Google
|
||
|
|
*
|
||
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
|
* you may not use this file except in compliance with the License.
|
||
|
|
* You may obtain a copy of the License at
|
||
|
|
*
|
||
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
*
|
||
|
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
|
* See the License for the specific language governing permissions and
|
||
|
|
* limitations under the License.
|
||
|
|
*/
|
||
|
|
|
||
|
|
import UIKit
|
||
|
|
|
||
|
|
class CardMessageViewController: CommonMessageTestVC {
|
||
|
|
class TestableCardMessage: InAppMessagingCardDisplay {
|
||
|
|
var writableTitle: String
|
||
|
|
var writableBody: String?
|
||
|
|
var writableTextColor: UIColor
|
||
|
|
var writablePortraitImageData: InAppMessagingImageData
|
||
|
|
var writableLandscapeImageData: InAppMessagingImageData?
|
||
|
|
var writableBackgroundColor: UIColor
|
||
|
|
var writablePrimaryActionButton: InAppMessagingActionButton
|
||
|
|
var writablePrimaryActionURL: URL
|
||
|
|
var writableSecondaryActionButton: InAppMessagingActionButton?
|
||
|
|
var writableSecondaryActionURL: URL?
|
||
|
|
|
||
|
|
override var title: String {
|
||
|
|
return writableTitle
|
||
|
|
}
|
||
|
|
|
||
|
|
override var body: String? {
|
||
|
|
return writableBody
|
||
|
|
}
|
||
|
|
|
||
|
|
override var textColor: UIColor {
|
||
|
|
return writableTextColor
|
||
|
|
}
|
||
|
|
|
||
|
|
override var portraitImageData: InAppMessagingImageData {
|
||
|
|
return writablePortraitImageData
|
||
|
|
}
|
||
|
|
|
||
|
|
override var landscapeImageData: InAppMessagingImageData? {
|
||
|
|
return writableLandscapeImageData
|
||
|
|
}
|
||
|
|
|
||
|
|
override var displayBackgroundColor: UIColor {
|
||
|
|
return writableBackgroundColor
|
||
|
|
}
|
||
|
|
|
||
|
|
override var primaryActionButton: InAppMessagingActionButton {
|
||
|
|
return writablePrimaryActionButton
|
||
|
|
}
|
||
|
|
|
||
|
|
override var primaryActionURL: URL {
|
||
|
|
return writablePrimaryActionURL
|
||
|
|
}
|
||
|
|
|
||
|
|
override var secondaryActionButton: InAppMessagingActionButton? {
|
||
|
|
return writablePrimaryActionButton
|
||
|
|
}
|
||
|
|
|
||
|
|
override var secondaryActionURL: URL? {
|
||
|
|
return writableSecondaryActionURL
|
||
|
|
}
|
||
|
|
|
||
|
|
init(titleText: String,
|
||
|
|
body: String?,
|
||
|
|
textColor: UIColor,
|
||
|
|
portraitImageData: InAppMessagingImageData,
|
||
|
|
landscapeImageData: InAppMessagingImageData?,
|
||
|
|
backgroundColor: UIColor,
|
||
|
|
primaryActionButton: InAppMessagingActionButton,
|
||
|
|
primaryActionURL: URL,
|
||
|
|
secondaryActionButton: InAppMessagingActionButton?,
|
||
|
|
secondaryActionURL: URL?) {
|
||
|
|
writableTitle = titleText
|
||
|
|
writableBody = body
|
||
|
|
writableTextColor = textColor
|
||
|
|
writablePortraitImageData = portraitImageData
|
||
|
|
writableLandscapeImageData = landscapeImageData
|
||
|
|
writableBackgroundColor = backgroundColor
|
||
|
|
writablePrimaryActionButton = primaryActionButton
|
||
|
|
writablePrimaryActionURL = primaryActionURL
|
||
|
|
writableSecondaryActionButton = secondaryActionButton
|
||
|
|
writableSecondaryActionURL = secondaryActionURL
|
||
|
|
super.init(messageID: "testID",
|
||
|
|
campaignName: "testCampaign",
|
||
|
|
renderAsTestMessage: false,
|
||
|
|
messageType: .card,
|
||
|
|
triggerType: .onAnalyticsEvent)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
let displayImpl = InAppMessagingDefaultDisplayImpl()
|
||
|
|
|
||
|
|
@IBOutlet var verifyLabel: UILabel!
|
||
|
|
|
||
|
|
override func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage,
|
||
|
|
with action: InAppMessagingAction) {
|
||
|
|
super.messageClicked(inAppMessage, with: action)
|
||
|
|
verifyLabel.text = "message clicked!"
|
||
|
|
}
|
||
|
|
|
||
|
|
override func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
|
||
|
|
dismissType: FIRInAppMessagingDismissType) {
|
||
|
|
super.messageDismissed(inAppMessage, dismissType: dismissType)
|
||
|
|
verifyLabel.text = "message dismissed!"
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showRegularOneButtonWithBothImages(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let landscapeImageRawData = produceImageOfSize(size: CGSize(width: 200, height: 200))
|
||
|
|
let landscapeImageData = InAppMessagingImageData(imageURL: "url not important", imageData: landscapeImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: normalMessageTitle,
|
||
|
|
body: normalMessageBody,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: landscapeImageData,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: nil,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showRegularOneButtonWithOnlyPortrait(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: normalMessageTitle,
|
||
|
|
body: nil,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: nil,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showRegularTwoButtonWithBothImages(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let landscapeImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 300))
|
||
|
|
let landscapeImageData = InAppMessagingImageData(imageURL: "url not important", imageData: landscapeImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: normalMessageTitle,
|
||
|
|
body: normalMessageBody,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: landscapeImageData,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: defaultSecondaryActionButton,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showLongTitleRegularBody(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: longTitleText,
|
||
|
|
body: normalMessageBody,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: defaultSecondaryActionButton,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showRegularTitleLongBody(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: normalMessageTitle,
|
||
|
|
body: longBodyText,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: defaultSecondaryActionButton,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showLongTitleNoBody(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: longTitleText,
|
||
|
|
body: nil,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: defaultSecondaryActionButton,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showLongPrimaryButton(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: longTitleText,
|
||
|
|
body: normalMessageBody,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: longTextButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: defaultSecondaryActionButton,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showLongSecondaryButton(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 300, height: 200))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: longTitleText,
|
||
|
|
body: normalMessageBody,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: longTextButton,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showSmallImage(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 30, height: 20))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: normalMessageTitle,
|
||
|
|
body: normalMessageBody,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: nil,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
|
||
|
|
@IBAction func showHugeImage(_ sender: Any) {
|
||
|
|
let portraitImageRawData = produceImageOfSize(size: CGSize(width: 3000, height: 2000))
|
||
|
|
let portraitImageData = InAppMessagingImageData(imageURL: "url not important", imageData: portraitImageRawData!)
|
||
|
|
|
||
|
|
let cardMessage = TestableCardMessage(
|
||
|
|
titleText: normalMessageTitle,
|
||
|
|
body: normalMessageBody,
|
||
|
|
textColor: UIColor.black,
|
||
|
|
portraitImageData: portraitImageData,
|
||
|
|
landscapeImageData: nil,
|
||
|
|
backgroundColor: UIColor.white,
|
||
|
|
primaryActionButton: defaultActionButton,
|
||
|
|
primaryActionURL: URL(string: "http://google.com")!,
|
||
|
|
secondaryActionButton: nil,
|
||
|
|
secondaryActionURL: nil
|
||
|
|
)
|
||
|
|
|
||
|
|
displayImpl.displayMessage(cardMessage, displayDelegate: self)
|
||
|
|
}
|
||
|
|
}
|