* URL strings in in-app messages are sanitized and, when possible, recovered before they’re used in the `NSURL` initializer
* Added validation for image URLs, which must use the HTTPS scheme, according to the Firebase Console
* Updated `FIRIAMFetchResponseParserTests` to test URL validation and recovery
* Fixed a bug where an invalid image URL string in an in-app message crashed the client app
* A URL string is considered invalid if the `[NSURL URLWithString:]` method produces `nil`
* Expose most of the initializers for message metadata classes for use in unit testing or SwiftUI previews
* Fix import in FIRIAMFetchFlowTests
* Simplify UI test app to use now public initializers (doesn't build)
* Update public header to use stripped down message initializers that only include parameters that effect layout
* Fix nullability for body text in in-app message initializers, add helper methods for generating mock messages
* Remove default image for image-only convenience initializer
* Make initializers non optional, document force unwraps
* Finalize helper methods, update test project to use the preview helpers
* Update UI tests to use new initializers
* Revert Cocoapods related project changes
* Add copyright notices to new files
* Change target version of DefaultUI test app back to 10.0
* Add unit tests for
* Fix color that wasn't available on tvOS
* Udpdate CHANGELOG
* Update UI test app to 13.2 to avoid [DVTiPhoneSimulator -primaryInstrumentsServer was called from the main thread
* Update to target 13.2
* Revert "Update to target 13.2"
This reverts commit 8189b64b68.
* Revert "Update UI test app to 13.2 to avoid [DVTiPhoneSimulator -primaryInstrumentsServer was called from the main thread"
This reverts commit 2371ff2a84.
* Remove unnecessary ABTExperimentPayload import. Fix nullability of ABTExperimentPayload param in initializers
* Revert iOS target in project.pbxproj file
* Revert removals of references to GoogleService-Info.plist
* Let Xcode handle spacing in project file
* Removed `FIRIAMRenderingWindowHelper`’s `UIWindowForImageOnlyView` method whose body was identical to `UIWindowForModalView`’s
* Renamed `UIWindowForModalView` to `windowForBlockingView` and `UIWindowForBannerView` to `windowForNonBlockingView`, respectively, to clarify their purpose
* Revert to previous nil check on experiment JSON
* Add Swift extensions podspec
* Add viewmodifier for displaying custom in-app messages w/ SwiftUI
* Add Multiplatform project to integration test SwiftUI pod
* We don't support macOS yet, comment that out from the Podfile
* Fix variable renaming bug
* View modifier implementation that works, but design is questionable
* Super basic integration
* Split view modifiers based on in-app message subtype
* Fix versioning in podspec
* Configure Firebase in test app
* Remove trailing whitespace
* Clean up SDK fetching code, sample app
* Updates to sample code, fully functional modal message now
* Update implementing app example
* Better code readability for view modifiers
* Add unit tests for DelegateBridge
* Add test target to pod spec
* Add copyright notices
* Remove whitespace from pod spec
* Add auto-complete documentation for in-app message extensions
* Lowered min target
* Update Package.swift
* First pass at CI updates
* @available(13) for SwiftUI structs
* Use singleton DelegateBridge
* Update inappmessaging.yml
* Run scripts/style.sh
* Update build.sh
* Modify build.sh
* Update CHANGELOG, try something new with GHA configuration
* Let's try this for GHA
* Fully qualify FIAM message enums
* Remove redundant type declaration
* Let's try direct instantiation of messages in unit tests
* Test CI build works without actual test cases
* Let's try this, making init available.
* Try exposing initializer
* Expose simpler initializer for in-app message superclass
* Fix up UI test app initializers
* Update CHANGELOG, GHA workflows
* Cleaner GHA test flow
* Clean up custom in-app message view modifier implementation
* Configuration cleanup
* Add some tests to ensure FIAM SwiftUI API compiles
* Add SpecsDev to Podfile of integration testing app. Make @State var private
* Better accessibility labels for FIAM images and close buttons
* At FIAM display time, announce that the message has appeared in VoiceOver mode
* In VoiceOver mode, announce the close button last. This is a better accessibility experience for finding the close button.
* For modal messages, include the action button in accessibility elements. Exclude the image view if there's no image.
* Update CHANGELOG
* Include campaign name in accessibility label for images
* Fix failing modal message UI tests
* Start tracking conversions on in-app message campaigns that don't have an action URL. Do this at impression time. (Initial implementation commit)
* Add test coverage, use FIRIAMMessageDefinition in implementation for cleaner code all-around
* Add CHANGELOG
* Update CHANGELOG
* Added suppressMessageDisplay Check Before Message Display
* Updated FIRIAMDisplayExecutorTests
* Updated Format with style.sh
* Added Logging for Early Return in FIRIAMDisplayExecutor
* Revert to previous nil check on experiment JSON
* Remove assert in FIRIAMDisplayExecutor
* Update CHANGELOG
* Change nullability of imageData in displayMessageWithDefinition:
* Keep nullability with card initializers, put nil message return back if imageData is nil
* Revert back to explicit non-null
* Actually shouldn't be nonnull due to other message types w/ optional imageData 😅
* If the app doesn't have a scene delegate, use initWithFrame: to create the in-app message window
* Refactor window creation method for iOS 13 and above
* Add CHANGELOG entry
* Fix CHANGELOG entry
* Remove deprecated FIAM API
* Remove call to deprecated method
* Fix imports
* Modify view controllers to use dummy test subclasses for message objects
* Add bridging header, include it in test app
* Add CHANGELOG entry
* Revert "Add CHANGELOG entry"
This reverts commit 55c0bbcff5.
* Add CHANGELOG entry
* Swift formatting
* Add LLC to copyright notice
* Revert "Fix imports"
This reverts commit 55fdbbd3e0.