Firebase In-app messaging callbacks (#2354)

* FIRInAppMessagingDisplayMessage and FIRInAppMessagingDisplayDelegate refactor + downstream changes

* More downstream changes from FIRInAppMessagingDisplayDelegate, calling through to app-side delegate from default display executor

* Add delegate property on FIRInAppMessaging

* Display SDK changes to pass through in app message with callbacks

* Headless SDK unit test refactoring

* Display test app downstream changes

* Pull in headless SDK in display app, no need to have this come in as a framework anymore

* Run scripts/style.sh

* Remove WIP test

* Refactor FIRIAMDIsplayExecutor to take an InAppMessaging object for testing

* Depend on FirebaseAnalyticsInterop in UI test app

* File imports for FIRInAppMessaging files

* Remove FirebaseInAppMessaging imports
This commit is contained in:
christibbs authored and GitHub committed 2019-02-08 14:20:27 -08:00
1 parent 26f021a838
commit c8899e294d
20 files changed
+547 -187

No files matched your search

@@ -16,20 +16,19 @@
import UIKit
import FirebaseInAppMessaging
class BannerMessageViewController: CommonMessageTestVC {
let displayImpl = InAppMessagingDefaultDisplayImpl()
@IBOutlet var verifyLabel: UILabel!
override func messageClicked() {
super.messageClicked()
override func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
super.messageClicked(inAppMessage)
verifyLabel.text = "message clicked!"
}
override func messageDismissed(dismissType dimissType: FIRInAppMessagingDismissType) {
super.messageClicked()
override func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
dismissType: FIRInAppMessagingDismissType) {
super.messageClicked(inAppMessage)
verifyLabel.text = "message dismissed!"
}
@@ -38,26 +37,32 @@ class BannerMessageViewController: CommonMessageTestVC {
let imageRawData = produceImageOfSize(size: CGSize(width: 200, height: 200))
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingBannerDisplay(messageID: "messageId",
renderAsTestMessage: false,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData)
let bannerMessage = InAppMessagingBannerDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
displayImpl.displayMessage(bannerMessage, displayDelegate: self)
}
@IBAction func showBannerViewWithoutImageTapped(_ sender: Any) {
verifyLabel.text = "Verification Label"
let modalMessage = InAppMessagingBannerDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: nil)
imageData: nil,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -68,12 +73,15 @@ class BannerMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingBannerDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData)
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -84,12 +92,15 @@ class BannerMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingBannerDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData)
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -100,12 +111,15 @@ class BannerMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingBannerDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: longBodyText,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData)
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -116,12 +130,15 @@ class BannerMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingBannerDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: longTitleText,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData)
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -16,22 +16,27 @@
import Foundation
import FirebaseInAppMessaging
class CommonMessageTestVC: UIViewController, InAppMessagingDisplayDelegate {
var messageClosedWithClick = false
var messageClosedDismiss = false
// start of InAppMessagingDisplayDelegate functions
func messageClicked() {
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
print("message clicked to follow action url")
messageClosedWithClick = true
}
func impressionDetected() { print("valid impression detected") }
func displayErrorEncountered(_ error: Error) { print("error encountered \(error)") }
func messageDismissed(dismissType: FIRInAppMessagingDismissType) {
func impressionDetected(for inAppMessage: InAppMessagingDisplayMessage) {
print("valid impression detected")
}
func displayError(for inAppMessage: InAppMessagingDisplayMessage, error: Error) {
print("error encountered \(error)")
}
func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
dismissType: FIRInAppMessagingDismissType) {
print("message dimissed with type \(dismissType)")
messageClosedDismiss = true
}
@@ -14,20 +14,20 @@
* limitations under the License.
*/
import UIKit
import FirebaseInAppMessaging
class ImageOnlyMessageViewController: CommonMessageTestVC {
let displayImpl = InAppMessagingDefaultDisplayImpl()
@IBOutlet var verifyLabel: UILabel!
override func messageClicked() {
super.messageClicked()
override func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
super.messageClicked(inAppMessage)
verifyLabel.text = "message clicked!"
}
override func messageDismissed(dismissType dimissType: FIRInAppMessagingDismissType) {
super.messageClicked()
override func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
dismissType: FIRInAppMessagingDismissType) {
super.messageClicked(inAppMessage)
verifyLabel.text = "message dismissed!"
}
@@ -37,9 +37,11 @@ class ImageOnlyMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingImageOnlyDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
imageData: fiamImageData)
triggerType: .onAnalyticsEvent,
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -49,9 +51,11 @@ class ImageOnlyMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingImageOnlyDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
imageData: fiamImageData)
triggerType: .onAnalyticsEvent,
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -61,9 +65,11 @@ class ImageOnlyMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingImageOnlyDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
imageData: fiamImageData)
triggerType: .onAnalyticsEvent,
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -73,9 +79,11 @@ class ImageOnlyMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingImageOnlyDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
imageData: fiamImageData)
triggerType: .onAnalyticsEvent,
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -84,9 +92,11 @@ class ImageOnlyMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingImageOnlyDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
imageData: fiamImageData)
triggerType: .onAnalyticsEvent,
imageData: fiamImageData,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
}
@@ -15,20 +15,20 @@
*/
import UIKit
import FirebaseInAppMessaging
class ModalMessageViewController: CommonMessageTestVC {
let displayImpl = InAppMessagingDefaultDisplayImpl()
@IBOutlet var verifyLabel: UILabel!
override func messageClicked() {
super.messageClicked()
override func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage) {
super.messageClicked(inAppMessage)
verifyLabel.text = "message clicked!"
}
override func messageDismissed(dismissType dimissType: FIRInAppMessagingDismissType) {
super.messageClicked()
override func messageDismissed(_ inAppMessage: InAppMessagingDisplayMessage,
dismissType: FIRInAppMessagingDismissType) {
super.messageClicked(inAppMessage)
verifyLabel.text = "message dismissed!"
}
@@ -38,13 +38,16 @@ class ModalMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -52,13 +55,16 @@ class ModalMessageViewController: CommonMessageTestVC {
@IBAction func showWithoutImage(_ sender: Any) {
verifyLabel.text = "Verification Label"
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: nil,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -69,13 +75,16 @@ class ModalMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData,
actionButton: nil)
actionButton: nil,
actionURL: nil)
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -83,13 +92,16 @@ class ModalMessageViewController: CommonMessageTestVC {
@IBAction func showWithoutImageAndButton(_ sender: Any) {
verifyLabel.text = "Verification Label"
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: nil,
actionButton: nil)
actionButton: nil,
actionURL: nil)
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -97,13 +109,16 @@ class ModalMessageViewController: CommonMessageTestVC {
@IBAction func showWithLargeBody(_ sender: Any) {
verifyLabel.text = "Verification Label"
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: longBodyText,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: nil,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -114,13 +129,16 @@ class ModalMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
titleText: longBodyText,
triggerType: .onAnalyticsEvent,
titleText: longTitleText,
bodyText: longBodyText,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -128,13 +146,16 @@ class ModalMessageViewController: CommonMessageTestVC {
@IBAction func showWithLargeTitle(_ sender: Any) {
verifyLabel.text = "Verification Label"
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: longBodyText,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: nil,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -142,13 +163,16 @@ class ModalMessageViewController: CommonMessageTestVC {
@IBAction func showWithLargeTitleAndBodyWithoutImage(_ sender: Any) {
verifyLabel.text = "Verification Label"
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
titleText: longBodyText,
triggerType: .onAnalyticsEvent,
titleText: longTitleText,
bodyText: longBodyText,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: nil,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -156,13 +180,16 @@ class ModalMessageViewController: CommonMessageTestVC {
@IBAction func showWithLargeTitleWithoutBodyWithoutImageWithoutButton(_ sender: Any) {
verifyLabel.text = "Verification Label"
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: longBodyText,
bodyText: "",
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: nil,
actionButton: nil)
actionButton: nil,
actionURL: nil)
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -173,13 +200,16 @@ class ModalMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}
@@ -190,13 +220,16 @@ class ModalMessageViewController: CommonMessageTestVC {
let fiamImageData = InAppMessagingImageData(imageURL: "url not important", imageData: imageRawData!)
let modalMessage = InAppMessagingModalDisplay(messageID: "messageId",
campaignName: "testCampaign",
renderAsTestMessage: false,
triggerType: .onAnalyticsEvent,
titleText: normalMessageTitle,
bodyText: normalMessageBody,
textColor: UIColor.black,
backgroundColor: UIColor.blue,
imageData: fiamImageData,
actionButton: defaultActionButton)
actionButton: defaultActionButton,
actionURL: URL(string: "http://firebase.com"))
displayImpl.displayMessage(modalMessage, displayDelegate: self)
}