diff --git a/BrazeKit.podspec b/BrazeKit.podspec index 4849435433..053fa3791a 100644 --- a/BrazeKit.podspec +++ b/BrazeKit.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'BrazeKit' - s.version = '5.5.1' + s.version = '5.6.0' s.summary = 'Braze Main SDK library providing support for analytics and push notifications.' s.homepage = 'https://braze.com' @@ -9,8 +9,8 @@ Pod::Spec.new do |s| s.authors = 'Braze, Inc.' s.source = { - :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazeKit-CocoaPods.zip', - :sha256 => '380dd46a29386bedfe72a3e2e18a7248aacef5623501b8196fc8d6bf130c0c9e' + :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazeKit-CocoaPods.zip', + :sha256 => 'c35fa043e86919936cae61e191c95df9b03e95c0aac2e797b4d26e20f21786e3' } s.swift_version = '5.0' diff --git a/BrazeLocation.podspec b/BrazeLocation.podspec index ecb739c54a..e276def8ca 100644 --- a/BrazeLocation.podspec +++ b/BrazeLocation.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'BrazeLocation' - s.version = '5.5.1' + s.version = '5.6.0' s.summary = 'Braze location library providing support for location analytics and geofence monitoring.' s.homepage = 'https://braze.com' @@ -9,8 +9,8 @@ Pod::Spec.new do |s| s.authors = 'Braze, Inc.' s.source = { - :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazeLocation-CocoaPods.zip', - :sha256 => 'e88cf1fd8ad099269ecc93b8f0a8ca8b54bec7612e13ed3d8fd0b510faa471af' + :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazeLocation-CocoaPods.zip', + :sha256 => '185f30e2b993ce39ee1f6053bf7f794db1b6d851ceff48777fb0fd0d5fabce84' } s.swift_version = '5.0' @@ -21,5 +21,5 @@ Pod::Spec.new do |s| # Depends on BrazeKit because BrazeKit includes the internal _BrazeLocationClient symbols required # for linking against BrazeLocation. - s.dependency 'BrazeKit', '5.5.1' + s.dependency 'BrazeKit', '5.6.0' end diff --git a/BrazeNotificationService.podspec b/BrazeNotificationService.podspec index d22eee6e8c..70d651c5b3 100644 --- a/BrazeNotificationService.podspec +++ b/BrazeNotificationService.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'BrazeNotificationService' - s.version = '5.5.1' + s.version = '5.6.0' s.summary = 'Braze notification service extension library providing support for Rich Push notifications.' s.homepage = 'https://braze.com' @@ -9,8 +9,8 @@ Pod::Spec.new do |s| s.authors = 'Braze, Inc.' s.source = { - :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazeNotificationService-CocoaPods.zip', - :sha256 => '05991a10529346219ad4101d1c6305bc578555b26136312f1c2619338deeb07a' + :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazeNotificationService-CocoaPods.zip', + :sha256 => '366538682b5d6268246733366b69689cb19c175b450747f9bd675a6df830bf73' } s.swift_version = '5.0' diff --git a/BrazePushStory.podspec b/BrazePushStory.podspec index 4caf40402f..9eb8cc9809 100644 --- a/BrazePushStory.podspec +++ b/BrazePushStory.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'BrazePushStory' - s.version = '5.5.1' + s.version = '5.6.0' s.summary = 'Braze notification content extension library providing support for Push Stories.' s.homepage = 'https://braze.com' @@ -9,8 +9,8 @@ Pod::Spec.new do |s| s.authors = 'Braze, Inc.' s.source = { - :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazePushStory-CocoaPods.zip', - :sha256 => '361fe3ec0e7fd03f5eafe8c6f582fbaeb7d60af765fe01cb1136b423b4176123' + :http => 'https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazePushStory-CocoaPods.zip', + :sha256 => 'c55cd87e925d56a834d606e78e3ad5b54fb3c683ce92be58c5f9a043cf748b1c' } s.swift_version = '5.0' diff --git a/BrazeUI.podspec b/BrazeUI.podspec index a8ba6204c4..2af59ca860 100644 --- a/BrazeUI.podspec +++ b/BrazeUI.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'BrazeUI' - s.version = '5.5.1' + s.version = '5.6.0' s.summary = 'Braze-provided user interface library for In-App Messages.' s.homepage = 'https://braze.com' @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.license = { :type => 'Commercial' } s.authors = 'Braze, Inc.' - s.source = { :git => 'https://github.com/braze-inc/braze-swift-sdk.git', :tag => '5.5.1' } + s.source = { :git => 'https://github.com/braze-inc/braze-swift-sdk.git', :tag => '5.6.0' } s.swift_version = '5.0' s.ios.deployment_target = '10.0' @@ -17,5 +17,5 @@ Pod::Spec.new do |s| s.source_files = 'Sources/BrazeUI/**/*.swift' s.resource_bundles = { 'BrazeUI' => 'Sources/BrazeUI/Resources/**/*' } - s.dependency 'BrazeKit', '5.5.1' + s.dependency 'BrazeKit', '5.6.0' end diff --git a/CHANGELOG.md b/CHANGELOG.md index 04ad7b1a49..41455abd04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,44 @@ +## 5.6.0 + +##### Fixed +- The modal webview controller presented after a click now correctly handles non-HTTP(S) URLs (e.g. App Store URLs). +- Fixes an issue preventing some test HTML in-app messages from displaying images. + +##### Added +- Learn how to easily customize `BrazeUI` in-app message and content cards UI components with the following documentation and example code: + - [In-App Message UI Customization] article + - [Content Cards UI Customization] article + - `InAppMessageUI-Customization` example scheme + - `ContentCardUI-Customization` example scheme +- Adds new attributes to `BrazeUI` in-app message UI components: + - `cornerCurve` to change the [`cornerCurve`] + - `buttonsAttributes` to change the font, spacing and corner radius of the buttons + - `imageCornerRadius` to change the image corner radius for slideups + - `imageCornerCurve` to change the image [`cornerCurve`] for slideups + - `dismissible` to change whether slideups can be interactively dismissed +- Adds direct accessors to the in-app message view subclass on the [`BrazeInAppMessageUI.messageView`] property. + - [`slideup`], [`modal`], [`modalImage`], [`full`], [`fullImage`], [`html`], [`control`]. +- Adds direct accessors to the content card `title`, `description` and `domain` when available. +- Adds `Braze.Notifications.isInternalNotification` to check if a push notification was sent by Braze for an internal feature. +- Adds [`brazeBridge.changeUser()`] to the HTML in-app messages JavaScript bridge. + +[In-App Message UI Customization]: https://braze-inc.github.io/braze-swift-sdk/documentation/braze/in-app-message-customization +[Content Cards UI Customization]: https://braze-inc.github.io/braze-swift-sdk/documentation/braze/content-cards-customization +[`cornerCurve`]: https://developer.apple.com/documentation/quartzcore/calayer/3152596-cornercurve +[`BrazeInAppMessageUI.messageView`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/brazeinappmessageui/messageview +[`brazeBridge.changeUser()`]: https://www.braze.com/docs/user_guide/message_building_by_channel/in-app_messages/customize/html_in-app_messages/#bridge +[`slideup`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/inappmessageview/slideup +[`modal`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/inappmessageview/modal +[`modalImage`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/inappmessageview/modalimage +[`full`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/inappmessageview/full +[`fullImage`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/inappmessageview/fullimage +[`html`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/inappmessageview/html +[`control`]: https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/inappmessageview/control + +##### Changed + +- The `applyAttributes()` method for `BrazeContentCardUI` views now take the `attributes` explicitly as a parameter. + ## 5.5.1 ##### Fixed diff --git a/Examples/ObjC/Examples-CocoaPods.xcodeproj/project.pbxproj b/Examples/ObjC/Examples-CocoaPods.xcodeproj/project.pbxproj index 625730200e..f29673603c 100644 --- a/Examples/ObjC/Examples-CocoaPods.xcodeproj/project.pbxproj +++ b/Examples/ObjC/Examples-CocoaPods.xcodeproj/project.pbxproj @@ -7,13 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - 021241249E788C93F8B9B58C /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; 02D39B681AC38D3E38167BC9 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; 0575EAD45DC713FDFA430364 /* CustomInAppMessagePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2697E60398EE452C7E362B83 /* CustomInAppMessagePresenter.m */; }; - 0AD73B7EB7D9DC710E0CC91D /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; + 064F11B6AF1E9932CB533646 /* NotAvailableInObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AAC654C4C0BA6482C2E09C7 /* NotAvailableInObjC.m */; }; 0BE8CE4982452A0E74D7F309 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 52F765C494ACFF150F0A76C4 /* Readme.m */; }; 0DE3276319B3F7EDE9E5761D /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61DA261A3969E80D4910B919 /* NotificationViewController.swift */; }; - 14ED490CA83487F672B6CA64 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; 161DC1259C44AD89479BA698 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA064323F91A22F4E14CAE9D /* NotificationService.swift */; }; 181CEE421636AF991665AF53 /* AuthenticationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D86AE9D1DC590AC4694323 /* AuthenticationManager.m */; }; 18DE204B580AF59319172A34 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; @@ -24,16 +22,16 @@ 2198B5052B89F561E1408347 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; 237398E27F20D11B4A8D6F32 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; 2599D92D219E7BB320EB918C /* CardsInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF4B96FFF47505E424237B85 /* CardsInfoViewController.m */; }; - 2A65F13CBADEAEA072B1962A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; - 30D7A569B1A652D533C6DFF4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; + 285F5B1A81AE13600AFD3E88 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; + 2F0BC077C6D88FED9EAD26EC /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; + 30A318E7B0B42CE1B196067C /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 45F98A25BAAEE5DC418161B1 /* Readme.m */; }; 3170955318006DA2CDC1D371 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; 330538042DBA8D66FE29106B /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; 34C9C566ACB7B6220C782866 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; + 3601B003232E63D1E1087BAC /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; 3C8DEAC1C01DE222C1FD7715 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = C92AD7CCB90625B324C9E200 /* Readme.m */; }; 3CCF8C060E64864FF2F0FBC5 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; - 406136EAB546AFD30FFF4326 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; 40BBC96C23C0D03C1876EFB3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; - 40C2532843ABD07521BDA072 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 381A82D8567D19A639A65555 /* Readme.m */; }; 4668AEE87D6BFB57357E49F8 /* InAppMessageInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 763258DB970F0A96B2A3DF74 /* InAppMessageInfoViewController.m */; }; 4E6928C0008070173370990E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; 4E9C8479947558025D64171B /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; @@ -42,65 +40,79 @@ 5443B297E55EFFA3D9531EB5 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9AF15EF29118835FEB5D5E2 /* AppDelegate.m */; }; 56E71FBF34C707A0C76D4E92 /* PushNotificationsServiceExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 40B660242E5E30D22F3AC51E /* PushNotificationsServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 5752C25DC8C2CA0C0925C10F /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6208C00FB5F7F0284A26EF20 /* UserNotifications.framework */; }; - 5EA1891740935FEB0EB49789 /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 645D4CFE35E1C189EF76D681 /* BRZGIFViewProvider+SDWebImage.m */; }; 60D9B416B69C17AD0FF5FD87 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6208C00FB5F7F0284A26EF20 /* UserNotifications.framework */; }; + 614AF2E22ADA853DF9227F6F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; 639A93232862A95314463DE5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; 656FFF89336D3AA397B40D7C /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = C92AD7CCB90625B324C9E200 /* Readme.m */; }; + 65D110C8D2CCFE582C33FEFE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + 662DDE2EABD1BC726DA86689 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; 6AA695612AC940383057198A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; + 71A28629D048E47EC5F63455 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; 7440800FB6329FCB28FC0FD6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DCD5EA6DB57BDEF9D156AF3B /* AppDelegate.m */; }; 756350E7C92625894BC8B509 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; 7B7F572DEB2E96237482FFB3 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; 7BA952D41DC54C1A728AB539 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; - 7BF8E94ED7F5FC6A1C24A470 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; + 7BFD94E43BEACE8972BE37C5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; 7E8AD3897D9983306EE938B9 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; 7FC56E25CCA1B6080699728A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + 865837100E2DC0BA8FAB9E6C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; + 89FF1DCFFEF6690C0DF13203 /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 21C04E748BC80720A72FE18A /* BRZGIFViewProvider+SDWebImage.m */; }; 8AA046F58DFE835A8DBDC2FB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; - 8B29E2C7B7EB260EAC5AB91D /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CD0DE7DB00697D75457F7CE /* Readme.m */; }; 8F470EAC78320B9B5E3C2093 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; 90A4F6B53E0118D3661585D4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; + 978DED78E88A3ADE68A1D7D0 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; + 99636D4769E4C08A61452149 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; 9ACDCF377DDDFE68EC46E40C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 201DC51A7B4BD5035790D967 /* AppDelegate.m */; }; + 9C4BA0B17CDD5749B1E02314 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; A08302940AC13A1B149928CE /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; A2BE6EE947CA0EB7BB800F8C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B0DC0BEFE722FE52D53AA96B /* AppDelegate.m */; }; A59B5541D8BDA70A1818AFDB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; A841C03E3FC310874204BBBF /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = DCD5EA6DB57BDEF9D156AF3B /* AppDelegate.m */; }; AA9687A7D3DF585AC6F6D718 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 201DC51A7B4BD5035790D967 /* AppDelegate.m */; }; AB2FE63CFBECFD1045D16ED7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + ADC57BB91E99F03639362DBE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; AEDDEDC6F9B5D7838BE908D6 /* PushNotificationsContentExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 7EFD35FD440D538F5EB8F021 /* PushNotificationsContentExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; B20E5CC4144654C1689934FE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; B23023008FC1FDB8D94A41F5 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 318B57C50A12DB5F02FC6224 /* AppDelegate.m */; }; BAA8122F4149259E86294F99 /* CustomInAppMessagePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2697E60398EE452C7E362B83 /* CustomInAppMessagePresenter.m */; }; - BC696EE76324DB0A73B65DE7 /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = AC38A6DD46A5E7EBC7B8FB4B /* BRZGIFViewProvider+SDWebImage.m */; }; + BADCCEAB1CF511D6C2CCA7F2 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; BCE0FBAE8B29B501C5C77992 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 318B57C50A12DB5F02FC6224 /* AppDelegate.m */; }; + C0ABFE39A262A4EFAA274C5A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; C0D38B13A94DADB550966E38 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; C25E42027E9FF502BA7D7269 /* CardsInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF4B96FFF47505E424237B85 /* CardsInfoViewController.m */; }; + C3937204B5146DCCDA51AD0B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 448DBEDFDE383A8EB08E2D44 /* AppDelegate.m */; }; C650783920A53EDD98DD19E5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; C6A06C3B17248E8369F21897 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C307795934847C752765580 /* Readme.m */; }; C75C09FC6605F02E7646AF0F /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 52B0E04E20E4B1C458222BA1 /* Readme.m */; }; + CB5A598CA883F225164544FB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; CF19792AFCEF53A28612612B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; D0DECD56C8F8201D27F59B32 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; + D11E987E346B85F0966242D5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; D1B4FEFA476833265065E137 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; D48FBF169A83BB8BCADCB80C /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EE8EFDC1CAFFB4F4CB5D00D /* Readme.m */; }; + D52FFBD38EC45B4A9E0172A0 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; + D54A2A38CB7C392FDD1AA045 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 453E08A2BFC20694C68880F0 /* AppDelegate.m */; }; DAA18481E36225A541BF8091 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; DB825090EC9CD3D9BEB01EFA /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EE8EFDC1CAFFB4F4CB5D00D /* Readme.m */; }; E0941C6B0D49A073B0A87A0F /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; - E4206A2DEA0A202587F0F715 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + E26011227818F9B8FD76C2B4 /* NotAvailableInObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = 22CCAE08D319D0CD9AC2E7BC /* NotAvailableInObjC.m */; }; + E2874959B3B047F5B4DF82B6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; E5D78AA4EE4F9494D6AA85FA /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C307795934847C752765580 /* Readme.m */; }; E63FFCC8439CC53E8F297431 /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1874579DE7E406E73A3CB3A1 /* UserNotificationsUI.framework */; }; E93521F5478A08F3837B041D /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; + E975EF7E59E32D7673AC1359 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 908EB1570A289903382EC012 /* Readme.m */; }; E9B14BAEC929FC550EC4C235 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9AF15EF29118835FEB5D5E2 /* AppDelegate.m */; }; E9E8435129B8C5C86F579395 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; EAD8D9FD10FB71AB1C44F22E /* AuthenticationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 11D86AE9D1DC590AC4694323 /* AuthenticationManager.m */; }; EB71881CFACEA23DC2CF8112 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + EBEB879F3C8EDC6C314DEB2A /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8644B16658ADD00DC06DA1DE /* BRZGIFViewProvider+SDWebImage.m */; }; ECF4B3DD82D61470A3EFC3E6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; EE1A489AA9350D6C14CBBBCE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; - EE9EDAC6D65BA1F0AC69EE89 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 75054C03D57540CE91A71920 /* AppDelegate.m */; }; F2395EC507EC1C960CFC6118 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; - F331DB6CEE9AAC6AC1252F1D /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = 77273E47E0A73317EF0235A7 /* Credentials.m */; }; F3EF4E7F2CFCC0512F4F642F /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */; }; - F49C339077170329AC8926A3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; F527CC79A52C51B1D2B30FAF /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; F6077FC0D214B2BA1BFBD720 /* CheckoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 133CC7FED120DA4BC4F63478 /* CheckoutViewController.m */; }; - F81FA5EDF6E6E785AD09482B /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AE76A96578D95F43B9C0849 /* AppDelegate.m */; }; + FCC2F0660A38AA60902153A0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C0EA46B7F46275141BF76209 /* main.m */; }; FDFE0B5AD6C85ABC76895E1F /* CheckoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 133CC7FED120DA4BC4F63478 /* CheckoutViewController.m */; }; FE9AA3224EFAE15896E7A1DA /* InAppMessageInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 763258DB970F0A96B2A3DF74 /* InAppMessageInfoViewController.m */; }; /* End PBXBuildFile section */ @@ -140,58 +152,62 @@ /* Begin PBXFileReference section */ 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 05A5CB32692A4493359A70F2 /* InAppMessages-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessages-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0CD0DE7DB00697D75457F7CE /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 0F4B1C1A4381988C1833854B /* InAppMessageUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessageUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 11D86AE9D1DC590AC4694323 /* AuthenticationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AuthenticationManager.m; sourceTree = ""; }; 133CC7FED120DA4BC4F63478 /* CheckoutViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CheckoutViewController.m; sourceTree = ""; }; - 14EDA84CD87233E1D5B6725B /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 1874579DE7E406E73A3CB3A1 /* UserNotificationsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotificationsUI.framework; path = System/Library/Frameworks/UserNotificationsUI.framework; sourceTree = SDKROOT; }; 1CA06BB2ED58DC38DE098EEB /* CustomInAppMessagePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomInAppMessagePresenter.h; sourceTree = ""; }; 201DC51A7B4BD5035790D967 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 21C04E748BC80720A72FE18A /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; + 22CCAE08D319D0CD9AC2E7BC /* NotAvailableInObjC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NotAvailableInObjC.m; sourceTree = ""; }; 249AA3BCC2DA49BBBD853C61 /* InAppMessageInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = InAppMessageInfoViewController.h; sourceTree = ""; }; 2697E60398EE452C7E362B83 /* CustomInAppMessagePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CustomInAppMessagePresenter.m; sourceTree = ""; }; - 2D50867A0DB9C8686F63A371 /* InAppMessages.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessages.app; sourceTree = BUILT_PRODUCTS_DIR; }; 318B57C50A12DB5F02FC6224 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 34DB46A770028DFE645A3AE4 /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 381A82D8567D19A639A65555 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 3E8380DBBF4867829281E73C /* ContentCardUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCardUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 3EE8EFDC1CAFFB4F4CB5D00D /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 40B660242E5E30D22F3AC51E /* PushNotificationsServiceExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 42BA0F61D883E0421B3FA7CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 448DBEDFDE383A8EB08E2D44 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 453E08A2BFC20694C68880F0 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 45F98A25BAAEE5DC418161B1 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 4B249F4A999D564ABE64305A /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 4E9C1C30C3119B822A6C482D /* ReadmeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReadmeViewController.h; sourceTree = ""; }; 52B0E04E20E4B1C458222BA1 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 52EBE792F20E4F26BC0E7F48 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 52F765C494ACFF150F0A76C4 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 582681504B814C38AB76A767 /* InAppMessageUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessageUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 60ACFE2CA5782ED484080441 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 61DA261A3969E80D4910B919 /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = ""; }; 6208C00FB5F7F0284A26EF20 /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = System/Library/Frameworks/UserNotifications.framework; sourceTree = SDKROOT; }; - 645D4CFE35E1C189EF76D681 /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; 6832319B66FB76CAA84519FA /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 6AE76A96578D95F43B9C0849 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 75054C03D57540CE91A71920 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 763258DB970F0A96B2A3DF74 /* InAppMessageInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InAppMessageInfoViewController.m; sourceTree = ""; }; 77273E47E0A73317EF0235A7 /* Credentials.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Credentials.m; sourceTree = ""; }; 7EFD35FD440D538F5EB8F021 /* PushNotificationsContentExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsContentExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 80CF36610D640D20AB35926E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 858AE4349E1D1D1849DB97B4 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 8644B16658ADD00DC06DA1DE /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; 8854CADF86F02FA64B2CC3F1 /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 89A6F6ADFDCAC1464C091E61 /* ContentCardUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCardUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AAC654C4C0BA6482C2E09C7 /* NotAvailableInObjC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NotAvailableInObjC.m; sourceTree = ""; }; 8C307795934847C752765580 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 908EB1570A289903382EC012 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 92820DD39CF4F646BE5FECDA /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; + 940A63707D6935CDC81EE9F8 /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; 9E2B80BBE3951963FBA6BBD3 /* Analytics.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Analytics.app; sourceTree = BUILT_PRODUCTS_DIR; }; A2AC34AC6990B2FA6CD647CC /* ReadmeAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReadmeAction.h; sourceTree = ""; }; A37E3B0FA418AB843D26F7F9 /* PushNotifications.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = PushNotifications.app; sourceTree = BUILT_PRODUCTS_DIR; }; - A6EEBA52A1C6E13DE9B07326 /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; A77BCD95413ADCF8578235CE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; A9AF15EF29118835FEB5D5E2 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - AC38A6DD46A5E7EBC7B8FB4B /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; B0DC0BEFE722FE52D53AA96B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; BA064323F91A22F4E14CAE9D /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; BA37FE8457A48CD8683BE79A /* CardsInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CardsInfoViewController.h; sourceTree = ""; }; C0EA46B7F46275141BF76209 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; C78E0B5A5D52F990511A4091 /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C92AD7CCB90625B324C9E200 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; - C9C1B6158983BCB0C593DAE4 /* ContentCards.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCards.app; sourceTree = BUILT_PRODUCTS_DIR; }; CAF8A0D7B315DF4FF0A9CFC8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; CD47A5A37513C58A6E380918 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; CF4B96FFF47505E424237B85 /* CardsInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CardsInfoViewController.m; sourceTree = ""; }; D1FC7DF6067EFA59329D3B00 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - D6EF14C19329871CCA47A1AF /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; DCD5EA6DB57BDEF9D156AF3B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; DE3608B9E460175A349CDB87 /* Analytics.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Analytics.app; sourceTree = BUILT_PRODUCTS_DIR; }; E06A48D3D2F38E11DAA4C05E /* ReadmeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReadmeViewController.m; sourceTree = ""; }; @@ -221,6 +237,28 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 09094FD860B8CA12810EF498 /* InAppMessageUI */ = { + isa = PBXGroup; + children = ( + 60ACFE2CA5782ED484080441 /* AppDelegate.h */, + 448DBEDFDE383A8EB08E2D44 /* AppDelegate.m */, + 940A63707D6935CDC81EE9F8 /* BRZGIFViewProvider+SDWebImage.h */, + 21C04E748BC80720A72FE18A /* BRZGIFViewProvider+SDWebImage.m */, + 45F98A25BAAEE5DC418161B1 /* Readme.m */, + ); + name = InAppMessageUI; + path = Sources/InAppMessageUI; + sourceTree = ""; + }; + 45F192846EACB1A9AA4B13B4 /* InAppMessageUI-Customization */ = { + isa = PBXGroup; + children = ( + 8AAC654C4C0BA6482C2E09C7 /* NotAvailableInObjC.m */, + ); + name = "InAppMessageUI-Customization"; + path = "Sources/InAppMessageUI-Customization"; + sourceTree = ""; + }; 4F38F2ACA591DCA04EF16BB1 /* Location */ = { isa = PBXGroup; children = ( @@ -252,10 +290,12 @@ children = ( EB043806B7BB06DCA25E0177 /* Common */, 51FBDA444B2130ED53F050CB /* Analytics */, - EE1BF73C17001D2912250407 /* ContentCards */, 6F112DA3865BFE3961698859 /* ContentCards-Custom-UI */, - 9AA2DA5B878C1242DBDD0410 /* InAppMessages */, + F500AE7A04E46943FAA225C4 /* ContentCardUI */, + CFAE53A0FC9D7251D24F9F70 /* ContentCardUI-Customization */, E3BAE1A02E5A97AD717C4DE1 /* InAppMessages-Custom-UI */, + 09094FD860B8CA12810EF498 /* InAppMessageUI */, + 45F192846EACB1A9AA4B13B4 /* InAppMessageUI-Customization */, 4F38F2ACA591DCA04EF16BB1 /* Location */, E956091874C7F622B207B35A /* PushNotifications */, 79BD163F0CE766FD84A15D5A /* PushNotificationsContentExtension */, @@ -302,10 +342,12 @@ DE3608B9E460175A349CDB87 /* Analytics.app */, 8854CADF86F02FA64B2CC3F1 /* ContentCards-Custom-UI.app */, C78E0B5A5D52F990511A4091 /* ContentCards-Custom-UI.app */, - C9C1B6158983BCB0C593DAE4 /* ContentCards.app */, + 3E8380DBBF4867829281E73C /* ContentCardUI-Customization.app */, + 89A6F6ADFDCAC1464C091E61 /* ContentCardUI.app */, 05A5CB32692A4493359A70F2 /* InAppMessages-Custom-UI.app */, FE50398A21EB6A33EE9874A2 /* InAppMessages-Custom-UI.app */, - 2D50867A0DB9C8686F63A371 /* InAppMessages.app */, + 0F4B1C1A4381988C1833854B /* InAppMessageUI-Customization.app */, + 582681504B814C38AB76A767 /* InAppMessageUI.app */, 6832319B66FB76CAA84519FA /* Location.app */, 34DB46A770028DFE645A3AE4 /* Location.app */, A37E3B0FA418AB843D26F7F9 /* PushNotifications.app */, @@ -315,17 +357,13 @@ name = Products; sourceTree = ""; }; - 9AA2DA5B878C1242DBDD0410 /* InAppMessages */ = { + CFAE53A0FC9D7251D24F9F70 /* ContentCardUI-Customization */ = { isa = PBXGroup; children = ( - 858AE4349E1D1D1849DB97B4 /* AppDelegate.h */, - 6AE76A96578D95F43B9C0849 /* AppDelegate.m */, - D6EF14C19329871CCA47A1AF /* BRZGIFViewProvider+SDWebImage.h */, - AC38A6DD46A5E7EBC7B8FB4B /* BRZGIFViewProvider+SDWebImage.m */, - 381A82D8567D19A639A65555 /* Readme.m */, - ); - name = InAppMessages; - path = Sources/InAppMessages; + 22CCAE08D319D0CD9AC2E7BC /* NotAvailableInObjC.m */, + ); + name = "ContentCardUI-Customization"; + path = "Sources/ContentCardUI-Customization"; sourceTree = ""; }; CFAFCFEE58CC8AA1F0BDA699 /* iOS */ = { @@ -396,17 +434,17 @@ path = Sources/Common; sourceTree = ""; }; - EE1BF73C17001D2912250407 /* ContentCards */ = { + F500AE7A04E46943FAA225C4 /* ContentCardUI */ = { isa = PBXGroup; children = ( - 14EDA84CD87233E1D5B6725B /* AppDelegate.h */, - 75054C03D57540CE91A71920 /* AppDelegate.m */, - A6EEBA52A1C6E13DE9B07326 /* BRZGIFViewProvider+SDWebImage.h */, - 645D4CFE35E1C189EF76D681 /* BRZGIFViewProvider+SDWebImage.m */, - 0CD0DE7DB00697D75457F7CE /* Readme.m */, - ); - name = ContentCards; - path = Sources/ContentCards; + 4B249F4A999D564ABE64305A /* AppDelegate.h */, + 453E08A2BFC20694C68880F0 /* AppDelegate.m */, + 92820DD39CF4F646BE5FECDA /* BRZGIFViewProvider+SDWebImage.h */, + 8644B16658ADD00DC06DA1DE /* BRZGIFViewProvider+SDWebImage.m */, + 908EB1570A289903382EC012 /* Readme.m */, + ); + name = ContentCardUI; + path = Sources/ContentCardUI; sourceTree = ""; }; /* End PBXGroup section */ @@ -444,36 +482,36 @@ productReference = C78E0B5A5D52F990511A4091 /* ContentCards-Custom-UI.app */; productType = "com.apple.product-type.application"; }; - 1A7E9979FC152DE4F7D5DC2A /* InAppMessages */ = { + 284840096E199840E3A733BC /* Location-tvOS */ = { isa = PBXNativeTarget; - buildConfigurationList = C8DA1DB107E7EE64BBBAEBE7 /* Build configuration list for PBXNativeTarget "InAppMessages" */; + buildConfigurationList = B76990766EAEC18717669D6F /* Build configuration list for PBXNativeTarget "Location-tvOS" */; buildPhases = ( - E446E3B55477F3BA5FB625C4 /* Sources */, - 324A65B0C1348D482EBD2C51 /* Resources */, + 5FEBF68A041A50636A7C63D7 /* Sources */, + 78CBE3D7946A65CD24DD6D8A /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = InAppMessages; - productName = InAppMessages; - productReference = 2D50867A0DB9C8686F63A371 /* InAppMessages.app */; + name = "Location-tvOS"; + productName = "Location-tvOS"; + productReference = 34DB46A770028DFE645A3AE4 /* Location.app */; productType = "com.apple.product-type.application"; }; - 284840096E199840E3A733BC /* Location-tvOS */ = { + 3F4B82DD321A7AB86C3623BD /* InAppMessageUI */ = { isa = PBXNativeTarget; - buildConfigurationList = B76990766EAEC18717669D6F /* Build configuration list for PBXNativeTarget "Location-tvOS" */; + buildConfigurationList = EAE52C7CF1CCCF03356FA080 /* Build configuration list for PBXNativeTarget "InAppMessageUI" */; buildPhases = ( - 5FEBF68A041A50636A7C63D7 /* Sources */, - 78CBE3D7946A65CD24DD6D8A /* Resources */, + 9C66F84C288AAB56A9A14D90 /* Sources */, + D9712F16C62827A6001EA816 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = "Location-tvOS"; - productName = "Location-tvOS"; - productReference = 34DB46A770028DFE645A3AE4 /* Location.app */; + name = InAppMessageUI; + productName = InAppMessageUI; + productReference = 582681504B814C38AB76A767 /* InAppMessageUI.app */; productType = "com.apple.product-type.application"; }; 4A34648A0491D5D28D9A7E8A /* InAppMessages-Custom-UI-tvOS */ = { @@ -511,20 +549,20 @@ productReference = A37E3B0FA418AB843D26F7F9 /* PushNotifications.app */; productType = "com.apple.product-type.application"; }; - 9097C3EC847DC7AE4B1CA969 /* ContentCards */ = { + 980998015E29178149D9B86C /* ContentCardUI */ = { isa = PBXNativeTarget; - buildConfigurationList = 9D35AC44AE90C1C27CBF8577 /* Build configuration list for PBXNativeTarget "ContentCards" */; + buildConfigurationList = DB14AAC10B81B8A88D4B480B /* Build configuration list for PBXNativeTarget "ContentCardUI" */; buildPhases = ( - C7726F7D79339C85CB8B1FDB /* Sources */, - 0607C6FAE74CA8A0F8E5224B /* Resources */, + 97262D5A6FFA7717EBAA9E81 /* Sources */, + 357CC70D993553B658787EA8 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = ContentCards; - productName = ContentCards; - productReference = C9C1B6158983BCB0C593DAE4 /* ContentCards.app */; + name = ContentCardUI; + productName = ContentCardUI; + productReference = 89A6F6ADFDCAC1464C091E61 /* ContentCardUI.app */; productType = "com.apple.product-type.application"; }; A0EF8DC5C1ED6288C32D3D23 /* Analytics-iOS */ = { @@ -543,6 +581,22 @@ productReference = 9E2B80BBE3951963FBA6BBD3 /* Analytics.app */; productType = "com.apple.product-type.application"; }; + BAF47191A63D1D4B728E9469 /* InAppMessageUI-Customization */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDE628DA72FB7DB13146D374 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */; + buildPhases = ( + 6F1D675B3BAAEA103951B956 /* Sources */, + 9A1D41EDC9F035503FB548B3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "InAppMessageUI-Customization"; + productName = "InAppMessageUI-Customization"; + productReference = 0F4B1C1A4381988C1833854B /* InAppMessageUI-Customization.app */; + productType = "com.apple.product-type.application"; + }; BC720D0A2A3B555DF4D1268A /* Location-iOS */ = { isa = PBXNativeTarget; buildConfigurationList = 4CBDCD32BF67ACE4E2977EFA /* Build configuration list for PBXNativeTarget "Location-iOS" */; @@ -607,6 +661,22 @@ productReference = 8854CADF86F02FA64B2CC3F1 /* ContentCards-Custom-UI.app */; productType = "com.apple.product-type.application"; }; + F7DC3F66C732C81F13AFDB8C /* ContentCardUI-Customization */ = { + isa = PBXNativeTarget; + buildConfigurationList = C0DB4C99D5F365A19C5D1EA5 /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */; + buildPhases = ( + 01B3855D3F0A3B7F49EA5CB0 /* Sources */, + FF28CBD31AFA5366C7CB701F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ContentCardUI-Customization"; + productName = "ContentCardUI-Customization"; + productReference = 3E8380DBBF4867829281E73C /* ContentCardUI-Customization.app */; + productType = "com.apple.product-type.application"; + }; FDA0A7B4C40914EAF405D9FC /* Analytics-tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = 33A0A8897465C6BD7C17C2E6 /* Build configuration list for PBXNativeTarget "Analytics-tvOS" */; @@ -647,10 +717,12 @@ targets = ( A0EF8DC5C1ED6288C32D3D23 /* Analytics-iOS */, FDA0A7B4C40914EAF405D9FC /* Analytics-tvOS */, - 9097C3EC847DC7AE4B1CA969 /* ContentCards */, + 980998015E29178149D9B86C /* ContentCardUI */, + F7DC3F66C732C81F13AFDB8C /* ContentCardUI-Customization */, E4E9F3507C9F70F681E5417F /* ContentCards-Custom-UI-iOS */, 177B908F6B162DDA447880C8 /* ContentCards-Custom-UI-tvOS */, - 1A7E9979FC152DE4F7D5DC2A /* InAppMessages */, + 3F4B82DD321A7AB86C3623BD /* InAppMessageUI */, + BAF47191A63D1D4B728E9469 /* InAppMessageUI-Customization */, 0FD7FC35072A5B75852D15F7 /* InAppMessages-Custom-UI-iOS */, 4A34648A0491D5D28D9A7E8A /* InAppMessages-Custom-UI-tvOS */, BC720D0A2A3B555DF4D1268A /* Location-iOS */, @@ -663,15 +735,6 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0607C6FAE74CA8A0F8E5224B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F49C339077170329AC8926A3 /* Assets.xcassets in Resources */, - 30D7A569B1A652D533C6DFF4 /* LaunchScreen.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 24EBDE35CCCBEFEFF53E707D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -681,12 +744,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 324A65B0C1348D482EBD2C51 /* Resources */ = { + 357CC70D993553B658787EA8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - E4206A2DEA0A202587F0F715 /* Assets.xcassets in Resources */, - 2A65F13CBADEAEA072B1962A /* LaunchScreen.storyboard in Resources */, + ADC57BB91E99F03639362DBE /* Assets.xcassets in Resources */, + D11E987E346B85F0966242D5 /* LaunchScreen.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -744,6 +807,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9A1D41EDC9F035503FB548B3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 65D110C8D2CCFE582C33FEFE /* Assets.xcassets in Resources */, + CB5A598CA883F225164544FB /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B62AC56D63A64203ECF45AAE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -762,9 +834,38 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D9712F16C62827A6001EA816 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E2874959B3B047F5B4DF82B6 /* Assets.xcassets in Resources */, + 9C4BA0B17CDD5749B1E02314 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FF28CBD31AFA5366C7CB701F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C0ABFE39A262A4EFAA274C5A /* Assets.xcassets in Resources */, + 614AF2E22ADA853DF9227F6F /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 01B3855D3F0A3B7F49EA5CB0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3601B003232E63D1E1087BAC /* Credentials.m in Sources */, + E26011227818F9B8FD76C2B4 /* NotAvailableInObjC.m in Sources */, + 99636D4769E4C08A61452149 /* ReadmeViewController.m in Sources */, + 7BFD94E43BEACE8972BE37C5 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 070EDE6E9735E579169F2D68 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -831,6 +932,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6F1D675B3BAAEA103951B956 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 978DED78E88A3ADE68A1D7D0 /* Credentials.m in Sources */, + 064F11B6AF1E9932CB533646 /* NotAvailableInObjC.m in Sources */, + 2F0BC077C6D88FED9EAD26EC /* ReadmeViewController.m in Sources */, + 662DDE2EABD1BC726DA86689 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 923462222067359F78BABE34 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -845,6 +957,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 97262D5A6FFA7717EBAA9E81 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D54A2A38CB7C392FDD1AA045 /* AppDelegate.m in Sources */, + EBEB879F3C8EDC6C314DEB2A /* BRZGIFViewProvider+SDWebImage.m in Sources */, + BADCCEAB1CF511D6C2CCA7F2 /* Credentials.m in Sources */, + E975EF7E59E32D7673AC1359 /* Readme.m in Sources */, + D52FFBD38EC45B4A9E0172A0 /* ReadmeViewController.m in Sources */, + FCC2F0660A38AA60902153A0 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9AD321D868E1638BA51BFDA7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -853,24 +978,24 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C7487814AD5323F755B1E524 /* Sources */ = { + 9C66F84C288AAB56A9A14D90 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0DE3276319B3F7EDE9E5761D /* NotificationViewController.swift in Sources */, + C3937204B5146DCCDA51AD0B /* AppDelegate.m in Sources */, + 89FF1DCFFEF6690C0DF13203 /* BRZGIFViewProvider+SDWebImage.m in Sources */, + 71A28629D048E47EC5F63455 /* Credentials.m in Sources */, + 30A318E7B0B42CE1B196067C /* Readme.m in Sources */, + 285F5B1A81AE13600AFD3E88 /* ReadmeViewController.m in Sources */, + 865837100E2DC0BA8FAB9E6C /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C7726F7D79339C85CB8B1FDB /* Sources */ = { + C7487814AD5323F755B1E524 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EE9EDAC6D65BA1F0AC69EE89 /* AppDelegate.m in Sources */, - 5EA1891740935FEB0EB49789 /* BRZGIFViewProvider+SDWebImage.m in Sources */, - 021241249E788C93F8B9B58C /* Credentials.m in Sources */, - 8B29E2C7B7EB260EAC5AB91D /* Readme.m in Sources */, - 0AD73B7EB7D9DC710E0CC91D /* ReadmeViewController.m in Sources */, - 406136EAB546AFD30FFF4326 /* main.m in Sources */, + 0DE3276319B3F7EDE9E5761D /* NotificationViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -898,19 +1023,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E446E3B55477F3BA5FB625C4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F81FA5EDF6E6E785AD09482B /* AppDelegate.m in Sources */, - BC696EE76324DB0A73B65DE7 /* BRZGIFViewProvider+SDWebImage.m in Sources */, - F331DB6CEE9AAC6AC1252F1D /* Credentials.m in Sources */, - 40C2532843ABD07521BDA072 /* Readme.m in Sources */, - 14ED490CA83487F672B6CA64 /* ReadmeViewController.m in Sources */, - 7BF8E94ED7F5FC6A1C24A470 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F57A2A4DF2E99DAA2F0E38B4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1009,23 +1121,6 @@ }; name = Release; }; - 0FF3E9103BDC67C9723BD0CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 1CE2539A10E8624E8EDD3601 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1077,23 +1172,6 @@ }; name = Debug; }; - 4BCF9BD39CEB19E634B6FD81 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 4EBD32EE3B16C9EBF7493F73 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1111,40 +1189,6 @@ }; name = Debug; }; - 4FCE20B3E84CE39D624EFA02 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 508970482D723EDFFD096AB1 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; 61077A56E64ADBA96CA8CE0C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1213,6 +1257,40 @@ }; name = Debug; }; + 7FB9A68D2BBA2491D45E62B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8998A6D8CF788CAD06AA5BE8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; 947EC0697CF1F01DDC513FD6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1276,6 +1354,23 @@ }; name = Debug; }; + A3083010FB3D4703ED5F1EDB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; A653F811811645548266EC3A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1293,6 +1388,23 @@ }; name = Release; }; + AD10B335B59906CFA974D2B9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; AEB7354D56CC1297356D6010 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1342,6 +1454,40 @@ }; name = Debug; }; + CB3623C61BBC3C376E5B72A7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + CEB9C70E635252D9B31CC760 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; CFC0E247B97C5CEDBAF0B857 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1426,6 +1572,40 @@ }; name = Debug; }; + DE8D4E38BE17112E316C9452 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + E65B5BA1B04DACDE3D423387 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; E93F9B7A3E25FB962107ED6A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1601,15 +1781,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - 9D35AC44AE90C1C27CBF8577 /* Build configuration list for PBXNativeTarget "ContentCards" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0FF3E9103BDC67C9723BD0CD /* Debug */, - 508970482D723EDFFD096AB1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; B76990766EAEC18717669D6F /* Build configuration list for PBXNativeTarget "Location-tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1619,11 +1790,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - C8DA1DB107E7EE64BBBAEBE7 /* Build configuration list for PBXNativeTarget "InAppMessages" */ = { + C0DB4C99D5F365A19C5D1EA5 /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4BCF9BD39CEB19E634B6FD81 /* Debug */, - 4FCE20B3E84CE39D624EFA02 /* Release */, + CB3623C61BBC3C376E5B72A7 /* Debug */, + 8998A6D8CF788CAD06AA5BE8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; @@ -1637,6 +1808,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + DB14AAC10B81B8A88D4B480B /* Build configuration list for PBXNativeTarget "ContentCardUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7FB9A68D2BBA2491D45E62B8 /* Debug */, + CEB9C70E635252D9B31CC760 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DDE628DA72FB7DB13146D374 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A3083010FB3D4703ED5F1EDB /* Debug */, + E65B5BA1B04DACDE3D423387 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; E26727234EAA2C9FFB557AF2 /* Build configuration list for PBXNativeTarget "InAppMessages-Custom-UI-tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1646,6 +1835,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + EAE52C7CF1CCCF03356FA080 /* Build configuration list for PBXNativeTarget "InAppMessageUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AD10B335B59906CFA974D2B9 /* Debug */, + DE8D4E38BE17112E316C9452 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; /* End XCConfigurationList section */ }; rootObject = C9F9231105531CE428ADD921 /* Project object */; diff --git a/Examples/ObjC/Examples-SwiftPM.xcodeproj/project.pbxproj b/Examples/ObjC/Examples-SwiftPM.xcodeproj/project.pbxproj index f0f2dc6790..87632670b2 100644 --- a/Examples/ObjC/Examples-SwiftPM.xcodeproj/project.pbxproj +++ b/Examples/ObjC/Examples-SwiftPM.xcodeproj/project.pbxproj @@ -8,27 +8,31 @@ /* Begin PBXBuildFile section */ 01B00D06564F5BC3CC2CDD91 /* CardsInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5634FD53344A83FD267AB580 /* CardsInfoViewController.m */; }; - 02C558571508A77542FBC26C /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 0D08CDAB0AE57DFC38F9B590 /* SDWebImage */; }; + 04ABB1F6B9F73AAAC87714B4 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; + 0660D42F760AE4E46AD69562 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = B886221109B13C767819BA7C /* BrazeKit */; }; 06F87FDA5F0E0E87D405F0BB /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EE8BE3BAD32DB6D66AC70 /* AppDelegate.m */; }; + 07995DC0FD113700D297A5AA /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; 07DD9E6B75B3C3E0B7B93FF9 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; 0D0836D2DE975E4BF0F3D051 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 75CC1E79A9D6815B60835BA2 /* Readme.m */; }; 0E4B45AF1E749BA1333419FA /* AuthenticationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7AC51A554A71CFA452B84 /* AuthenticationManager.m */; }; - 0EA9500525189479BEEA2579 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; - 0F7C946151DE727574B396A6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; + 123944DA228A07A27CA8FE20 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA022D2664E917AB6DF910C /* AppDelegate.m */; }; 140EBDD7D126C0DB7E24563C /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; 14174CD7F71ACF6F4F3E3808 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; - 176536B39FED72ECC2028BFC /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 0BF370808D2F5C21870331A0 /* SDWebImage */; }; 17B09479DD77FD4EEFFF95E8 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; 18ED90A49FD6D7527CB90B7E /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; + 19D922BB530AB0C688C2EA4E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; 1A810C7DA64E86D3A828A920 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; 1A93472F1D5EF8BE86567BE6 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FFCA5A7A3B8EF9BFE4BF145 /* Readme.m */; }; + 1DA9FEF369A4E15D2B76215A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BE6866047868E31857FEB14 /* AppDelegate.m */; }; 23FF6692F5A6D268DC355315 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; - 241F4F1F41D820C55156841D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; 24400D6B97710B109BDD8A60 /* BrazePushStory in Frameworks */ = {isa = PBXBuildFile; productRef = 5133F5A2D91882A4AE649D4D /* BrazePushStory */; }; + 2553ED24C2112991F382CF3A /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5FDBAD51FF3A992AEB226099 /* BrazeUI */; }; + 27ECC4ED9EABA2405DF780CC /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 64EAC9A16C6BB0EA49C9157A /* SDWebImage */; }; 28C5F7A47286B0D4233CFD93 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 84D56D9CC866EB37EFC5EFD4 /* Readme.m */; }; 2A160FCCE45E4690E694D46A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D912E013554F7C8A41F0ED /* AppDelegate.m */; }; 2C47D73C2D8F2F68DF83612B /* BrazeNotificationService in Frameworks */ = {isa = PBXBuildFile; productRef = 47F3E12B1114B00B4CB70C60 /* BrazeNotificationService */; }; 2D4560AC04CE0BEC2BB8749B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 2E1DF7C49B03F38BCE5285E7 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 0891F7D29EA51A994793513D /* BrazeUI */; }; 2E68CB6DC13AC6CB1441D20B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; 2EB145FE4832264DD7ACC3F3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 971900217FE69BE4658FE8B2 /* AppDelegate.m */; }; 2F8F5E0C5161968068CC2A05 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; @@ -38,7 +42,8 @@ 365EF0CD30923A1254130722 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = F68192C4A0D4928F78762878 /* BrazeKit */; }; 3B3CDE3FA9E39EE3140F5421 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; 3B90DD85782F3701AD557A6A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; - 3CF570CEA985E07B3DBFBBBE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5ECFB24E396F30D56AC2C5 /* AppDelegate.m */; }; + 3E6D81E2DD6BA6B5F8E30BAE /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; + 41CFC07655CF0A3FB6E2ADE2 /* NotAvailableInObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = EF84C935C8D4200A2401B6E1 /* NotAvailableInObjC.m */; }; 432AF81580216BC7FECF3E0A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; 437AA7B38193226049B72FBE /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 74D6487EFD8114F6B61637AB /* BrazeKit */; }; 4484E207BCFD002822F2BB7D /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE00D10FF658213E5A00188D /* NotificationViewController.swift */; }; @@ -48,51 +53,57 @@ 4EFDEFD372D670CB56731D3E /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; 4FCC18D09440113FCC444C49 /* PushNotificationsContentExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = A7B092ACAEC915379923328F /* PushNotificationsContentExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 51E6A2F0C6E2C992A51F5F20 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 54E8D58237B1B94EEBF67682 /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A6F4B2BEAD3CC7A8F9250E8 /* BRZGIFViewProvider+SDWebImage.m */; }; 55343C252FC045A6B70D521D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; 59DE5747C69E47CB456FDA44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; - 5C0D56998D46869E0617E5A4 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 9AF0AF048F752A5C62317470 /* BrazeUI */; }; 5C506223F8E16936EFF1ECAA /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 75CC1E79A9D6815B60835BA2 /* Readme.m */; }; + 5D3DC164C01F1693AB940603 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; + 5DF2674CA83F6ECC633EDA99 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; 60A6EE4C2AF712684F1045C5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; 627920814F95860FB73D560F /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; 6859B8749DCA922A8E670008 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; - 693EE86FDDA758DF36715F51 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 90388C63B5CA3065EB14C5E7 /* Readme.m */; }; 69765CD7313717A7FF7B4C30 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F7D912E013554F7C8A41F0ED /* AppDelegate.m */; }; 6CE3551AF54503A3FA2E7853 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 046845029FE9235B46B84104 /* BrazeKit */; }; + 6D37F619E60F577AF2FB208D /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 9720FE32CFB77D7E0319A501 /* BrazeKit */; }; 6D91E6B536F0C7585E809607 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 17D80570112755DC2EEEF450 /* BrazeKit */; }; 6DA15916A0F0F7ECF3968E42 /* PushNotificationsServiceExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = B5666DA142189EEEDFAFB41F /* PushNotificationsServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 6E358B236135C54CF185EEDC /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; - 6FAFF3BA371E41638E044127 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 89598718421C181B57346379 /* BrazeKit */; }; - 75D4A5808678A333BC37FD62 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; - 78D5F4892287E2A080AFD065 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; 7CCE66927CDCF27343C8A19F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; 7F8916648BED7D17A1F5F6D4 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 40B1FA52497F602A50792867 /* Readme.m */; }; - 80D345EAA814805B7B762A4E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + 850853B18B7DB34ADBCB56D2 /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 6406D8C02D350722AE48DE31 /* SDWebImage */; }; 85EBAD10002EFE00116C0892 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; 87824C15AAA2003EC964C107 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CE7C19F258AF40B394B358 /* UserNotifications.framework */; }; 8992304A2D2955D1BA1A6F32 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; 89CC79B20BACB82640928264 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; 8A8EC9A9DB4F12593F3BA68F /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FFCA5A7A3B8EF9BFE4BF145 /* Readme.m */; }; - 8EC99177B84C2FD480B24D33 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 8B971E3E345CD1B722FDBE40 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + 93F56B30055D001DF05356A5 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 624AA955B2621EE8B5A153AE /* BrazeUI */; }; + 949F18A735AE80D5213E51A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 94C35C34017333F3767E58FE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + 970E129EDC8F2E439C0C0823 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F278DD5EBF9747004183C8F /* Readme.m */; }; + 97403331CA7F887B935DBC01 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; 99DA0F0635AE21C1096495B9 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8783B6A324D425D55615AFD9 /* AppDelegate.m */; }; 99EF7BD971D6D5849078F00F /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; - 9CE6B2D9DC0F3B277094AEB9 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 26C11D75220DCD8456AEAA39 /* BrazeUI */; }; 9D70D60D63C3590056AE7BE9 /* CustomInAppMessagePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A8584CCE6D9BBC4C2F634BB /* CustomInAppMessagePresenter.m */; }; 9EC27A7D337A4DF0A2F94484 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; A47F4EBAA7A0D8D9694CDBED /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 9F5A50D1AF8D80AC6C465155 /* BrazeKit */; }; A4BD0CF594F83266F2C9DFB1 /* CardsInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5634FD53344A83FD267AB580 /* CardsInfoViewController.m */; }; A725268792A6C2039D9C402B /* CheckoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CFCDF89427142AC55571D3A4 /* CheckoutViewController.m */; }; - AD0FB326BFA4C3E7A64469FA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + A7D7689D324CFB54651FC94D /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; ADBC780DCB0B446D08B01BD7 /* InAppMessageInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF02C869BF9AFF144C7C90DF /* InAppMessageInfoViewController.m */; }; AE9B5583963142DD6C7E2B7F /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D63F498CAD1B487B718A6064 /* NotificationService.swift */; }; AF2CC1B40270C6B61BCB36F3 /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0D325AE1E7E717D151B9B6B /* UserNotificationsUI.framework */; }; B17B4317A4822F6631A83E7B /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 7509FFDD2664F798C716F648 /* Readme.m */; }; - B1EA445BF1E43473B3F7A9EF /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B01598D5924C3065B7D516B /* Readme.m */; }; + B36AD5F91B9F069E042F3CB5 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; + B3BDA4F943A5C0AD2DEF5A7C /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 2DFFD8844A474098D6408946 /* SDWebImage */; }; B4AC1050912335DCAFDA50DC /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; B596113707879825CDA4F233 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 971900217FE69BE4658FE8B2 /* AppDelegate.m */; }; B8FC11110451BE51D3352A0D /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; + B9FD0579C0BD5CB2E1C11C6D /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; BA93CBED2945FD7B06611823 /* InAppMessageInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AF02C869BF9AFF144C7C90DF /* InAppMessageInfoViewController.m */; }; BD418D0ABB09B10266CCEB9A /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7793FD8C8DE601EC38DD8DD7 /* BrazeKit */; }; BD7243FA7D8B321F7E1B5BBF /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; + C20761A80E31DE7D15ADE19C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; C412D2A3E605123FE5CBFAB2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; C81EA3048E9D8CED3B3EDD97 /* BrazeLocation in Frameworks */ = {isa = PBXBuildFile; productRef = 2C4994F9E91F986F0629979F /* BrazeLocation */; }; C871120C2B04423F52FA3E92 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; @@ -102,26 +113,33 @@ D02EBC8DF2A796ED2C9CEFC0 /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 7509FFDD2664F798C716F648 /* Readme.m */; }; D0680AB119405ED4AD4AB35A /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; D0FB8791620F800C7485E52B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; + D117EDCFC5FADDCD2F3C475F /* NotAvailableInObjC.m in Sources */ = {isa = PBXBuildFile; fileRef = 71CF9250418324FDD933C503 /* NotAvailableInObjC.m */; }; D24015C9E60BC0AB214C4F83 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = BC5EE8BE3BAD32DB6D66AC70 /* AppDelegate.m */; }; D2A2CF406EE7D523247B45DD /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; - DB84622E0C40467BD20C3779 /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = FBA572CA696173DD712458AD /* BRZGIFViewProvider+SDWebImage.m */; }; + D9C6A59CE85BAB7EFE4861B0 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; + DB13431FC72E0BCD34A86902 /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 77C32D8D5EBCD917A23EE382 /* SDWebImage */; }; DBC0B617306F2A138194200C /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 80661DB9711EFD43546E249C /* BrazeKit */; }; DD69D41758F99D463763675A /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; - DE22594DD1123178B1CC7771 /* ReadmeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */; }; + DD969931CFCDB9CABFA30F85 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + DE620D05A5DCCA569EE55A19 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; DF5F3076246E4D156FA5A3F8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; DFB6A101BCD151F5B9651D82 /* AuthenticationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BF7AC51A554A71CFA452B84 /* AuthenticationManager.m */; }; + E2498F93471B3ED7DCF4F798 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 1587AFA62763A9B75CA01C6C /* BrazeKit */; }; + E2E95C34F86FA357D6BCAE54 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + E57EF4D623F7C39F800DF8CB /* Readme.m in Sources */ = {isa = PBXBuildFile; fileRef = 742A9C4C4D1368BA62472F8B /* Readme.m */; }; E743EAE4518F62189A4D3C8A /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = F173FCAB52D0340802119A34 /* BrazeKit */; }; E7996808D67A3A1A043A0731 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8783B6A324D425D55615AFD9 /* AppDelegate.m */; }; - EA8ED23E897565712389CE3F /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EE7DAF62AE545D7087BB7032 /* AppDelegate.m */; }; + EAC53BC784BF380F8205F01F /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = E045FE65756A230024955AD5 /* BrazeKit */; }; EC57F25FE46BBD05EA33C939 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CE7C19F258AF40B394B358 /* UserNotifications.framework */; }; - ED42AFACDCE40F3510BCCB65 /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = A372FC98EA508F503CE11C30 /* BRZGIFViewProvider+SDWebImage.m */; }; + ECF4EB3AB84967F7DBDB8452 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 96F76CB78E3FFBBBCDE87EBD /* BrazeUI */; }; EEDF56D9E060B1301014A6B0 /* CheckoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CFCDF89427142AC55571D3A4 /* CheckoutViewController.m */; }; EF5ED1AD6790AA461DC0B2C6 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; - EF5EF251D34064B14F500469 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 09701E67CAE64FCE46458059 /* BrazeKit */; }; F658BE141364C2F62F7866D1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; F85EF5BC8A69B68633529B36 /* Credentials.m in Sources */ = {isa = PBXBuildFile; fileRef = A900B781B2DFE220B129E338 /* Credentials.m */; }; F95AE350417AB5ED6CEDECCB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; - FF9046579962F0EBB98DB78C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; + F97087EBFD4931AA7C9F3463 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + FD9823DF369C66F24A265598 /* BRZGIFViewProvider+SDWebImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CD7D38FC280085F402924CA /* BRZGIFViewProvider+SDWebImage.m */; }; + FF4835E6FE65B5459E0B9BE0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6459ADE015D6A93F4DDEF4D8 /* main.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -164,59 +182,63 @@ 12036F06D0B199D8445FCB1B /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 142C43EBD6AA34841D26163C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 16F703E30F0CDB139F4DBC8E /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1A008F2386666F587E975D0D /* InAppMessageUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessageUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1EA72C16B9A189DE9D4D7A58 /* ReadmeViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ReadmeViewController.m; sourceTree = ""; }; 220432BEC0EA7628608EA5BA /* braze-swift-sdk */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "braze-swift-sdk"; path = ../..; sourceTree = SOURCE_ROOT; }; - 31F63E82703CC19F27872526 /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; + 2BE6866047868E31857FEB14 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 324D8E917E21EC25C2E0EC7C /* AuthenticationManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AuthenticationManager.h; sourceTree = ""; }; 34BD000896FB64DC78BBF177 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 35A0BE5C8816D747CCA37863 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 3A8584CCE6D9BBC4C2F634BB /* CustomInAppMessagePresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CustomInAppMessagePresenter.m; sourceTree = ""; }; 3BF7AC51A554A71CFA452B84 /* AuthenticationManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AuthenticationManager.m; sourceTree = ""; }; + 3F278DD5EBF9747004183C8F /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 40B1FA52497F602A50792867 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 43898C005AA33A7630288625 /* ContentCardUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCardUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4A6F4B2BEAD3CC7A8F9250E8 /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; + 4C9D744C8C6CD3ECD092712A /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; + 4CD7D38FC280085F402924CA /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; 54B2132B425902ECA87672DE /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 5634FD53344A83FD267AB580 /* CardsInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CardsInfoViewController.m; sourceTree = ""; }; - 5B01598D5924C3065B7D516B /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; + 5DA022D2664E917AB6DF910C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 5DFFFE740A88297EE59DB98F /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5FFCA5A7A3B8EF9BFE4BF145 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 631AC4EE3B6D81ACA0DBEFBE /* CardsInfoViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CardsInfoViewController.h; sourceTree = ""; }; 6459ADE015D6A93F4DDEF4D8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 64B22ACFDEB977C9F3B3B67E /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - 65785E585247CC7A8661ED6B /* InAppMessages.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessages.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6A76DADC444C28D2653F471B /* InAppMessageUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessageUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 71CF9250418324FDD933C503 /* NotAvailableInObjC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NotAvailableInObjC.m; sourceTree = ""; }; + 742A9C4C4D1368BA62472F8B /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 7509FFDD2664F798C716F648 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 75CC1E79A9D6815B60835BA2 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; - 7D76AFE44929AD2F889183E3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 84D56D9CC866EB37EFC5EFD4 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 85EB91B2555C84CBD26F79F6 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 870B27433E30991ABA197CD2 /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 8783B6A324D425D55615AFD9 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 8D441B5B5424C3E129B2DA54 /* PushNotifications.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = PushNotifications.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 90388C63B5CA3065EB14C5E7 /* Readme.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Readme.m; sourceTree = ""; }; 971900217FE69BE4658FE8B2 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - 9A5ECFB24E396F30D56AC2C5 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 9EDFB6B6D9E65C9BFD47EA17 /* Analytics.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Analytics.app; sourceTree = BUILT_PRODUCTS_DIR; }; - A372FC98EA508F503CE11C30 /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; A7B092ACAEC915379923328F /* PushNotificationsContentExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsContentExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; A900B781B2DFE220B129E338 /* Credentials.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Credentials.m; sourceTree = ""; }; AF02C869BF9AFF144C7C90DF /* InAppMessageInfoViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = InAppMessageInfoViewController.m; sourceTree = ""; }; B0D325AE1E7E717D151B9B6B /* UserNotificationsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotificationsUI.framework; path = System/Library/Frameworks/UserNotificationsUI.framework; sourceTree = SDKROOT; }; + B29D192E53C1405628200101 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; B558422CCA055B4615F43572 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; B5666DA142189EEEDFAFB41F /* PushNotificationsServiceExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; - B7F06535E19BAEA9F5B73F86 /* ContentCards.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCards.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BAE951BE8F753A9864D29D6C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; BC5EE8BE3BAD32DB6D66AC70 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; C1B822E14D6196E0BDCC531E /* ReadmeAction.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReadmeAction.h; sourceTree = ""; }; - C79CCF16B994DB3DCD63BE74 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; CE00D10FF658213E5A00188D /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = ""; }; CF2BBB04F875FF5FA863FC82 /* CustomInAppMessagePresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CustomInAppMessagePresenter.h; sourceTree = ""; }; CFCDF89427142AC55571D3A4 /* CheckoutViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CheckoutViewController.m; sourceTree = ""; }; D63F498CAD1B487B718A6064 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; + D65F1DF14BBFB716FC3B8EA8 /* ContentCardUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCardUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + E10D62519894CE82ED94A20E /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; E5F704300A66AB9522AA5F94 /* CheckoutViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CheckoutViewController.h; sourceTree = ""; }; - E86CD93FBF04F90F0ADCF89D /* BRZGIFViewProvider+SDWebImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BRZGIFViewProvider+SDWebImage.h"; sourceTree = ""; }; ECA5D86743A8F050AB493312 /* InAppMessages-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessages-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; EE631F5EEEEB707468BF265A /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; EE718585DF8925CE6290EB8E /* ReadmeViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReadmeViewController.h; sourceTree = ""; }; - EE7DAF62AE545D7087BB7032 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + EF84C935C8D4200A2401B6E1 /* NotAvailableInObjC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NotAvailableInObjC.m; sourceTree = ""; }; F7D912E013554F7C8A41F0ED /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - FBA572CA696173DD712458AD /* BRZGIFViewProvider+SDWebImage.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "BRZGIFViewProvider+SDWebImage.m"; sourceTree = ""; }; FF31C634A18224DB9ED02834 /* InAppMessages-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessages-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -229,6 +251,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 0352C484CD82DC90EE02F469 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E2498F93471B3ED7DCF4F798 /* BrazeKit in Frameworks */, + 2E1DF7C49B03F38BCE5285E7 /* BrazeUI in Frameworks */, + 850853B18B7DB34ADBCB56D2 /* SDWebImage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 183E99B0677A3CBB42A80754 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -238,21 +270,31 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 324CB6E38E7D86E327812A17 /* Frameworks */ = { + 1F87FC703AE08051B48A9038 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DBC0B617306F2A138194200C /* BrazeKit in Frameworks */, + 0660D42F760AE4E46AD69562 /* BrazeKit in Frameworks */, + 93F56B30055D001DF05356A5 /* BrazeUI in Frameworks */, + 27ECC4ED9EABA2405DF780CC /* SDWebImage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 237BB517A826BB290757249B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EAC53BC784BF380F8205F01F /* BrazeKit in Frameworks */, + 2553ED24C2112991F382CF3A /* BrazeUI in Frameworks */, + B3BDA4F943A5C0AD2DEF5A7C /* SDWebImage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3FE4CCA5EE34D160D3BA7E65 /* Frameworks */ = { + 324CB6E38E7D86E327812A17 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EF5EF251D34064B14F500469 /* BrazeKit in Frameworks */, - 5C0D56998D46869E0617E5A4 /* BrazeUI in Frameworks */, - 176536B39FED72ECC2028BFC /* SDWebImage in Frameworks */, + DBC0B617306F2A138194200C /* BrazeKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -282,16 +324,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6E70CCCD8CEE5D68B1E92800 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6FAFF3BA371E41638E044127 /* BrazeKit in Frameworks */, - 9CE6B2D9DC0F3B277094AEB9 /* BrazeUI in Frameworks */, - 02C558571508A77542FBC26C /* SDWebImage in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 76AEEA4F011020D515A98A7F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -326,6 +358,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C911032532647ABBD19356F1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6D37F619E60F577AF2FB208D /* BrazeKit in Frameworks */, + ECF4EB3AB84967F7DBDB8452 /* BrazeUI in Frameworks */, + DB13431FC72E0BCD34A86902 /* SDWebImage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EFAF41E4C424F1D471C539B5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -358,19 +400,6 @@ path = "Sources/ContentCards-Custom-UI"; sourceTree = ""; }; - 234FC0FDE1EB1D2B1EE92CDA /* ContentCards */ = { - isa = PBXGroup; - children = ( - C79CCF16B994DB3DCD63BE74 /* AppDelegate.h */, - EE7DAF62AE545D7087BB7032 /* AppDelegate.m */, - E86CD93FBF04F90F0ADCF89D /* BRZGIFViewProvider+SDWebImage.h */, - A372FC98EA508F503CE11C30 /* BRZGIFViewProvider+SDWebImage.m */, - 90388C63B5CA3065EB14C5E7 /* Readme.m */, - ); - name = ContentCards; - path = Sources/ContentCards; - sourceTree = ""; - }; 256C64FD5A9C547C95ED205A /* Location */ = { isa = PBXGroup; children = ( @@ -397,6 +426,28 @@ path = Sources/Analytics; sourceTree = ""; }; + 4A8610F6DB5D3BD5353159BF /* InAppMessageUI-Customization */ = { + isa = PBXGroup; + children = ( + EF84C935C8D4200A2401B6E1 /* NotAvailableInObjC.m */, + ); + name = "InAppMessageUI-Customization"; + path = "Sources/InAppMessageUI-Customization"; + sourceTree = ""; + }; + 518A861147034CC7C7A6F886 /* ContentCardUI */ = { + isa = PBXGroup; + children = ( + B29D192E53C1405628200101 /* AppDelegate.h */, + 2BE6866047868E31857FEB14 /* AppDelegate.m */, + 4C9D744C8C6CD3ECD092712A /* BRZGIFViewProvider+SDWebImage.h */, + 4CD7D38FC280085F402924CA /* BRZGIFViewProvider+SDWebImage.m */, + 742A9C4C4D1368BA62472F8B /* Readme.m */, + ); + name = ContentCardUI; + path = Sources/ContentCardUI; + sourceTree = ""; + }; 602D317DF9E1FCBC46B4F176 /* PushNotificationsContentExtension */ = { isa = PBXGroup; children = ( @@ -440,19 +491,6 @@ path = "Sources/InAppMessages-Custom-UI"; sourceTree = ""; }; - A3A2735A5DC208B24378D437 /* InAppMessages */ = { - isa = PBXGroup; - children = ( - 7D76AFE44929AD2F889183E3 /* AppDelegate.h */, - 9A5ECFB24E396F30D56AC2C5 /* AppDelegate.m */, - 31F63E82703CC19F27872526 /* BRZGIFViewProvider+SDWebImage.h */, - FBA572CA696173DD712458AD /* BRZGIFViewProvider+SDWebImage.m */, - 5B01598D5924C3065B7D516B /* Readme.m */, - ); - name = InAppMessages; - path = Sources/InAppMessages; - sourceTree = ""; - }; AD1929AE02C13E7023AE1CA4 /* PushNotificationsServiceExtension */ = { isa = PBXGroup; children = ( @@ -478,6 +516,19 @@ path = Sources/Common; sourceTree = ""; }; + BE255BA36238D9A1B4530C95 /* InAppMessageUI */ = { + isa = PBXGroup; + children = ( + BAE951BE8F753A9864D29D6C /* AppDelegate.h */, + 5DA022D2664E917AB6DF910C /* AppDelegate.m */, + E10D62519894CE82ED94A20E /* BRZGIFViewProvider+SDWebImage.h */, + 4A6F4B2BEAD3CC7A8F9250E8 /* BRZGIFViewProvider+SDWebImage.m */, + 3F278DD5EBF9747004183C8F /* Readme.m */, + ); + name = InAppMessageUI; + path = Sources/InAppMessageUI; + sourceTree = ""; + }; CD535985A50FFC8EDE928813 /* Products */ = { isa = PBXGroup; children = ( @@ -485,10 +536,12 @@ 0B3605C45690205D4A58D1C3 /* Analytics.app */, 870B27433E30991ABA197CD2 /* ContentCards-Custom-UI.app */, 16F703E30F0CDB139F4DBC8E /* ContentCards-Custom-UI.app */, - B7F06535E19BAEA9F5B73F86 /* ContentCards.app */, + D65F1DF14BBFB716FC3B8EA8 /* ContentCardUI-Customization.app */, + 43898C005AA33A7630288625 /* ContentCardUI.app */, FF31C634A18224DB9ED02834 /* InAppMessages-Custom-UI.app */, ECA5D86743A8F050AB493312 /* InAppMessages-Custom-UI.app */, - 65785E585247CC7A8661ED6B /* InAppMessages.app */, + 6A76DADC444C28D2653F471B /* InAppMessageUI-Customization.app */, + 1A008F2386666F587E975D0D /* InAppMessageUI.app */, EE631F5EEEEB707468BF265A /* Location.app */, 5DFFFE740A88297EE59DB98F /* Location.app */, 8D441B5B5424C3E129B2DA54 /* PushNotifications.app */, @@ -498,16 +551,27 @@ name = Products; sourceTree = ""; }; + D03146EA39AB44D97182A5DF /* ContentCardUI-Customization */ = { + isa = PBXGroup; + children = ( + 71CF9250418324FDD933C503 /* NotAvailableInObjC.m */, + ); + name = "ContentCardUI-Customization"; + path = "Sources/ContentCardUI-Customization"; + sourceTree = ""; + }; D8CC2266D736859D7DD9A8FF = { isa = PBXGroup; children = ( E3AF9F206199B993ACB3E63D /* Packages */, B4F25C051708E808116165D4 /* Common */, 258F28BC46EE3F2D3E079C37 /* Analytics */, - 234FC0FDE1EB1D2B1EE92CDA /* ContentCards */, 119FF3F930BD1BF66DEB0B47 /* ContentCards-Custom-UI */, - A3A2735A5DC208B24378D437 /* InAppMessages */, + 518A861147034CC7C7A6F886 /* ContentCardUI */, + D03146EA39AB44D97182A5DF /* ContentCardUI-Customization */, 6E715B0CD6028EAEB53373C9 /* InAppMessages-Custom-UI */, + BE255BA36238D9A1B4530C95 /* InAppMessageUI */, + 4A8610F6DB5D3BD5353159BF /* InAppMessageUI-Customization */, 256C64FD5A9C547C95ED205A /* Location */, 67175574AAFF46A4632B42DA /* PushNotifications */, 602D317DF9E1FCBC46B4F176 /* PushNotificationsContentExtension */, @@ -537,6 +601,50 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 0A1211FC31CA5DD9A5E1D18E /* ContentCardUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5181AF8DDEA182DF10C54652 /* Build configuration list for PBXNativeTarget "ContentCardUI" */; + buildPhases = ( + FB5C5DB7F3CC52A66733B1D4 /* Sources */, + 6EDCC3D6A15F3C94C51FCD3D /* Resources */, + 1F87FC703AE08051B48A9038 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ContentCardUI; + packageProductDependencies = ( + B886221109B13C767819BA7C /* BrazeKit */, + 624AA955B2621EE8B5A153AE /* BrazeUI */, + 64EAC9A16C6BB0EA49C9157A /* SDWebImage */, + ); + productName = ContentCardUI; + productReference = 43898C005AA33A7630288625 /* ContentCardUI.app */; + productType = "com.apple.product-type.application"; + }; + 1BB9C370026C39B3DBE54065 /* InAppMessageUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C19E16B15D4B729583F0D3A /* Build configuration list for PBXNativeTarget "InAppMessageUI" */; + buildPhases = ( + EEF022E2C366440FCCF362C0 /* Sources */, + 865BE7921091ADCB20B8EBC2 /* Resources */, + 237BB517A826BB290757249B /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = InAppMessageUI; + packageProductDependencies = ( + E045FE65756A230024955AD5 /* BrazeKit */, + 5FDBAD51FF3A992AEB226099 /* BrazeUI */, + 2DFFD8844A474098D6408946 /* SDWebImage */, + ); + productName = InAppMessageUI; + productReference = 1A008F2386666F587E975D0D /* InAppMessageUI.app */; + productType = "com.apple.product-type.application"; + }; 3AA5E6D1B97103DC27376A6D /* Analytics-tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = E00B5C25BE5714D67E69A3EF /* Build configuration list for PBXNativeTarget "Analytics-tvOS" */; @@ -577,28 +685,6 @@ productReference = 9EDFB6B6D9E65C9BFD47EA17 /* Analytics.app */; productType = "com.apple.product-type.application"; }; - 5BE2DFC918DF0CC5E69FE387 /* InAppMessages */ = { - isa = PBXNativeTarget; - buildConfigurationList = F76B079D8771880EE7A2C01D /* Build configuration list for PBXNativeTarget "InAppMessages" */; - buildPhases = ( - 629101DE070207860B0FF0B5 /* Sources */, - 3D8D07DBB7AF1C865DA26D8E /* Resources */, - 3FE4CCA5EE34D160D3BA7E65 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = InAppMessages; - packageProductDependencies = ( - 09701E67CAE64FCE46458059 /* BrazeKit */, - 9AF0AF048F752A5C62317470 /* BrazeUI */, - 0BF370808D2F5C21870331A0 /* SDWebImage */, - ); - productName = InAppMessages; - productReference = 65785E585247CC7A8661ED6B /* InAppMessages.app */; - productType = "com.apple.product-type.application"; - }; 6EC91F0D0FFF467CD90FB0D3 /* InAppMessages-Custom-UI-tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = 5FD7F38C2E047474FF2AE862 /* Build configuration list for PBXNativeTarget "InAppMessages-Custom-UI-tvOS" */; @@ -743,26 +829,48 @@ productReference = 16F703E30F0CDB139F4DBC8E /* ContentCards-Custom-UI.app */; productType = "com.apple.product-type.application"; }; - DEE99E05C6F822DC78AEE272 /* ContentCards */ = { + BF81DFAFE8B8E3CB74955E60 /* InAppMessageUI-Customization */ = { + isa = PBXNativeTarget; + buildConfigurationList = A6A1E4C76F43C48C764BB3A6 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */; + buildPhases = ( + CEC03848E365E8C4311060A8 /* Sources */, + 61024293B1BC6D12325B3AEB /* Resources */, + 0352C484CD82DC90EE02F469 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "InAppMessageUI-Customization"; + packageProductDependencies = ( + 1587AFA62763A9B75CA01C6C /* BrazeKit */, + 0891F7D29EA51A994793513D /* BrazeUI */, + 6406D8C02D350722AE48DE31 /* SDWebImage */, + ); + productName = "InAppMessageUI-Customization"; + productReference = 6A76DADC444C28D2653F471B /* InAppMessageUI-Customization.app */; + productType = "com.apple.product-type.application"; + }; + C86DEA9CD6ED7E7E75358AD0 /* ContentCardUI-Customization */ = { isa = PBXNativeTarget; - buildConfigurationList = DAC0A7E698E628D993F35934 /* Build configuration list for PBXNativeTarget "ContentCards" */; + buildConfigurationList = 4F7E20F26C98E081CA9378CE /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */; buildPhases = ( - 6089EE24E3EFFEC175CB9A6A /* Sources */, - 1F3BD016FE47788CA94B7A4A /* Resources */, - 6E70CCCD8CEE5D68B1E92800 /* Frameworks */, + 2DE3C693088803AF76B02FC7 /* Sources */, + B8FC3F5D81CD320A55B54135 /* Resources */, + C911032532647ABBD19356F1 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); - name = ContentCards; + name = "ContentCardUI-Customization"; packageProductDependencies = ( - 89598718421C181B57346379 /* BrazeKit */, - 26C11D75220DCD8456AEAA39 /* BrazeUI */, - 0D08CDAB0AE57DFC38F9B590 /* SDWebImage */, + 9720FE32CFB77D7E0319A501 /* BrazeKit */, + 96F76CB78E3FFBBBCDE87EBD /* BrazeUI */, + 77C32D8D5EBCD917A23EE382 /* SDWebImage */, ); - productName = ContentCards; - productReference = B7F06535E19BAEA9F5B73F86 /* ContentCards.app */; + productName = "ContentCardUI-Customization"; + productReference = D65F1DF14BBFB716FC3B8EA8 /* ContentCardUI-Customization.app */; productType = "com.apple.product-type.application"; }; E59DB4201FEAE1A212979375 /* PushNotificationsContentExtension */ = { @@ -831,10 +939,12 @@ targets = ( 4B98C28FD93E5AD15DE94535 /* Analytics-iOS */, 3AA5E6D1B97103DC27376A6D /* Analytics-tvOS */, - DEE99E05C6F822DC78AEE272 /* ContentCards */, + 0A1211FC31CA5DD9A5E1D18E /* ContentCardUI */, + C86DEA9CD6ED7E7E75358AD0 /* ContentCardUI-Customization */, 960C133F6A6AD264A11DD8D9 /* ContentCards-Custom-UI-iOS */, BE02E0C55FAEA6294D129A38 /* ContentCards-Custom-UI-tvOS */, - 5BE2DFC918DF0CC5E69FE387 /* InAppMessages */, + 1BB9C370026C39B3DBE54065 /* InAppMessageUI */, + BF81DFAFE8B8E3CB74955E60 /* InAppMessageUI-Customization */, FD2447C0C6527F1CB2BEC9A6 /* InAppMessages-Custom-UI-iOS */, 6EC91F0D0FFF467CD90FB0D3 /* InAppMessages-Custom-UI-tvOS */, 9B3876462D904A1496AF569D /* Location-iOS */, @@ -883,15 +993,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1F3BD016FE47788CA94B7A4A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 241F4F1F41D820C55156841D /* Assets.xcassets in Resources */, - AD0FB326BFA4C3E7A64469FA /* LaunchScreen.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 2524C2C4AECF5FA40FF674F8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -910,12 +1011,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3D8D07DBB7AF1C865DA26D8E /* Resources */ = { + 61024293B1BC6D12325B3AEB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8EC99177B84C2FD480B24D33 /* Assets.xcassets in Resources */, - 80D345EAA814805B7B762A4E /* LaunchScreen.storyboard in Resources */, + 949F18A735AE80D5213E51A1 /* Assets.xcassets in Resources */, + 94C35C34017333F3767E58FE /* LaunchScreen.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -937,6 +1038,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6EDCC3D6A15F3C94C51FCD3D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E2E95C34F86FA357D6BCAE54 /* Assets.xcassets in Resources */, + DD969931CFCDB9CABFA30F85 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 865BE7921091ADCB20B8EBC2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F97087EBFD4931AA7C9F3463 /* Assets.xcassets in Resources */, + 19D922BB530AB0C688C2EA4E /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B8FC3F5D81CD320A55B54135 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DE620D05A5DCCA569EE55A19 /* Assets.xcassets in Resources */, + 8B971E3E345CD1B722FDBE40 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; FDCF284FAF6DD56D949E0F0F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -996,41 +1124,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4D9E50A78216959662CAD320 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CBE072256EDCC746C7BC2D29 /* AppDelegate.m in Sources */, - EF5ED1AD6790AA461DC0B2C6 /* Credentials.m in Sources */, - 28C5F7A47286B0D4233CFD93 /* Readme.m in Sources */, - D0680AB119405ED4AD4AB35A /* ReadmeViewController.m in Sources */, - DF5F3076246E4D156FA5A3F8 /* main.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6089EE24E3EFFEC175CB9A6A /* Sources */ = { + 2DE3C693088803AF76B02FC7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EA8ED23E897565712389CE3F /* AppDelegate.m in Sources */, - ED42AFACDCE40F3510BCCB65 /* BRZGIFViewProvider+SDWebImage.m in Sources */, - 75D4A5808678A333BC37FD62 /* Credentials.m in Sources */, - 693EE86FDDA758DF36715F51 /* Readme.m in Sources */, - 0EA9500525189479BEEA2579 /* ReadmeViewController.m in Sources */, - FF9046579962F0EBB98DB78C /* main.m in Sources */, + B9FD0579C0BD5CB2E1C11C6D /* Credentials.m in Sources */, + D117EDCFC5FADDCD2F3C475F /* NotAvailableInObjC.m in Sources */, + 3E6D81E2DD6BA6B5F8E30BAE /* ReadmeViewController.m in Sources */, + C20761A80E31DE7D15ADE19C /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 629101DE070207860B0FF0B5 /* Sources */ = { + 4D9E50A78216959662CAD320 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3CF570CEA985E07B3DBFBBBE /* AppDelegate.m in Sources */, - DB84622E0C40467BD20C3779 /* BRZGIFViewProvider+SDWebImage.m in Sources */, - 78D5F4892287E2A080AFD065 /* Credentials.m in Sources */, - B1EA445BF1E43473B3F7A9EF /* Readme.m in Sources */, - DE22594DD1123178B1CC7771 /* ReadmeViewController.m in Sources */, - 0F7C946151DE727574B396A6 /* main.m in Sources */, + CBE072256EDCC746C7BC2D29 /* AppDelegate.m in Sources */, + EF5ED1AD6790AA461DC0B2C6 /* Credentials.m in Sources */, + 28C5F7A47286B0D4233CFD93 /* Readme.m in Sources */, + D0680AB119405ED4AD4AB35A /* ReadmeViewController.m in Sources */, + DF5F3076246E4D156FA5A3F8 /* main.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1070,6 +1183,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + CEC03848E365E8C4311060A8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5DF2674CA83F6ECC633EDA99 /* Credentials.m in Sources */, + 41CFC07655CF0A3FB6E2ADE2 /* NotAvailableInObjC.m in Sources */, + D9C6A59CE85BAB7EFE4861B0 /* ReadmeViewController.m in Sources */, + 97403331CA7F887B935DBC01 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DADCD7F86B712F9D6A7C1EB7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1109,6 +1233,32 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EEF022E2C366440FCCF362C0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 123944DA228A07A27CA8FE20 /* AppDelegate.m in Sources */, + 54E8D58237B1B94EEBF67682 /* BRZGIFViewProvider+SDWebImage.m in Sources */, + 04ABB1F6B9F73AAAC87714B4 /* Credentials.m in Sources */, + 970E129EDC8F2E439C0C0823 /* Readme.m in Sources */, + A7D7689D324CFB54651FC94D /* ReadmeViewController.m in Sources */, + 5D3DC164C01F1693AB940603 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FB5C5DB7F3CC52A66733B1D4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1DA9FEF369A4E15D2B76215A /* AppDelegate.m in Sources */, + FD9823DF369C66F24A265598 /* BRZGIFViewProvider+SDWebImage.m in Sources */, + B36AD5F91B9F069E042F3CB5 /* Credentials.m in Sources */, + E57EF4D623F7C39F800DF8CB /* Readme.m in Sources */, + 07995DC0FD113700D297A5AA /* ReadmeViewController.m in Sources */, + FF4835E6FE65B5459E0B9BE0 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1213,23 +1363,6 @@ }; name = Debug; }; - 338E775FC51FCA458B2B4AFB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 35E8D78DF517B11959723F4D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1293,40 +1426,23 @@ }; name = Debug; }; - 4C1CEEB16B22B01668229861 /* Release */ = { + 4A132652A20295B00590B16B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; - 56FADC974A57962ED605AB39 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 582C70DAA75E87B5B1B59BCC /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1434,6 +1550,23 @@ }; name = Release; }; + 6C12E2EAE507160B54525A5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 71303405F07C56DBF2524662 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1553,6 +1686,23 @@ }; name = Release; }; + 9D9A0BDA997D036EBEA9221C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 9E13FBC998B0A5499C68208A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1568,6 +1718,57 @@ }; name = Release; }; + A6A715219F3001A92D10FDCE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B2A94D46C4928B86BDB1F2AF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B436B532CD385795FBD8A905 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; B9FD2D94FC2BF1DFA9DDA644 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1634,40 +1835,40 @@ }; name = Debug; }; - DB1B706F4301DC478A0A4D4B /* Debug */ = { + C2A7EEE09BB48F72633D6BEB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = Sources/PushNotifications/PushNotifications.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/PushNotifications/Info.plist; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.PushNotifications; - PRODUCT_NAME = PushNotifications; + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Debug; + name = Release; }; - F3C477DD3FBDBF3AB5B2FA92 /* Release */ = { + DB1B706F4301DC478A0A4D4B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Sources/PushNotifications/PushNotifications.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; + INFOPLIST_FILE = Sources/PushNotifications/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; + PRODUCT_BUNDLE_IDENTIFIER = com.braze.PushNotifications; + PRODUCT_NAME = PushNotifications; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Debug; }; F83B82D7A7E5DB678B6196A6 /* Debug */ = { isa = XCBuildConfiguration; @@ -1684,6 +1885,23 @@ }; name = Debug; }; + FDF551A632AD9FFB676FAA4D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; FF5221A5B39619377D55A14C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1740,6 +1958,33 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + 4C19E16B15D4B729583F0D3A /* Build configuration list for PBXNativeTarget "InAppMessageUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6C12E2EAE507160B54525A5E /* Debug */, + 4A132652A20295B00590B16B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 4F7E20F26C98E081CA9378CE /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9D9A0BDA997D036EBEA9221C /* Debug */, + A6A715219F3001A92D10FDCE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 5181AF8DDEA182DF10C54652 /* Build configuration list for PBXNativeTarget "ContentCardUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B436B532CD385795FBD8A905 /* Debug */, + C2A7EEE09BB48F72633D6BEB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; 52115E4788F114BD9F51C612 /* Build configuration list for PBXNativeTarget "ContentCards-Custom-UI-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1785,11 +2030,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - DAC0A7E698E628D993F35934 /* Build configuration list for PBXNativeTarget "ContentCards" */ = { + A6A1E4C76F43C48C764BB3A6 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */ = { isa = XCConfigurationList; buildConfigurations = ( - 338E775FC51FCA458B2B4AFB /* Debug */, - 4C1CEEB16B22B01668229861 /* Release */, + B2A94D46C4928B86BDB1F2AF /* Debug */, + FDF551A632AD9FFB676FAA4D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; @@ -1812,15 +2057,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - F76B079D8771880EE7A2C01D /* Build configuration list for PBXNativeTarget "InAppMessages" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 56FADC974A57962ED605AB39 /* Debug */, - F3C477DD3FBDBF3AB5B2FA92 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; FB6122990820F57E6DB4A7D6 /* Build configuration list for PBXNativeTarget "PushNotificationsServiceExtension" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1848,32 +2084,27 @@ isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 09701E67CAE64FCE46458059 /* BrazeKit */ = { - isa = XCSwiftPackageProductDependency; - productName = BrazeKit; - }; - 0BF370808D2F5C21870331A0 /* SDWebImage */ = { + 0891F7D29EA51A994793513D /* BrazeUI */ = { isa = XCSwiftPackageProductDependency; - package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; - productName = SDWebImage; + productName = BrazeUI; }; - 0D08CDAB0AE57DFC38F9B590 /* SDWebImage */ = { + 1587AFA62763A9B75CA01C6C /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; - package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; - productName = SDWebImage; + productName = BrazeKit; }; 17D80570112755DC2EEEF450 /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 26C11D75220DCD8456AEAA39 /* BrazeUI */ = { - isa = XCSwiftPackageProductDependency; - productName = BrazeUI; - }; 2C4994F9E91F986F0629979F /* BrazeLocation */ = { isa = XCSwiftPackageProductDependency; productName = BrazeLocation; }; + 2DFFD8844A474098D6408946 /* SDWebImage */ = { + isa = XCSwiftPackageProductDependency; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; + }; 47F3E12B1114B00B4CB70C60 /* BrazeNotificationService */ = { isa = XCSwiftPackageProductDependency; productName = BrazeNotificationService; @@ -1882,6 +2113,24 @@ isa = XCSwiftPackageProductDependency; productName = BrazePushStory; }; + 5FDBAD51FF3A992AEB226099 /* BrazeUI */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeUI; + }; + 624AA955B2621EE8B5A153AE /* BrazeUI */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeUI; + }; + 6406D8C02D350722AE48DE31 /* SDWebImage */ = { + isa = XCSwiftPackageProductDependency; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; + }; + 64EAC9A16C6BB0EA49C9157A /* SDWebImage */ = { + isa = XCSwiftPackageProductDependency; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; + }; 74D6487EFD8114F6B61637AB /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; @@ -1890,18 +2139,23 @@ isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 80661DB9711EFD43546E249C /* BrazeKit */ = { + 77C32D8D5EBCD917A23EE382 /* SDWebImage */ = { isa = XCSwiftPackageProductDependency; - productName = BrazeKit; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; }; - 89598718421C181B57346379 /* BrazeKit */ = { + 80661DB9711EFD43546E249C /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 9AF0AF048F752A5C62317470 /* BrazeUI */ = { + 96F76CB78E3FFBBBCDE87EBD /* BrazeUI */ = { isa = XCSwiftPackageProductDependency; productName = BrazeUI; }; + 9720FE32CFB77D7E0319A501 /* BrazeKit */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeKit; + }; 9F5A50D1AF8D80AC6C465155 /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; @@ -1910,6 +2164,14 @@ isa = XCSwiftPackageProductDependency; productName = BrazeLocation; }; + B886221109B13C767819BA7C /* BrazeKit */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeKit; + }; + E045FE65756A230024955AD5 /* BrazeKit */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeKit; + }; F173FCAB52D0340802119A34 /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; diff --git a/Examples/ObjC/Podfile b/Examples/ObjC/Podfile index 66dd814301..561d4cbab7 100644 --- a/Examples/ObjC/Podfile +++ b/Examples/ObjC/Podfile @@ -12,7 +12,16 @@ target 'Analytics-tvOS' do pod 'BrazeKit' end -target 'InAppMessages' do +target 'InAppMessageUI' do + platform :ios, '11.0' + pod 'BrazeKit' + pod 'BrazeUI' + # SDWebImage is optional. BrazeUI requires a third party library to display GIF images. + # See https://braze-inc.github.io/braze-swift-sdk/documentation/braze/gif-support-integrations + pod 'SDWebImage', :modular_headers => true +end + +target 'InAppMessageUI-Customization' do platform :ios, '11.0' pod 'BrazeKit' pod 'BrazeUI' @@ -31,7 +40,16 @@ target 'InAppMessages-Custom-UI-tvOS' do pod 'BrazeKit' end -target 'ContentCards' do +target 'ContentCardUI' do + platform :ios, '11.0' + pod 'BrazeKit' + pod 'BrazeUI' + # SDWebImage is optional. BrazeUI requires a third party library to display GIF images. + # See https://braze-inc.github.io/braze-swift-sdk/documentation/braze/gif-support-integrations + pod 'SDWebImage', :modular_headers => true +end + +target 'ContentCardUI-Customization' do platform :ios, '11.0' pod 'BrazeKit' pod 'BrazeUI' diff --git a/Examples/ObjC/Sources/ContentCardUI-Customization/NotAvailableInObjC.m b/Examples/ObjC/Sources/ContentCardUI-Customization/NotAvailableInObjC.m new file mode 100644 index 0000000000..109d95bc49 --- /dev/null +++ b/Examples/ObjC/Sources/ContentCardUI-Customization/NotAvailableInObjC.m @@ -0,0 +1,19 @@ +#import "ReadmeAction.h" +@import UIKit; + +#warning Content Cards UI customization is not supported in Objective-C, see our Swift example instead. + +NSString *const readme = @"Content Cards UI customization is not supported in Objective-C, see our Swift example instead."; +NSInteger const actionsCount = 0; +ReadmeAction const actions[] = {}; + +@interface AppDelegate : UIResponder +@end + +@implementation AppDelegate +- (BOOL)application:(UIApplication *)application +didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [self.window makeKeyAndVisible]; + return YES; +} +@end diff --git a/Examples/ObjC/Sources/ContentCards/AppDelegate.h b/Examples/ObjC/Sources/ContentCardUI/AppDelegate.h similarity index 100% rename from Examples/ObjC/Sources/ContentCards/AppDelegate.h rename to Examples/ObjC/Sources/ContentCardUI/AppDelegate.h diff --git a/Examples/ObjC/Sources/ContentCards/AppDelegate.m b/Examples/ObjC/Sources/ContentCardUI/AppDelegate.m similarity index 100% rename from Examples/ObjC/Sources/ContentCards/AppDelegate.m rename to Examples/ObjC/Sources/ContentCardUI/AppDelegate.m diff --git a/Examples/ObjC/Sources/ContentCards/BRZGIFViewProvider+SDWebImage.h b/Examples/ObjC/Sources/ContentCardUI/BRZGIFViewProvider+SDWebImage.h similarity index 100% rename from Examples/ObjC/Sources/ContentCards/BRZGIFViewProvider+SDWebImage.h rename to Examples/ObjC/Sources/ContentCardUI/BRZGIFViewProvider+SDWebImage.h diff --git a/Examples/ObjC/Sources/ContentCards/BRZGIFViewProvider+SDWebImage.m b/Examples/ObjC/Sources/ContentCardUI/BRZGIFViewProvider+SDWebImage.m similarity index 100% rename from Examples/ObjC/Sources/ContentCards/BRZGIFViewProvider+SDWebImage.m rename to Examples/ObjC/Sources/ContentCardUI/BRZGIFViewProvider+SDWebImage.m diff --git a/Examples/ObjC/Sources/ContentCards/Readme.m b/Examples/ObjC/Sources/ContentCardUI/Readme.m similarity index 100% rename from Examples/ObjC/Sources/ContentCards/Readme.m rename to Examples/ObjC/Sources/ContentCardUI/Readme.m diff --git a/Examples/ObjC/Sources/ContentCards/Info.plist b/Examples/ObjC/Sources/ContentCards/Info.plist deleted file mode 100644 index 0c015f1468..0000000000 --- a/Examples/ObjC/Sources/ContentCards/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - ContentCards - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - UILaunchStoryboardName - LaunchScreen - - diff --git a/Examples/ObjC/Sources/InAppMessageUI-Customization/NotAvailableInObjC.m b/Examples/ObjC/Sources/InAppMessageUI-Customization/NotAvailableInObjC.m new file mode 100644 index 0000000000..60808c77e6 --- /dev/null +++ b/Examples/ObjC/Sources/InAppMessageUI-Customization/NotAvailableInObjC.m @@ -0,0 +1,19 @@ +#import "ReadmeAction.h" +@import UIKit; + +#warning In-App Message UI customization is not supported in Objective-C, see our Swift example instead. + +NSString *const readme = @"In-App Message UI customization is not supported in Objective-C, see our Swift example instead."; +NSInteger const actionsCount = 0; +ReadmeAction const actions[] = {}; + +@interface AppDelegate : UIResponder +@end + +@implementation AppDelegate +- (BOOL)application:(UIApplication *)application +didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [self.window makeKeyAndVisible]; + return YES; +} +@end diff --git a/Examples/ObjC/Sources/InAppMessages/AppDelegate.h b/Examples/ObjC/Sources/InAppMessageUI/AppDelegate.h similarity index 100% rename from Examples/ObjC/Sources/InAppMessages/AppDelegate.h rename to Examples/ObjC/Sources/InAppMessageUI/AppDelegate.h diff --git a/Examples/ObjC/Sources/InAppMessages/AppDelegate.m b/Examples/ObjC/Sources/InAppMessageUI/AppDelegate.m similarity index 100% rename from Examples/ObjC/Sources/InAppMessages/AppDelegate.m rename to Examples/ObjC/Sources/InAppMessageUI/AppDelegate.m diff --git a/Examples/ObjC/Sources/InAppMessages/BRZGIFViewProvider+SDWebImage.h b/Examples/ObjC/Sources/InAppMessageUI/BRZGIFViewProvider+SDWebImage.h similarity index 100% rename from Examples/ObjC/Sources/InAppMessages/BRZGIFViewProvider+SDWebImage.h rename to Examples/ObjC/Sources/InAppMessageUI/BRZGIFViewProvider+SDWebImage.h diff --git a/Examples/ObjC/Sources/InAppMessages/BRZGIFViewProvider+SDWebImage.m b/Examples/ObjC/Sources/InAppMessageUI/BRZGIFViewProvider+SDWebImage.m similarity index 100% rename from Examples/ObjC/Sources/InAppMessages/BRZGIFViewProvider+SDWebImage.m rename to Examples/ObjC/Sources/InAppMessageUI/BRZGIFViewProvider+SDWebImage.m diff --git a/Examples/ObjC/Sources/InAppMessages/Readme.m b/Examples/ObjC/Sources/InAppMessageUI/Readme.m similarity index 100% rename from Examples/ObjC/Sources/InAppMessages/Readme.m rename to Examples/ObjC/Sources/InAppMessageUI/Readme.m diff --git a/Examples/ObjC/Sources/InAppMessages/Info.plist b/Examples/ObjC/Sources/InAppMessages/Info.plist deleted file mode 100644 index 4f97542122..0000000000 --- a/Examples/ObjC/Sources/InAppMessages/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - InAppMessages - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - UILaunchStoryboardName - LaunchScreen - - diff --git a/Examples/README.md b/Examples/README.md index b37a657fc6..15efbe911b 100644 --- a/Examples/README.md +++ b/Examples/README.md @@ -25,31 +25,47 @@ Follow the instructions below for your preferred package manager to get started. - Demonstrates how to use the analytics features of the SDK. - Related tutorial: [Analytics](https://braze-inc.github.io/braze-swift-sdk/tutorials/braze/a3-analytics). -#### ContentCards +#### ContentCardUI - iOS only. - Swift, Objective-C. - Demonstrates how to use the Braze provided Content Cards UI. - Related tutorial: [Content Cards UI](https://braze-inc.github.io/braze-swift-sdk/tutorials/braze/c2-contentcardsui). +#### ContentCardUI-Customization + +- iOS only. +- Swift, Objective-C. +- Demonstrates how to customize the Braze provided Content Cards UI. +- Related article: [Content Cards UI Customization](https://braze-inc.github.io/braze-swift-sdk/documentation/braze/content-cards-customization). + #### ContentCards-Custom-UI - iOS, tvOS. - Swift, Objective-C. - Demonstrates how to implement your own custom Content Cards UI. +- Related article: [Content Cards UI Customization](https://braze-inc.github.io/braze-swift-sdk/documentation/braze/content-cards-customization). -#### InAppMessages +#### InAppMessageUI - iOS only. - Swift, Objective-C. - Demonstrates how to use the Braze provided In-App Message UI. - Related tutorial: [In-App Messages](https://braze-inc.github.io/braze-swift-sdk/tutorials/braze/c1-inappmessageui). +#### InAppMessageUI-Customization + +- iOS only. +- Swift only. +- Demonstrates how to customize the Braze provided In-App Message UI. +- Related article: [In-App Message UI Customization](https://braze-inc.github.io/braze-swift-sdk/documentation/braze/in-app-message-customization) + #### InAppMessages-Custom-UI - iOS, tvOS. - Swift, Objective-C. - Demonstrates how to implement your own custom In-App Message UI. +- Related article: [In-App Message UI Customization](https://braze-inc.github.io/braze-swift-sdk/documentation/braze/in-app-message-customization) #### Location diff --git a/Examples/Swift/Examples-CocoaPods.xcodeproj/project.pbxproj b/Examples/Swift/Examples-CocoaPods.xcodeproj/project.pbxproj index a505e13a7f..fca91af365 100644 --- a/Examples/Swift/Examples-CocoaPods.xcodeproj/project.pbxproj +++ b/Examples/Swift/Examples-CocoaPods.xcodeproj/project.pbxproj @@ -9,90 +9,107 @@ /* Begin PBXBuildFile section */ 0684053D51385645627A6EC2 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = C938B015CECD020B6FA2206F /* Readme.swift */; }; 06C97BF64E9A3B3D120DC5DA /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4946E4B2E8F15E1A3241324 /* Readme.swift */; }; + 08123F8EDCFA937A58EDAB30 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C6734EEF181F0535929116A /* Readme.swift */; }; 0D6BFB49878D5CC48424A07E /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 0DE3276319B3F7EDE9E5761D /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61DA261A3969E80D4910B919 /* NotificationViewController.swift */; }; 1102DA6C1D1C3B9F9D571A6F /* CardsInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CEB9D205C9479024B2674FA /* CardsInfoViewController.swift */; }; + 11DD43D9D45939B67DC741A1 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; + 135B5B670D81F169A12722DF /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 161DC1259C44AD89479BA698 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA064323F91A22F4E14CAE9D /* NotificationService.swift */; }; 1EB7F46010C2EE195B7F82DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; 1F73E5982977DF8B1CBDEAA6 /* CustomInAppMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBFB1DEB4CDC0C09DF4FF9DC /* CustomInAppMessagePresenter.swift */; }; 2004486C1F497F0D78D3C3C7 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; 205B074E35873EF92413D18D /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; 2198B5052B89F561E1408347 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; - 243D978233307D328A4A1EE4 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; + 23026AD66FF84F25CDE81819 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; + 247143FD4540ED81C56940F1 /* FullWidthSlideupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93C74A8AB0317373366057E4 /* FullWidthSlideupView.swift */; }; 272A23EAF6BAD8414B08EBBC /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; 292FEAABE62351F10BD7242B /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; - 2A65F13CBADEAEA072B1962A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; 2CF3E11C7FFCA09427FEABCC /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; - 30D7A569B1A652D533C6DFF4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; - 3212C3821215C481B3F4B6C4 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 345CA2282BFEFED98328C0C2 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6992ACA4C973FAF6333EE4B2 /* Readme.swift */; }; 34C9C566ACB7B6220C782866 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; 356FD93DCAEAD68D24E91795 /* InAppMessageInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D93378C85712C1E5E9146B7 /* InAppMessageInfoViewController.swift */; }; 3C7196FB42C17C44254D7055 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; + 3E794CA31FE8246A6EE566B4 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F224F57B3C4BE13C161148B0 /* SDWebImageGIFViewProvider.swift */; }; 40BBC96C23C0D03C1876EFB3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; 40FB9F2DCF0F367CEA6D8E12 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 432D837B85AECB56882916FE /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; + 43E8FC4FE0FCC54974CED64F /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDDE1D547738FC75F10AD5E3 /* AppDelegate.swift */; }; + 478599D4418CF81DD5D95C47 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; 496F65492019BD1A4FE5F6A4 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1994AAD3540F9A97336B542D /* Extensions.swift */; }; 4B5DE5B818AF38D3D32DE44D /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 4C540B906F61167621B755FA /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4946E4B2E8F15E1A3241324 /* Readme.swift */; }; - 5250467C99642CB433B5BE53 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59732946C90C96FDFD43567E /* AppDelegate.swift */; }; + 55BE220F9A64058BE8CE2A00 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20ACDCAF82FAFB8B4915FF5D /* SDWebImageGIFViewProvider.swift */; }; 56E71FBF34C707A0C76D4E92 /* PushNotificationsServiceExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 40B660242E5E30D22F3AC51E /* PushNotificationsServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 5752C25DC8C2CA0C0925C10F /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6208C00FB5F7F0284A26EF20 /* UserNotifications.framework */; }; 5895FE9958ED00F6EB101FE3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0041AFC6938603AA8E408C85 /* AppDelegate.swift */; }; - 5B99366856EF616F55DB7F14 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC13846BDD825F17C9C23B9B /* SDWebImageGIFViewProvider.swift */; }; - 5D1F19E9A92921557D3ABD06 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF74213486BAEC4E0C94F02D /* SDWebImageGIFViewProvider.swift */; }; 5FC97622559904A83BEB7082 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44FBE4BAAD0A7EFA2E43ED70 /* Readme.swift */; }; 60D9B416B69C17AD0FF5FD87 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6208C00FB5F7F0284A26EF20 /* UserNotifications.framework */; }; + 614AF2E22ADA853DF9227F6F /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; 639A93232862A95314463DE5 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + 65D110C8D2CCFE582C33FEFE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + 667F36DD2198D4DA01794DEE /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 6E186056B0E0BED56C16A3B1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7B31A0AD9310E76D8820B67 /* AppDelegate.swift */; }; 7246237C3E3EFEE060D4520F /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = C938B015CECD020B6FA2206F /* Readme.swift */; }; - 7489ACB9F90DED02AA3B64EE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03168F8FCB98FF73CC62A64A /* AppDelegate.swift */; }; 79F0CFE1D23AB1C09F5BA9A0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405EC9F18FB085ECB16DB4F2 /* AppDelegate.swift */; }; + 7B812A1EEE21F16A51F14991 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B16ACF11150875C20E08B3AC /* AppDelegate.swift */; }; 7BD7D03FB0E6E381E2CB291A /* CheckoutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A11FA051B21C67BB9D89127 /* CheckoutViewController.swift */; }; 7FA271D4094CC903F4D8CA14 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1994AAD3540F9A97336B542D /* Extensions.swift */; }; 7FC56E25CCA1B6080699728A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; 801A7B564FDBB3FA929BA3E0 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; + 82635DB213CF8249B31A612D /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6742114C06FC93D4AA30B5B /* Readme.swift */; }; 849BF8AD70E050B555CD942C /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; + 86BCC651E1B01D82F6DDA664 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 88844A9880FFD74A9B042863 /* CheckoutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A11FA051B21C67BB9D89127 /* CheckoutViewController.swift */; }; 8AA046F58DFE835A8DBDC2FB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + 8EA064B314AC1FFF778E11BC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C30CE34888116E754351344 /* AppDelegate.swift */; }; 9840806A060D7FA1A1C04DDB /* CustomInAppMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBFB1DEB4CDC0C09DF4FF9DC /* CustomInAppMessagePresenter.swift */; }; 9AA553CA710417B6B9261B6C /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; 9BE24EB7834014A841226C6F /* AuthenticationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9A4EACB9451C069A63F43F /* AuthenticationManager.swift */; }; + 9C4BA0B17CDD5749B1E02314 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; 9EDF374BDDDC2F7BDE7DC3B7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBBD41BB997EBF5820D819F /* AppDelegate.swift */; }; A8360DD54C28212707944F4A /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; + AAE8B9B2CD0EFD8BC1386C00 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFF5B7638E61D0A89CA64347 /* Readme.swift */; }; AB2FE63CFBECFD1045D16ED7 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + AB3F67EEE9255DAA9A2BB799 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2EDAC4345C8A7EC73C0A9C /* SDWebImageGIFViewProvider.swift */; }; AB90E69DF960F3664C2FA3D7 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0041AFC6938603AA8E408C85 /* AppDelegate.swift */; }; + ADC57BB91E99F03639362DBE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + AE9F2211F733CD0E2D2AFC0B /* CustomClassicImageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10E9BA8357610D7CCDC06664 /* CustomClassicImageCell.swift */; }; AEDDEDC6F9B5D7838BE908D6 /* PushNotificationsContentExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 7EFD35FD440D538F5EB8F021 /* PushNotificationsContentExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + B3002DB2A8D026865BE7251B /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A451FB52C676012C8625D55C /* SDWebImageGIFViewProvider.swift */; }; B33A20E1225D89AC30CEC430 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; B9407B30787F88FAEDF42BC5 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BBBD41BB997EBF5820D819F /* AppDelegate.swift */; }; B9FD7A99B38E4F820A640660 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; BF4E8A203E306C324C3D7EEA /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; + C0ABFE39A262A4EFAA274C5A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; C0D38B13A94DADB550966E38 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; - C38B9EA3B93DEF499E7C6FDE /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED6428DF0330FE85A4FF7135 /* Readme.swift */; }; C650783920A53EDD98DD19E5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; + CB5A598CA883F225164544FB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; CF19792AFCEF53A28612612B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + D11E987E346B85F0966242D5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; D1B4FEFA476833265065E137 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5A56AB422F8DA782A8D2B6FD /* LaunchScreen.storyboard */; }; + D4858A10B4156FAB0AD564A8 /* ConfirmButtonSlideupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96894D8C1584EE12A5157761 /* ConfirmButtonSlideupView.swift */; }; D85EB7E1A82E081898089884 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44FBE4BAAD0A7EFA2E43ED70 /* Readme.swift */; }; D9302D865FB50ABD4486BC20 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; DAA18481E36225A541BF8091 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; DAB2F6E16C0005941B5CC8EA /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6992ACA4C973FAF6333EE4B2 /* Readme.swift */; }; DBB5253667D14BAA31F4CC93 /* CardsInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CEB9D205C9479024B2674FA /* CardsInfoViewController.swift */; }; DE53BE67D8DAD53909211056 /* InAppMessageInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D93378C85712C1E5E9146B7 /* InAppMessageInfoViewController.swift */; }; - E4206A2DEA0A202587F0F715 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; - E5D45B49FBA2F4F11D9DBBAD /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; + E2874959B3B047F5B4DF82B6 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + E497B8E5C5510F2B03179702 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; + E55B655798FDC3A053213A55 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56B8597B8B1BE2497CEFD038 /* Readme.swift */; }; E63FFCC8439CC53E8F297431 /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1874579DE7E406E73A3CB3A1 /* UserNotificationsUI.framework */; }; E83FD3473FD4FF5F37C5003B /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405EC9F18FB085ECB16DB4F2 /* AppDelegate.swift */; }; E9E8435129B8C5C86F579395 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; + EA836E31376F97EB1EA08854 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10608DDB131D70F8273A64B7 /* AppDelegate.swift */; }; EB71881CFACEA23DC2CF8112 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; ECF4B3DD82D61470A3EFC3E6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; EE1A489AA9350D6C14CBBBCE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CABCDD10D6E23AB146F9F7BA /* LaunchScreen.storyboard */; }; EEC8E34CA6F186D5CCE5D080 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7B31A0AD9310E76D8820B67 /* AppDelegate.swift */; }; F3414EC79F076EE60810E147 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0078638D97BB480D82B18D6C /* Credentials.swift */; }; F42CC1B49E69F3E73EFAAA3C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 514DAF551BD9AE51D34F1ACB /* AppDelegate.swift */; }; - F49C339077170329AC8926A3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */; }; - F7BCA95A9B52DF8721CEC8EF /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; + F57B565FDC038BD0215DD232 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */; }; F8A17ADE416B1BDA0913DFC8 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = D256C020EC4A6696D3E18665 /* Readme.swift */; }; - FCE80FC6A44E1A3360CE0ABD /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0C55708836E9855934DCA7B /* Readme.swift */; }; FD1986DD237FE5FF21F3B718 /* AuthenticationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE9A4EACB9451C069A63F43F /* AuthenticationManager.swift */; }; /* End PBXBuildFile section */ @@ -131,21 +148,28 @@ /* Begin PBXFileReference section */ 0041AFC6938603AA8E408C85 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 0078638D97BB480D82B18D6C /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; - 03168F8FCB98FF73CC62A64A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 0340E1FFDDBC0C9D72FCD4D4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 05A5CB32692A4493359A70F2 /* InAppMessages-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessages-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0F4B1C1A4381988C1833854B /* InAppMessageUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessageUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 10608DDB131D70F8273A64B7 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 10E9BA8357610D7CCDC06664 /* CustomClassicImageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomClassicImageCell.swift; sourceTree = ""; }; 1874579DE7E406E73A3CB3A1 /* UserNotificationsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotificationsUI.framework; path = System/Library/Frameworks/UserNotificationsUI.framework; sourceTree = SDKROOT; }; 1994AAD3540F9A97336B542D /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; - 2D50867A0DB9C8686F63A371 /* InAppMessages.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessages.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 20ACDCAF82FAFB8B4915FF5D /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; + 2C6734EEF181F0535929116A /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; 34DB46A770028DFE645A3AE4 /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3CEB9D205C9479024B2674FA /* CardsInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardsInfoViewController.swift; sourceTree = ""; }; + 3E8380DBBF4867829281E73C /* ContentCardUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCardUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 405EC9F18FB085ECB16DB4F2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 40B660242E5E30D22F3AC51E /* PushNotificationsServiceExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 42BA0F61D883E0421B3FA7CA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 44FBE4BAAD0A7EFA2E43ED70 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; 514DAF551BD9AE51D34F1ACB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 59732946C90C96FDFD43567E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 56B8597B8B1BE2497CEFD038 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + 582681504B814C38AB76A767 /* InAppMessageUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessageUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5BBBD41BB997EBF5820D819F /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 5C2EDAC4345C8A7EC73C0A9C /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; + 5C30CE34888116E754351344 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 61DA261A3969E80D4910B919 /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = ""; }; 6208C00FB5F7F0284A26EF20 /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = System/Library/Frameworks/UserNotifications.framework; sourceTree = SDKROOT; }; 6832319B66FB76CAA84519FA /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -153,24 +177,28 @@ 76740E64DEB7874C6DA73841 /* ReadmeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadmeViewController.swift; sourceTree = ""; }; 7EFD35FD440D538F5EB8F021 /* PushNotificationsContentExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsContentExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 8854CADF86F02FA64B2CC3F1 /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 89A6F6ADFDCAC1464C091E61 /* ContentCardUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCardUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8A11FA051B21C67BB9D89127 /* CheckoutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckoutViewController.swift; sourceTree = ""; }; 8D93378C85712C1E5E9146B7 /* InAppMessageInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppMessageInfoViewController.swift; sourceTree = ""; }; + 93C74A8AB0317373366057E4 /* FullWidthSlideupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullWidthSlideupView.swift; sourceTree = ""; }; + 96894D8C1584EE12A5157761 /* ConfirmButtonSlideupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmButtonSlideupView.swift; sourceTree = ""; }; 9E2B80BBE3951963FBA6BBD3 /* Analytics.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Analytics.app; sourceTree = BUILT_PRODUCTS_DIR; }; - A0C55708836E9855934DCA7B /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; A37E3B0FA418AB843D26F7F9 /* PushNotifications.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = PushNotifications.app; sourceTree = BUILT_PRODUCTS_DIR; }; + A451FB52C676012C8625D55C /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; A77BCD95413ADCF8578235CE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - AC13846BDD825F17C9C23B9B /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; - AF74213486BAEC4E0C94F02D /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; + AFF5B7638E61D0A89CA64347 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + B16ACF11150875C20E08B3AC /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; B7B31A0AD9310E76D8820B67 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; BA064323F91A22F4E14CAE9D /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; BBFB1DEB4CDC0C09DF4FF9DC /* CustomInAppMessagePresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomInAppMessagePresenter.swift; sourceTree = ""; }; + BDDE1D547738FC75F10AD5E3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; BE9A4EACB9451C069A63F43F /* AuthenticationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationManager.swift; sourceTree = ""; }; C78E0B5A5D52F990511A4091 /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; C938B015CECD020B6FA2206F /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; - C9C1B6158983BCB0C593DAE4 /* ContentCards.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCards.app; sourceTree = BUILT_PRODUCTS_DIR; }; D256C020EC4A6696D3E18665 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + D6742114C06FC93D4AA30B5B /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; DE3608B9E460175A349CDB87 /* Analytics.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Analytics.app; sourceTree = BUILT_PRODUCTS_DIR; }; - ED6428DF0330FE85A4FF7135 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + F224F57B3C4BE13C161148B0 /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; F4946E4B2E8F15E1A3241324 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; FE50398A21EB6A33EE9874A2 /* InAppMessages-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessages-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -196,6 +224,38 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 09094FD860B8CA12810EF498 /* InAppMessageUI */ = { + isa = PBXGroup; + children = ( + B16ACF11150875C20E08B3AC /* AppDelegate.swift */, + 56B8597B8B1BE2497CEFD038 /* Readme.swift */, + 5C2EDAC4345C8A7EC73C0A9C /* SDWebImageGIFViewProvider.swift */, + ); + name = InAppMessageUI; + path = Sources/InAppMessageUI; + sourceTree = ""; + }; + 18E20A5B6EE782E135552DA6 /* Subclasses */ = { + isa = PBXGroup; + children = ( + 96894D8C1584EE12A5157761 /* ConfirmButtonSlideupView.swift */, + 93C74A8AB0317373366057E4 /* FullWidthSlideupView.swift */, + ); + path = Subclasses; + sourceTree = ""; + }; + 45F192846EACB1A9AA4B13B4 /* InAppMessageUI-Customization */ = { + isa = PBXGroup; + children = ( + BDDE1D547738FC75F10AD5E3 /* AppDelegate.swift */, + 2C6734EEF181F0535929116A /* Readme.swift */, + 20ACDCAF82FAFB8B4915FF5D /* SDWebImageGIFViewProvider.swift */, + 18E20A5B6EE782E135552DA6 /* Subclasses */, + ); + name = "InAppMessageUI-Customization"; + path = "Sources/InAppMessageUI-Customization"; + sourceTree = ""; + }; 4F38F2ACA591DCA04EF16BB1 /* Location */ = { isa = PBXGroup; children = ( @@ -223,10 +283,12 @@ children = ( EB043806B7BB06DCA25E0177 /* Common */, 51FBDA444B2130ED53F050CB /* Analytics */, - EE1BF73C17001D2912250407 /* ContentCards */, 6F112DA3865BFE3961698859 /* ContentCards-Custom-UI */, - 9AA2DA5B878C1242DBDD0410 /* InAppMessages */, + F500AE7A04E46943FAA225C4 /* ContentCardUI */, + CFAE53A0FC9D7251D24F9F70 /* ContentCardUI-Customization */, E3BAE1A02E5A97AD717C4DE1 /* InAppMessages-Custom-UI */, + 09094FD860B8CA12810EF498 /* InAppMessageUI */, + 45F192846EACB1A9AA4B13B4 /* InAppMessageUI-Customization */, 4F38F2ACA591DCA04EF16BB1 /* Location */, E956091874C7F622B207B35A /* PushNotifications */, 79BD163F0CE766FD84A15D5A /* PushNotificationsContentExtension */, @@ -247,6 +309,14 @@ path = "Sources/ContentCards-Custom-UI"; sourceTree = ""; }; + 73C696BB29CA2BCF1EF3D113 /* Subclasses */ = { + isa = PBXGroup; + children = ( + 10E9BA8357610D7CCDC06664 /* CustomClassicImageCell.swift */, + ); + path = Subclasses; + sourceTree = ""; + }; 79BD163F0CE766FD84A15D5A /* PushNotificationsContentExtension */ = { isa = PBXGroup; children = ( @@ -271,10 +341,12 @@ DE3608B9E460175A349CDB87 /* Analytics.app */, 8854CADF86F02FA64B2CC3F1 /* ContentCards-Custom-UI.app */, C78E0B5A5D52F990511A4091 /* ContentCards-Custom-UI.app */, - C9C1B6158983BCB0C593DAE4 /* ContentCards.app */, + 3E8380DBBF4867829281E73C /* ContentCardUI-Customization.app */, + 89A6F6ADFDCAC1464C091E61 /* ContentCardUI.app */, 05A5CB32692A4493359A70F2 /* InAppMessages-Custom-UI.app */, FE50398A21EB6A33EE9874A2 /* InAppMessages-Custom-UI.app */, - 2D50867A0DB9C8686F63A371 /* InAppMessages.app */, + 0F4B1C1A4381988C1833854B /* InAppMessageUI-Customization.app */, + 582681504B814C38AB76A767 /* InAppMessageUI.app */, 6832319B66FB76CAA84519FA /* Location.app */, 34DB46A770028DFE645A3AE4 /* Location.app */, A37E3B0FA418AB843D26F7F9 /* PushNotifications.app */, @@ -284,15 +356,16 @@ name = Products; sourceTree = ""; }; - 9AA2DA5B878C1242DBDD0410 /* InAppMessages */ = { + CFAE53A0FC9D7251D24F9F70 /* ContentCardUI-Customization */ = { isa = PBXGroup; children = ( - 59732946C90C96FDFD43567E /* AppDelegate.swift */, - A0C55708836E9855934DCA7B /* Readme.swift */, - AF74213486BAEC4E0C94F02D /* SDWebImageGIFViewProvider.swift */, + 10608DDB131D70F8273A64B7 /* AppDelegate.swift */, + D6742114C06FC93D4AA30B5B /* Readme.swift */, + F224F57B3C4BE13C161148B0 /* SDWebImageGIFViewProvider.swift */, + 73C696BB29CA2BCF1EF3D113 /* Subclasses */, ); - name = InAppMessages; - path = Sources/InAppMessages; + name = "ContentCardUI-Customization"; + path = "Sources/ContentCardUI-Customization"; sourceTree = ""; }; CFAFCFEE58CC8AA1F0BDA699 /* iOS */ = { @@ -357,15 +430,15 @@ path = Sources/Common; sourceTree = ""; }; - EE1BF73C17001D2912250407 /* ContentCards */ = { + F500AE7A04E46943FAA225C4 /* ContentCardUI */ = { isa = PBXGroup; children = ( - 03168F8FCB98FF73CC62A64A /* AppDelegate.swift */, - ED6428DF0330FE85A4FF7135 /* Readme.swift */, - AC13846BDD825F17C9C23B9B /* SDWebImageGIFViewProvider.swift */, + 5C30CE34888116E754351344 /* AppDelegate.swift */, + AFF5B7638E61D0A89CA64347 /* Readme.swift */, + A451FB52C676012C8625D55C /* SDWebImageGIFViewProvider.swift */, ); - name = ContentCards; - path = Sources/ContentCards; + name = ContentCardUI; + path = Sources/ContentCardUI; sourceTree = ""; }; /* End PBXGroup section */ @@ -403,36 +476,36 @@ productReference = C78E0B5A5D52F990511A4091 /* ContentCards-Custom-UI.app */; productType = "com.apple.product-type.application"; }; - 1A7E9979FC152DE4F7D5DC2A /* InAppMessages */ = { + 284840096E199840E3A733BC /* Location-tvOS */ = { isa = PBXNativeTarget; - buildConfigurationList = C8DA1DB107E7EE64BBBAEBE7 /* Build configuration list for PBXNativeTarget "InAppMessages" */; + buildConfigurationList = B76990766EAEC18717669D6F /* Build configuration list for PBXNativeTarget "Location-tvOS" */; buildPhases = ( - E446E3B55477F3BA5FB625C4 /* Sources */, - 324A65B0C1348D482EBD2C51 /* Resources */, + 5FEBF68A041A50636A7C63D7 /* Sources */, + 78CBE3D7946A65CD24DD6D8A /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = InAppMessages; - productName = InAppMessages; - productReference = 2D50867A0DB9C8686F63A371 /* InAppMessages.app */; + name = "Location-tvOS"; + productName = "Location-tvOS"; + productReference = 34DB46A770028DFE645A3AE4 /* Location.app */; productType = "com.apple.product-type.application"; }; - 284840096E199840E3A733BC /* Location-tvOS */ = { + 3F4B82DD321A7AB86C3623BD /* InAppMessageUI */ = { isa = PBXNativeTarget; - buildConfigurationList = B76990766EAEC18717669D6F /* Build configuration list for PBXNativeTarget "Location-tvOS" */; + buildConfigurationList = EAE52C7CF1CCCF03356FA080 /* Build configuration list for PBXNativeTarget "InAppMessageUI" */; buildPhases = ( - 5FEBF68A041A50636A7C63D7 /* Sources */, - 78CBE3D7946A65CD24DD6D8A /* Resources */, + 9C66F84C288AAB56A9A14D90 /* Sources */, + D9712F16C62827A6001EA816 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = "Location-tvOS"; - productName = "Location-tvOS"; - productReference = 34DB46A770028DFE645A3AE4 /* Location.app */; + name = InAppMessageUI; + productName = InAppMessageUI; + productReference = 582681504B814C38AB76A767 /* InAppMessageUI.app */; productType = "com.apple.product-type.application"; }; 4A34648A0491D5D28D9A7E8A /* InAppMessages-Custom-UI-tvOS */ = { @@ -470,20 +543,20 @@ productReference = A37E3B0FA418AB843D26F7F9 /* PushNotifications.app */; productType = "com.apple.product-type.application"; }; - 9097C3EC847DC7AE4B1CA969 /* ContentCards */ = { + 980998015E29178149D9B86C /* ContentCardUI */ = { isa = PBXNativeTarget; - buildConfigurationList = 9D35AC44AE90C1C27CBF8577 /* Build configuration list for PBXNativeTarget "ContentCards" */; + buildConfigurationList = DB14AAC10B81B8A88D4B480B /* Build configuration list for PBXNativeTarget "ContentCardUI" */; buildPhases = ( - C7726F7D79339C85CB8B1FDB /* Sources */, - 0607C6FAE74CA8A0F8E5224B /* Resources */, + 97262D5A6FFA7717EBAA9E81 /* Sources */, + 357CC70D993553B658787EA8 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = ContentCards; - productName = ContentCards; - productReference = C9C1B6158983BCB0C593DAE4 /* ContentCards.app */; + name = ContentCardUI; + productName = ContentCardUI; + productReference = 89A6F6ADFDCAC1464C091E61 /* ContentCardUI.app */; productType = "com.apple.product-type.application"; }; A0EF8DC5C1ED6288C32D3D23 /* Analytics-iOS */ = { @@ -502,6 +575,22 @@ productReference = 9E2B80BBE3951963FBA6BBD3 /* Analytics.app */; productType = "com.apple.product-type.application"; }; + BAF47191A63D1D4B728E9469 /* InAppMessageUI-Customization */ = { + isa = PBXNativeTarget; + buildConfigurationList = DDE628DA72FB7DB13146D374 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */; + buildPhases = ( + 6F1D675B3BAAEA103951B956 /* Sources */, + 9A1D41EDC9F035503FB548B3 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "InAppMessageUI-Customization"; + productName = "InAppMessageUI-Customization"; + productReference = 0F4B1C1A4381988C1833854B /* InAppMessageUI-Customization.app */; + productType = "com.apple.product-type.application"; + }; BC720D0A2A3B555DF4D1268A /* Location-iOS */ = { isa = PBXNativeTarget; buildConfigurationList = 4CBDCD32BF67ACE4E2977EFA /* Build configuration list for PBXNativeTarget "Location-iOS" */; @@ -566,6 +655,22 @@ productReference = 8854CADF86F02FA64B2CC3F1 /* ContentCards-Custom-UI.app */; productType = "com.apple.product-type.application"; }; + F7DC3F66C732C81F13AFDB8C /* ContentCardUI-Customization */ = { + isa = PBXNativeTarget; + buildConfigurationList = C0DB4C99D5F365A19C5D1EA5 /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */; + buildPhases = ( + 01B3855D3F0A3B7F49EA5CB0 /* Sources */, + FF28CBD31AFA5366C7CB701F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "ContentCardUI-Customization"; + productName = "ContentCardUI-Customization"; + productReference = 3E8380DBBF4867829281E73C /* ContentCardUI-Customization.app */; + productType = "com.apple.product-type.application"; + }; FDA0A7B4C40914EAF405D9FC /* Analytics-tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = 33A0A8897465C6BD7C17C2E6 /* Build configuration list for PBXNativeTarget "Analytics-tvOS" */; @@ -606,10 +711,12 @@ targets = ( A0EF8DC5C1ED6288C32D3D23 /* Analytics-iOS */, FDA0A7B4C40914EAF405D9FC /* Analytics-tvOS */, - 9097C3EC847DC7AE4B1CA969 /* ContentCards */, + 980998015E29178149D9B86C /* ContentCardUI */, + F7DC3F66C732C81F13AFDB8C /* ContentCardUI-Customization */, E4E9F3507C9F70F681E5417F /* ContentCards-Custom-UI-iOS */, 177B908F6B162DDA447880C8 /* ContentCards-Custom-UI-tvOS */, - 1A7E9979FC152DE4F7D5DC2A /* InAppMessages */, + 3F4B82DD321A7AB86C3623BD /* InAppMessageUI */, + BAF47191A63D1D4B728E9469 /* InAppMessageUI-Customization */, 0FD7FC35072A5B75852D15F7 /* InAppMessages-Custom-UI-iOS */, 4A34648A0491D5D28D9A7E8A /* InAppMessages-Custom-UI-tvOS */, BC720D0A2A3B555DF4D1268A /* Location-iOS */, @@ -622,15 +729,6 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0607C6FAE74CA8A0F8E5224B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - F49C339077170329AC8926A3 /* Assets.xcassets in Resources */, - 30D7A569B1A652D533C6DFF4 /* LaunchScreen.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 24EBDE35CCCBEFEFF53E707D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -640,12 +738,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 324A65B0C1348D482EBD2C51 /* Resources */ = { + 357CC70D993553B658787EA8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - E4206A2DEA0A202587F0F715 /* Assets.xcassets in Resources */, - 2A65F13CBADEAEA072B1962A /* LaunchScreen.storyboard in Resources */, + ADC57BB91E99F03639362DBE /* Assets.xcassets in Resources */, + D11E987E346B85F0966242D5 /* LaunchScreen.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -703,6 +801,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9A1D41EDC9F035503FB548B3 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 65D110C8D2CCFE582C33FEFE /* Assets.xcassets in Resources */, + CB5A598CA883F225164544FB /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B62AC56D63A64203ECF45AAE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -721,9 +828,40 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D9712F16C62827A6001EA816 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E2874959B3B047F5B4DF82B6 /* Assets.xcassets in Resources */, + 9C4BA0B17CDD5749B1E02314 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FF28CBD31AFA5366C7CB701F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + C0ABFE39A262A4EFAA274C5A /* Assets.xcassets in Resources */, + 614AF2E22ADA853DF9227F6F /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 01B3855D3F0A3B7F49EA5CB0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EA836E31376F97EB1EA08854 /* AppDelegate.swift in Sources */, + 135B5B670D81F169A12722DF /* Credentials.swift in Sources */, + AE9F2211F733CD0E2D2AFC0B /* CustomClassicImageCell.swift in Sources */, + 82635DB213CF8249B31A612D /* Readme.swift in Sources */, + 23026AD66FF84F25CDE81819 /* ReadmeViewController.swift in Sources */, + 3E794CA31FE8246A6EE566B4 /* SDWebImageGIFViewProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 070EDE6E9735E579169F2D68 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -786,6 +924,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6F1D675B3BAAEA103951B956 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 43E8FC4FE0FCC54974CED64F /* AppDelegate.swift in Sources */, + D4858A10B4156FAB0AD564A8 /* ConfirmButtonSlideupView.swift in Sources */, + 667F36DD2198D4DA01794DEE /* Credentials.swift in Sources */, + 247143FD4540ED81C56940F1 /* FullWidthSlideupView.swift in Sources */, + 08123F8EDCFA937A58EDAB30 /* Readme.swift in Sources */, + 11DD43D9D45939B67DC741A1 /* ReadmeViewController.swift in Sources */, + 55BE220F9A64058BE8CE2A00 /* SDWebImageGIFViewProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 923462222067359F78BABE34 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -800,6 +952,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 97262D5A6FFA7717EBAA9E81 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8EA064B314AC1FFF778E11BC /* AppDelegate.swift in Sources */, + 86BCC651E1B01D82F6DDA664 /* Credentials.swift in Sources */, + AAE8B9B2CD0EFD8BC1386C00 /* Readme.swift in Sources */, + F57B565FDC038BD0215DD232 /* ReadmeViewController.swift in Sources */, + B3002DB2A8D026865BE7251B /* SDWebImageGIFViewProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9AD321D868E1638BA51BFDA7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -808,23 +972,23 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C7487814AD5323F755B1E524 /* Sources */ = { + 9C66F84C288AAB56A9A14D90 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0DE3276319B3F7EDE9E5761D /* NotificationViewController.swift in Sources */, + 7B812A1EEE21F16A51F14991 /* AppDelegate.swift in Sources */, + E497B8E5C5510F2B03179702 /* Credentials.swift in Sources */, + E55B655798FDC3A053213A55 /* Readme.swift in Sources */, + 478599D4418CF81DD5D95C47 /* ReadmeViewController.swift in Sources */, + AB3F67EEE9255DAA9A2BB799 /* SDWebImageGIFViewProvider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - C7726F7D79339C85CB8B1FDB /* Sources */ = { + C7487814AD5323F755B1E524 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 7489ACB9F90DED02AA3B64EE /* AppDelegate.swift in Sources */, - 243D978233307D328A4A1EE4 /* Credentials.swift in Sources */, - C38B9EA3B93DEF499E7C6FDE /* Readme.swift in Sources */, - F7BCA95A9B52DF8721CEC8EF /* ReadmeViewController.swift in Sources */, - 5B99366856EF616F55DB7F14 /* SDWebImageGIFViewProvider.swift in Sources */, + 0DE3276319B3F7EDE9E5761D /* NotificationViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -850,18 +1014,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E446E3B55477F3BA5FB625C4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5250467C99642CB433B5BE53 /* AppDelegate.swift in Sources */, - 3212C3821215C481B3F4B6C4 /* Credentials.swift in Sources */, - FCE80FC6A44E1A3360CE0ABD /* Readme.swift in Sources */, - E5D45B49FBA2F4F11D9DBBAD /* ReadmeViewController.swift in Sources */, - 5D1F19E9A92921557D3ABD06 /* SDWebImageGIFViewProvider.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F57A2A4DF2E99DAA2F0E38B4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -959,23 +1111,6 @@ }; name = Release; }; - 0FF3E9103BDC67C9723BD0CD /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 1CE2539A10E8624E8EDD3601 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1027,23 +1162,6 @@ }; name = Debug; }; - 4BCF9BD39CEB19E634B6FD81 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 4EBD32EE3B16C9EBF7493F73 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1061,40 +1179,6 @@ }; name = Debug; }; - 4FCE20B3E84CE39D624EFA02 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - 508970482D723EDFFD096AB1 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; 61077A56E64ADBA96CA8CE0C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1163,6 +1247,40 @@ }; name = Debug; }; + 7FB9A68D2BBA2491D45E62B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8998A6D8CF788CAD06AA5BE8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; 947EC0697CF1F01DDC513FD6 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1226,6 +1344,23 @@ }; name = Debug; }; + A3083010FB3D4703ED5F1EDB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; A653F811811645548266EC3A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1243,6 +1378,23 @@ }; name = Release; }; + AD10B335B59906CFA974D2B9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; AEB7354D56CC1297356D6010 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1292,6 +1444,40 @@ }; name = Debug; }; + CB3623C61BBC3C376E5B72A7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + CEB9C70E635252D9B31CC760 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; CFC0E247B97C5CEDBAF0B857 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1376,6 +1562,40 @@ }; name = Debug; }; + DE8D4E38BE17112E316C9452 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + E65B5BA1B04DACDE3D423387 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; E93F9B7A3E25FB962107ED6A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1551,15 +1771,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - 9D35AC44AE90C1C27CBF8577 /* Build configuration list for PBXNativeTarget "ContentCards" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0FF3E9103BDC67C9723BD0CD /* Debug */, - 508970482D723EDFFD096AB1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; B76990766EAEC18717669D6F /* Build configuration list for PBXNativeTarget "Location-tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1569,11 +1780,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - C8DA1DB107E7EE64BBBAEBE7 /* Build configuration list for PBXNativeTarget "InAppMessages" */ = { + C0DB4C99D5F365A19C5D1EA5 /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4BCF9BD39CEB19E634B6FD81 /* Debug */, - 4FCE20B3E84CE39D624EFA02 /* Release */, + CB3623C61BBC3C376E5B72A7 /* Debug */, + 8998A6D8CF788CAD06AA5BE8 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; @@ -1587,6 +1798,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + DB14AAC10B81B8A88D4B480B /* Build configuration list for PBXNativeTarget "ContentCardUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7FB9A68D2BBA2491D45E62B8 /* Debug */, + CEB9C70E635252D9B31CC760 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DDE628DA72FB7DB13146D374 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A3083010FB3D4703ED5F1EDB /* Debug */, + E65B5BA1B04DACDE3D423387 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; E26727234EAA2C9FFB557AF2 /* Build configuration list for PBXNativeTarget "InAppMessages-Custom-UI-tvOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1596,6 +1825,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + EAE52C7CF1CCCF03356FA080 /* Build configuration list for PBXNativeTarget "InAppMessageUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + AD10B335B59906CFA974D2B9 /* Debug */, + DE8D4E38BE17112E316C9452 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; /* End XCConfigurationList section */ }; rootObject = C9F9231105531CE428ADD921 /* Project object */; diff --git a/Examples/Swift/Examples-SwiftPM.xcodeproj/project.pbxproj b/Examples/Swift/Examples-SwiftPM.xcodeproj/project.pbxproj index 33a5d8e831..a991eeee71 100644 --- a/Examples/Swift/Examples-SwiftPM.xcodeproj/project.pbxproj +++ b/Examples/Swift/Examples-SwiftPM.xcodeproj/project.pbxproj @@ -8,82 +8,101 @@ /* Begin PBXBuildFile section */ 01929944BBEE2475AB80DBA0 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B5CF8D1D25040DF4009F8D /* Readme.swift */; }; - 02C558571508A77542FBC26C /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 0D08CDAB0AE57DFC38F9B590 /* SDWebImage */; }; + 028368188C699FD009DA8CA2 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; 042C248FA61F94135A13727C /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCCC91596E91D51EABEC2401 /* Readme.swift */; }; + 0535651FB5EEB326141EB64E /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; + 0660D42F760AE4E46AD69562 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = B886221109B13C767819BA7C /* BrazeKit */; }; 07FA2D012CDA57F1E3ACE9E9 /* CardsInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F8AD06FAD6F81E92F64DD72 /* CardsInfoViewController.swift */; }; 0A0FD552D1A9B94548B4484E /* AuthenticationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 591F3570467FB230FB58226B /* AuthenticationManager.swift */; }; + 0D0606E3C2BA7D8DA3A697F6 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; 0D22E44BFB191AE58CAAE46D /* CheckoutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 631DCED7E638A6BD4C9D95C2 /* CheckoutViewController.swift */; }; 0DFB85D9A4DA8CF140D10362 /* InAppMessageInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9558DB2C4D4AC89D4AF89D2A /* InAppMessageInfoViewController.swift */; }; 0E09184BCE19778ABBA6E205 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7B5CF8D1D25040DF4009F8D /* Readme.swift */; }; 0EDB4A275B7512AE9BE64F76 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1547060F01C454ED90CBC172 /* AppDelegate.swift */; }; 112EC8A30E320D6675676E76 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AE5A233316273D84DDDECFB /* AppDelegate.swift */; }; 14174CD7F71ACF6F4F3E3808 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 15539194CFC81E19A23B2943 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02758EAC3488E8870F6DA96E /* Readme.swift */; }; 165598C7C0F9D04B4D385947 /* InAppMessageInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9558DB2C4D4AC89D4AF89D2A /* InAppMessageInfoViewController.swift */; }; - 176536B39FED72ECC2028BFC /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 0BF370808D2F5C21870331A0 /* SDWebImage */; }; + 19D922BB530AB0C688C2EA4E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; 1A810C7DA64E86D3A828A920 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + 1EEDCADAEE7204185CC6967E /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FE3CE0839B9CDC3DBD854F1 /* SDWebImageGIFViewProvider.swift */; }; 23FF6692F5A6D268DC355315 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; - 241F4F1F41D820C55156841D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; 24400D6B97710B109BDD8A60 /* BrazePushStory in Frameworks */ = {isa = PBXBuildFile; productRef = 5133F5A2D91882A4AE649D4D /* BrazePushStory */; }; + 2553ED24C2112991F382CF3A /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5FDBAD51FF3A992AEB226099 /* BrazeUI */; }; + 27C71A1067571EC42308D9F4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F8A9DE3DE33B9316F5C9C9 /* AppDelegate.swift */; }; + 27ECC4ED9EABA2405DF780CC /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 64EAC9A16C6BB0EA49C9157A /* SDWebImage */; }; 2C47D73C2D8F2F68DF83612B /* BrazeNotificationService in Frameworks */ = {isa = PBXBuildFile; productRef = 47F3E12B1114B00B4CB70C60 /* BrazeNotificationService */; }; 2D4560AC04CE0BEC2BB8749B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 2E1DF7C49B03F38BCE5285E7 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 0891F7D29EA51A994793513D /* BrazeUI */; }; 2E68CB6DC13AC6CB1441D20B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; 312590E9832D85052B8D9759 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = F4168F1485105BAAD54B813C /* BrazeKit */; }; - 33C0F7AEF567B240303C75A8 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; 365EF0CD30923A1254130722 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = F68192C4A0D4928F78762878 /* BrazeKit */; }; 37A1A705A0374C0A32710306 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCCC91596E91D51EABEC2401 /* Readme.swift */; }; 3AABFF2B1524020C3424E616 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AE5A233316273D84DDDECFB /* AppDelegate.swift */; }; 3B3CDE3FA9E39EE3140F5421 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; 3B90DD85782F3701AD557A6A /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; + 3DB4EEAF2E9C2939B89DA1F8 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; + 415A15C183F0F1C99F81F869 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA2073DD85CD3A92784EC1F4 /* Readme.swift */; }; 437AA7B38193226049B72FBE /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 74D6487EFD8114F6B61637AB /* BrazeKit */; }; 4484E207BCFD002822F2BB7D /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE00D10FF658213E5A00188D /* NotificationViewController.swift */; }; 47A51FE0A52919D798910A74 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; 49913F9104E46D0D3483E21D /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7EC3A55D550F5ADC29F4F4 /* Readme.swift */; }; 4BC9D0026B4908271DF68F19 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 4F846A08AD6511B92F7D1EA7 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3779C8A71C6D78BBBD104EE0 /* Readme.swift */; }; 4FCC18D09440113FCC444C49 /* PushNotificationsContentExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = A7B092ACAEC915379923328F /* PushNotificationsContentExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 5105E418A598146D0C30E448 /* CardsInfoViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F8AD06FAD6F81E92F64DD72 /* CardsInfoViewController.swift */; }; 515C858D4C19E68BB365EEAC /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4E1B8F1E3F204559A459600 /* AppDelegate.swift */; }; 51E6A2F0C6E2C992A51F5F20 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; - 53101EC7B6D20D35089EFCD0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D680CBC8E96C58FD5F8BA5D /* AppDelegate.swift */; }; 59DE5747C69E47CB456FDA44 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; 5B4DC6E06160BF46AFD88FF9 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; - 5C0D56998D46869E0617E5A4 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 9AF0AF048F752A5C62317470 /* BrazeUI */; }; 5C2A62253EE31D828988CE2A /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; 6049D985F8A47E318A27FEF8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADD82EF0D191847F89792884 /* AppDelegate.swift */; }; + 61A171370197788908EC6E6C /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; 66308A8D024226F21FA21486 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; - 677C7AE5FD7BEF2DD1B0016B /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; 67A1DFEC02BA89D7FBC3593C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADD82EF0D191847F89792884 /* AppDelegate.swift */; }; + 6B20D783226EC21AD5B2FCE9 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4A7BDBC78AFBA13FE890836 /* SDWebImageGIFViewProvider.swift */; }; + 6CB3AC485F3CFBA9395977A1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A02B81A3965D35DA6381280B /* AppDelegate.swift */; }; 6CE3551AF54503A3FA2E7853 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 046845029FE9235B46B84104 /* BrazeKit */; }; + 6D37F619E60F577AF2FB208D /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 9720FE32CFB77D7E0319A501 /* BrazeKit */; }; 6D91E6B536F0C7585E809607 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 17D80570112755DC2EEEF450 /* BrazeKit */; }; 6DA15916A0F0F7ECF3968E42 /* PushNotificationsServiceExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = B5666DA142189EEEDFAFB41F /* PushNotificationsServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 6FAFF3BA371E41638E044127 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 89598718421C181B57346379 /* BrazeKit */; }; 7433145D038D07087F62D331 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7451EF2F037063F70104E13A /* Readme.swift */; }; 757EEF0696623021F4B2459D /* CustomInAppMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F28A24B0752E1A7F5C2E760 /* CustomInAppMessagePresenter.swift */; }; 75C9596F085AB28696D8F5C8 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; 76EFA0B832F4F30856EBEC94 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F718F626331AC72DB865B115 /* AppDelegate.swift */; }; - 80D345EAA814805B7B762A4E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + 81A00E00292323D74AA0775A /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 037CA50654332201E44CAA8E /* SDWebImageGIFViewProvider.swift */; }; + 850853B18B7DB34ADBCB56D2 /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 6406D8C02D350722AE48DE31 /* SDWebImage */; }; + 8610C40C23AD8DEBC4FE8307 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2DBE68CBD1A748542579E66 /* AppDelegate.swift */; }; 8747ED32CC583ADCE09266AE /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; 87824C15AAA2003EC964C107 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CE7C19F258AF40B394B358 /* UserNotifications.framework */; }; 89CC79B20BACB82640928264 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; 8B6788E6192407AB3D023039 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; - 8EC99177B84C2FD480B24D33 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; - 90DE4CA52AAA711D9995399F /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; + 8B971E3E345CD1B722FDBE40 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + 93F56B30055D001DF05356A5 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 624AA955B2621EE8B5A153AE /* BrazeUI */; }; + 949F18A735AE80D5213E51A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + 94C35C34017333F3767E58FE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; 95C5654B0EA0CA6DF2478527 /* CheckoutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 631DCED7E638A6BD4C9D95C2 /* CheckoutViewController.swift */; }; - 9CE6B2D9DC0F3B277094AEB9 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 26C11D75220DCD8456AEAA39 /* BrazeUI */; }; 9EC27A7D337A4DF0A2F94484 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; A329A2B6B22F008E7E512E6D /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; A47F4EBAA7A0D8D9694CDBED /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 9F5A50D1AF8D80AC6C465155 /* BrazeKit */; }; + A8393BDD4B926637374206B7 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; AA95C8A6110DE76895C734A7 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; - ABBB4C198868F5EDC7A3EB0D /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AC100D3BC83C040C950594D /* SDWebImageGIFViewProvider.swift */; }; + AAEE2F6C6C2C63DE425798FB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57D73DD16728C7AD0A7EA662 /* AppDelegate.swift */; }; AD0A7FED23E587D14420EC1A /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; - AD0FB326BFA4C3E7A64469FA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + AE50B86A636D3252537D8B88 /* ConfirmButtonSlideupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D80C5976EE2C1D5CE55B90B5 /* ConfirmButtonSlideupView.swift */; }; AE9B5583963142DD6C7E2B7F /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = D63F498CAD1B487B718A6064 /* NotificationService.swift */; }; AF2CC1B40270C6B61BCB36F3 /* UserNotificationsUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B0D325AE1E7E717D151B9B6B /* UserNotificationsUI.framework */; }; AF634FD530187712623CEB17 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; + B3BDA4F943A5C0AD2DEF5A7C /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 2DFFD8844A474098D6408946 /* SDWebImage */; }; B41030F93EA6ECCFE710CA40 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A7EC3A55D550F5ADC29F4F4 /* Readme.swift */; }; + B421087E3AD5D5FB373763B9 /* FullWidthSlideupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F9F8EF80EC7B30AB429008 /* FullWidthSlideupView.swift */; }; + B494AD28CF0DEF6BCFA90099 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; B5D390ADFCE260407E4019E0 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; B6277160E220BA8E7C0A37F9 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; + BC33E3A24F7CDF45405368E6 /* CustomClassicImageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 001B56835E88972EAE71A606 /* CustomClassicImageCell.swift */; }; BD418D0ABB09B10266CCEB9A /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 7793FD8C8DE601EC38DD8DD7 /* BrazeKit */; }; BDF6418D63D4465347A47E0D /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; + C18EE9EE632F602ED54A3E25 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCAE9DDCCBE7557171C3574D /* Credentials.swift */; }; C412D2A3E605123FE5CBFAB2 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; C6AB3B8CB881E915E965E165 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7097EB3ABED4921B719078C /* Readme.swift */; }; C81EA3048E9D8CED3B3EDD97 /* BrazeLocation in Frameworks */ = {isa = PBXBuildFile; productRef = 2C4994F9E91F986F0629979F /* BrazeLocation */; }; @@ -97,22 +116,26 @@ D0115711E891B3FCD0B0840D /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7097EB3ABED4921B719078C /* Readme.swift */; }; D0FB8791620F800C7485E52B /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F65978FE19A988D7A5454A3 /* LaunchScreen.storyboard */; }; D7C6893C869540CD766F7ED7 /* CustomInAppMessagePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F28A24B0752E1A7F5C2E760 /* CustomInAppMessagePresenter.swift */; }; + DB13431FC72E0BCD34A86902 /* SDWebImage in Frameworks */ = {isa = PBXBuildFile; productRef = 77C32D8D5EBCD917A23EE382 /* SDWebImage */; }; DBC0B617306F2A138194200C /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 80661DB9711EFD43546E249C /* BrazeKit */; }; - DBFF6E62C94BFDCEDEC7FAED /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; DCAECB177D1D146F78B48A5F /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6A36D1600434E690C1F9910 /* Extensions.swift */; }; - DDFC2FEE20F0CF175328CED0 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1FF4447693460C3B6034C1C /* Readme.swift */; }; + DD969931CFCDB9CABFA30F85 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; + DE620D05A5DCCA569EE55A19 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + DED6497BFC44ADEAA7CF1A65 /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99BC5C30464318DD5BAD679C /* Readme.swift */; }; DF2739C90781CA0A8A2C0706 /* AuthenticationManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 591F3570467FB230FB58226B /* AuthenticationManager.swift */; }; - DF74A0BB77F6BE2B9B05FF0A /* Readme.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38C711914A00B6ED0285D7E /* Readme.swift */; }; + E2498F93471B3ED7DCF4F798 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 1587AFA62763A9B75CA01C6C /* BrazeKit */; }; + E2E95C34F86FA357D6BCAE54 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; + E5131ADF55A3FB4A71A0EBC7 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 727E0E49D4446141F00905B4 /* SDWebImageGIFViewProvider.swift */; }; E743EAE4518F62189A4D3C8A /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = F173FCAB52D0340802119A34 /* BrazeKit */; }; - E7F0FB91F4C78861E58DAA8C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B0A55E8282ADE8756715B6A /* AppDelegate.swift */; }; + EAC53BC784BF380F8205F01F /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = E045FE65756A230024955AD5 /* BrazeKit */; }; EC57F25FE46BBD05EA33C939 /* UserNotifications.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08CE7C19F258AF40B394B358 /* UserNotifications.framework */; }; + ECF4EB3AB84967F7DBDB8452 /* BrazeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 96F76CB78E3FFBBBCDE87EBD /* BrazeUI */; }; EEE22F0054E28C2DC260EAFF /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6A36D1600434E690C1F9910 /* Extensions.swift */; }; - EF5EF251D34064B14F500469 /* BrazeKit in Frameworks */ = {isa = PBXBuildFile; productRef = 09701E67CAE64FCE46458059 /* BrazeKit */; }; F0283060DB9DB894CC6CC869 /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; F658BE141364C2F62F7866D1 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 415A55D2760CB84A0CC3A13B /* LaunchScreen.storyboard */; }; F95AE350417AB5ED6CEDECCB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; F965F4FE849D1128213A12FC /* ReadmeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */; }; - FAAC7851B9F24C8DBBF9F138 /* SDWebImageGIFViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99A33772C116D28F53CFB986 /* SDWebImageGIFViewProvider.swift */; }; + F97087EBFD4931AA7C9F3463 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -148,46 +171,57 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 001B56835E88972EAE71A606 /* CustomClassicImageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomClassicImageCell.swift; sourceTree = ""; }; + 02758EAC3488E8870F6DA96E /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + 037CA50654332201E44CAA8E /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; 08CE7C19F258AF40B394B358 /* UserNotifications.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotifications.framework; path = System/Library/Frameworks/UserNotifications.framework; sourceTree = SDKROOT; }; 0B3605C45690205D4A58D1C3 /* Analytics.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Analytics.app; sourceTree = BUILT_PRODUCTS_DIR; }; 0FCD17EEF41713F18F4CA702 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 142C43EBD6AA34841D26163C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 1547060F01C454ED90CBC172 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 16F703E30F0CDB139F4DBC8E /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 1D680CBC8E96C58FD5F8BA5D /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 1A008F2386666F587E975D0D /* InAppMessageUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessageUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1F8AD06FAD6F81E92F64DD72 /* CardsInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardsInfoViewController.swift; sourceTree = ""; }; 220432BEC0EA7628608EA5BA /* braze-swift-sdk */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "braze-swift-sdk"; path = ../..; sourceTree = SOURCE_ROOT; }; 34BD000896FB64DC78BBF177 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 4AC100D3BC83C040C950594D /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; - 4B0A55E8282ADE8756715B6A /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 3779C8A71C6D78BBBD104EE0 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + 43898C005AA33A7630288625 /* ContentCardUI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCardUI.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 4FE3CE0839B9CDC3DBD854F1 /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; + 57D73DD16728C7AD0A7EA662 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 591F3570467FB230FB58226B /* AuthenticationManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationManager.swift; sourceTree = ""; }; 5DFFFE740A88297EE59DB98F /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; 631DCED7E638A6BD4C9D95C2 /* CheckoutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckoutViewController.swift; sourceTree = ""; }; - 65785E585247CC7A8661ED6B /* InAppMessages.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = InAppMessages.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6A76DADC444C28D2653F471B /* InAppMessageUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessageUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 6A7EC3A55D550F5ADC29F4F4 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + 727E0E49D4446141F00905B4 /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; 7451EF2F037063F70104E13A /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; 870B27433E30991ABA197CD2 /* ContentCards-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCards-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 8D441B5B5424C3E129B2DA54 /* PushNotifications.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = PushNotifications.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8F28A24B0752E1A7F5C2E760 /* CustomInAppMessagePresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomInAppMessagePresenter.swift; sourceTree = ""; }; 9558DB2C4D4AC89D4AF89D2A /* InAppMessageInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InAppMessageInfoViewController.swift; sourceTree = ""; }; - 99A33772C116D28F53CFB986 /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; + 99BC5C30464318DD5BAD679C /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; 9AE5A233316273D84DDDECFB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 9EDFB6B6D9E65C9BFD47EA17 /* Analytics.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Analytics.app; sourceTree = BUILT_PRODUCTS_DIR; }; + A02B81A3965D35DA6381280B /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; A7B092ACAEC915379923328F /* PushNotificationsContentExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsContentExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; A7B5CF8D1D25040DF4009F8D /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + AA2073DD85CD3A92784EC1F4 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; ADD82EF0D191847F89792884 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; B0D325AE1E7E717D151B9B6B /* UserNotificationsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotificationsUI.framework; path = System/Library/Frameworks/UserNotificationsUI.framework; sourceTree = SDKROOT; }; - B1FF4447693460C3B6034C1C /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; + B1F8A9DE3DE33B9316F5C9C9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + B4A7BDBC78AFBA13FE890836 /* SDWebImageGIFViewProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SDWebImageGIFViewProvider.swift; sourceTree = ""; }; B5666DA142189EEEDFAFB41F /* PushNotificationsServiceExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = PushNotificationsServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; B6A36D1600434E690C1F9910 /* Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = ""; }; - B7F06535E19BAEA9F5B73F86 /* ContentCards.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = ContentCards.app; sourceTree = BUILT_PRODUCTS_DIR; }; - C38C711914A00B6ED0285D7E /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; C7097EB3ABED4921B719078C /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; CCAE9DDCCBE7557171C3574D /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = ""; }; CCCC91596E91D51EABEC2401 /* Readme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Readme.swift; sourceTree = ""; }; CE00D10FF658213E5A00188D /* NotificationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationViewController.swift; sourceTree = ""; }; D63F498CAD1B487B718A6064 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; + D65F1DF14BBFB716FC3B8EA8 /* ContentCardUI-Customization.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "ContentCardUI-Customization.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + D80C5976EE2C1D5CE55B90B5 /* ConfirmButtonSlideupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmButtonSlideupView.swift; sourceTree = ""; }; + E2DBE68CBD1A748542579E66 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; E4E1B8F1E3F204559A459600 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + E7F9F8EF80EC7B30AB429008 /* FullWidthSlideupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullWidthSlideupView.swift; sourceTree = ""; }; ECA5D86743A8F050AB493312 /* InAppMessages-Custom-UI.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = "InAppMessages-Custom-UI.app"; sourceTree = BUILT_PRODUCTS_DIR; }; EE631F5EEEEB707468BF265A /* Location.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Location.app; sourceTree = BUILT_PRODUCTS_DIR; }; F0C3766DAA0E86C999794A8F /* ReadmeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadmeViewController.swift; sourceTree = ""; }; @@ -204,6 +238,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 0352C484CD82DC90EE02F469 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E2498F93471B3ED7DCF4F798 /* BrazeKit in Frameworks */, + 2E1DF7C49B03F38BCE5285E7 /* BrazeUI in Frameworks */, + 850853B18B7DB34ADBCB56D2 /* SDWebImage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 183E99B0677A3CBB42A80754 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -213,21 +257,31 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 324CB6E38E7D86E327812A17 /* Frameworks */ = { + 1F87FC703AE08051B48A9038 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DBC0B617306F2A138194200C /* BrazeKit in Frameworks */, + 0660D42F760AE4E46AD69562 /* BrazeKit in Frameworks */, + 93F56B30055D001DF05356A5 /* BrazeUI in Frameworks */, + 27ECC4ED9EABA2405DF780CC /* SDWebImage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 237BB517A826BB290757249B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EAC53BC784BF380F8205F01F /* BrazeKit in Frameworks */, + 2553ED24C2112991F382CF3A /* BrazeUI in Frameworks */, + B3BDA4F943A5C0AD2DEF5A7C /* SDWebImage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 3FE4CCA5EE34D160D3BA7E65 /* Frameworks */ = { + 324CB6E38E7D86E327812A17 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - EF5EF251D34064B14F500469 /* BrazeKit in Frameworks */, - 5C0D56998D46869E0617E5A4 /* BrazeUI in Frameworks */, - 176536B39FED72ECC2028BFC /* SDWebImage in Frameworks */, + DBC0B617306F2A138194200C /* BrazeKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -257,16 +311,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6E70CCCD8CEE5D68B1E92800 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6FAFF3BA371E41638E044127 /* BrazeKit in Frameworks */, - 9CE6B2D9DC0F3B277094AEB9 /* BrazeUI in Frameworks */, - 02C558571508A77542FBC26C /* SDWebImage in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 76AEEA4F011020D515A98A7F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -301,6 +345,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + C911032532647ABBD19356F1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6D37F619E60F577AF2FB208D /* BrazeKit in Frameworks */, + ECF4EB3AB84967F7DBDB8452 /* BrazeUI in Frameworks */, + DB13431FC72E0BCD34A86902 /* SDWebImage in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EFAF41E4C424F1D471C539B5 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -331,17 +385,6 @@ path = "Sources/ContentCards-Custom-UI"; sourceTree = ""; }; - 234FC0FDE1EB1D2B1EE92CDA /* ContentCards */ = { - isa = PBXGroup; - children = ( - 4B0A55E8282ADE8756715B6A /* AppDelegate.swift */, - C38C711914A00B6ED0285D7E /* Readme.swift */, - 99A33772C116D28F53CFB986 /* SDWebImageGIFViewProvider.swift */, - ); - name = ContentCards; - path = Sources/ContentCards; - sourceTree = ""; - }; 256C64FD5A9C547C95ED205A /* Location */ = { isa = PBXGroup; children = ( @@ -364,6 +407,37 @@ path = Sources/Analytics; sourceTree = ""; }; + 49BDBC9D684BDB7FEE219251 /* Subclasses */ = { + isa = PBXGroup; + children = ( + 001B56835E88972EAE71A606 /* CustomClassicImageCell.swift */, + ); + path = Subclasses; + sourceTree = ""; + }; + 4A8610F6DB5D3BD5353159BF /* InAppMessageUI-Customization */ = { + isa = PBXGroup; + children = ( + B1F8A9DE3DE33B9316F5C9C9 /* AppDelegate.swift */, + AA2073DD85CD3A92784EC1F4 /* Readme.swift */, + 727E0E49D4446141F00905B4 /* SDWebImageGIFViewProvider.swift */, + A6C2DF7E8C64DF9F8460DE9B /* Subclasses */, + ); + name = "InAppMessageUI-Customization"; + path = "Sources/InAppMessageUI-Customization"; + sourceTree = ""; + }; + 518A861147034CC7C7A6F886 /* ContentCardUI */ = { + isa = PBXGroup; + children = ( + E2DBE68CBD1A748542579E66 /* AppDelegate.swift */, + 99BC5C30464318DD5BAD679C /* Readme.swift */, + 4FE3CE0839B9CDC3DBD854F1 /* SDWebImageGIFViewProvider.swift */, + ); + name = ContentCardUI; + path = Sources/ContentCardUI; + sourceTree = ""; + }; 602D317DF9E1FCBC46B4F176 /* PushNotificationsContentExtension */ = { isa = PBXGroup; children = ( @@ -404,15 +478,13 @@ path = "Sources/InAppMessages-Custom-UI"; sourceTree = ""; }; - A3A2735A5DC208B24378D437 /* InAppMessages */ = { + A6C2DF7E8C64DF9F8460DE9B /* Subclasses */ = { isa = PBXGroup; children = ( - 1D680CBC8E96C58FD5F8BA5D /* AppDelegate.swift */, - B1FF4447693460C3B6034C1C /* Readme.swift */, - 4AC100D3BC83C040C950594D /* SDWebImageGIFViewProvider.swift */, + D80C5976EE2C1D5CE55B90B5 /* ConfirmButtonSlideupView.swift */, + E7F9F8EF80EC7B30AB429008 /* FullWidthSlideupView.swift */, ); - name = InAppMessages; - path = Sources/InAppMessages; + path = Subclasses; sourceTree = ""; }; AD1929AE02C13E7023AE1CA4 /* PushNotificationsServiceExtension */ = { @@ -437,6 +509,17 @@ path = Sources/Common; sourceTree = ""; }; + BE255BA36238D9A1B4530C95 /* InAppMessageUI */ = { + isa = PBXGroup; + children = ( + A02B81A3965D35DA6381280B /* AppDelegate.swift */, + 02758EAC3488E8870F6DA96E /* Readme.swift */, + 037CA50654332201E44CAA8E /* SDWebImageGIFViewProvider.swift */, + ); + name = InAppMessageUI; + path = Sources/InAppMessageUI; + sourceTree = ""; + }; CD535985A50FFC8EDE928813 /* Products */ = { isa = PBXGroup; children = ( @@ -444,10 +527,12 @@ 0B3605C45690205D4A58D1C3 /* Analytics.app */, 870B27433E30991ABA197CD2 /* ContentCards-Custom-UI.app */, 16F703E30F0CDB139F4DBC8E /* ContentCards-Custom-UI.app */, - B7F06535E19BAEA9F5B73F86 /* ContentCards.app */, + D65F1DF14BBFB716FC3B8EA8 /* ContentCardUI-Customization.app */, + 43898C005AA33A7630288625 /* ContentCardUI.app */, FF31C634A18224DB9ED02834 /* InAppMessages-Custom-UI.app */, ECA5D86743A8F050AB493312 /* InAppMessages-Custom-UI.app */, - 65785E585247CC7A8661ED6B /* InAppMessages.app */, + 6A76DADC444C28D2653F471B /* InAppMessageUI-Customization.app */, + 1A008F2386666F587E975D0D /* InAppMessageUI.app */, EE631F5EEEEB707468BF265A /* Location.app */, 5DFFFE740A88297EE59DB98F /* Location.app */, 8D441B5B5424C3E129B2DA54 /* PushNotifications.app */, @@ -457,16 +542,30 @@ name = Products; sourceTree = ""; }; + D03146EA39AB44D97182A5DF /* ContentCardUI-Customization */ = { + isa = PBXGroup; + children = ( + 57D73DD16728C7AD0A7EA662 /* AppDelegate.swift */, + 3779C8A71C6D78BBBD104EE0 /* Readme.swift */, + B4A7BDBC78AFBA13FE890836 /* SDWebImageGIFViewProvider.swift */, + 49BDBC9D684BDB7FEE219251 /* Subclasses */, + ); + name = "ContentCardUI-Customization"; + path = "Sources/ContentCardUI-Customization"; + sourceTree = ""; + }; D8CC2266D736859D7DD9A8FF = { isa = PBXGroup; children = ( E3AF9F206199B993ACB3E63D /* Packages */, B4F25C051708E808116165D4 /* Common */, 258F28BC46EE3F2D3E079C37 /* Analytics */, - 234FC0FDE1EB1D2B1EE92CDA /* ContentCards */, 119FF3F930BD1BF66DEB0B47 /* ContentCards-Custom-UI */, - A3A2735A5DC208B24378D437 /* InAppMessages */, + 518A861147034CC7C7A6F886 /* ContentCardUI */, + D03146EA39AB44D97182A5DF /* ContentCardUI-Customization */, 6E715B0CD6028EAEB53373C9 /* InAppMessages-Custom-UI */, + BE255BA36238D9A1B4530C95 /* InAppMessageUI */, + 4A8610F6DB5D3BD5353159BF /* InAppMessageUI-Customization */, 256C64FD5A9C547C95ED205A /* Location */, 67175574AAFF46A4632B42DA /* PushNotifications */, 602D317DF9E1FCBC46B4F176 /* PushNotificationsContentExtension */, @@ -496,6 +595,50 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 0A1211FC31CA5DD9A5E1D18E /* ContentCardUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5181AF8DDEA182DF10C54652 /* Build configuration list for PBXNativeTarget "ContentCardUI" */; + buildPhases = ( + FB5C5DB7F3CC52A66733B1D4 /* Sources */, + 6EDCC3D6A15F3C94C51FCD3D /* Resources */, + 1F87FC703AE08051B48A9038 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ContentCardUI; + packageProductDependencies = ( + B886221109B13C767819BA7C /* BrazeKit */, + 624AA955B2621EE8B5A153AE /* BrazeUI */, + 64EAC9A16C6BB0EA49C9157A /* SDWebImage */, + ); + productName = ContentCardUI; + productReference = 43898C005AA33A7630288625 /* ContentCardUI.app */; + productType = "com.apple.product-type.application"; + }; + 1BB9C370026C39B3DBE54065 /* InAppMessageUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4C19E16B15D4B729583F0D3A /* Build configuration list for PBXNativeTarget "InAppMessageUI" */; + buildPhases = ( + EEF022E2C366440FCCF362C0 /* Sources */, + 865BE7921091ADCB20B8EBC2 /* Resources */, + 237BB517A826BB290757249B /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = InAppMessageUI; + packageProductDependencies = ( + E045FE65756A230024955AD5 /* BrazeKit */, + 5FDBAD51FF3A992AEB226099 /* BrazeUI */, + 2DFFD8844A474098D6408946 /* SDWebImage */, + ); + productName = InAppMessageUI; + productReference = 1A008F2386666F587E975D0D /* InAppMessageUI.app */; + productType = "com.apple.product-type.application"; + }; 3AA5E6D1B97103DC27376A6D /* Analytics-tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = E00B5C25BE5714D67E69A3EF /* Build configuration list for PBXNativeTarget "Analytics-tvOS" */; @@ -536,28 +679,6 @@ productReference = 9EDFB6B6D9E65C9BFD47EA17 /* Analytics.app */; productType = "com.apple.product-type.application"; }; - 5BE2DFC918DF0CC5E69FE387 /* InAppMessages */ = { - isa = PBXNativeTarget; - buildConfigurationList = F76B079D8771880EE7A2C01D /* Build configuration list for PBXNativeTarget "InAppMessages" */; - buildPhases = ( - 629101DE070207860B0FF0B5 /* Sources */, - 3D8D07DBB7AF1C865DA26D8E /* Resources */, - 3FE4CCA5EE34D160D3BA7E65 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = InAppMessages; - packageProductDependencies = ( - 09701E67CAE64FCE46458059 /* BrazeKit */, - 9AF0AF048F752A5C62317470 /* BrazeUI */, - 0BF370808D2F5C21870331A0 /* SDWebImage */, - ); - productName = InAppMessages; - productReference = 65785E585247CC7A8661ED6B /* InAppMessages.app */; - productType = "com.apple.product-type.application"; - }; 6EC91F0D0FFF467CD90FB0D3 /* InAppMessages-Custom-UI-tvOS */ = { isa = PBXNativeTarget; buildConfigurationList = 5FD7F38C2E047474FF2AE862 /* Build configuration list for PBXNativeTarget "InAppMessages-Custom-UI-tvOS" */; @@ -702,26 +823,48 @@ productReference = 16F703E30F0CDB139F4DBC8E /* ContentCards-Custom-UI.app */; productType = "com.apple.product-type.application"; }; - DEE99E05C6F822DC78AEE272 /* ContentCards */ = { + BF81DFAFE8B8E3CB74955E60 /* InAppMessageUI-Customization */ = { + isa = PBXNativeTarget; + buildConfigurationList = A6A1E4C76F43C48C764BB3A6 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */; + buildPhases = ( + CEC03848E365E8C4311060A8 /* Sources */, + 61024293B1BC6D12325B3AEB /* Resources */, + 0352C484CD82DC90EE02F469 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "InAppMessageUI-Customization"; + packageProductDependencies = ( + 1587AFA62763A9B75CA01C6C /* BrazeKit */, + 0891F7D29EA51A994793513D /* BrazeUI */, + 6406D8C02D350722AE48DE31 /* SDWebImage */, + ); + productName = "InAppMessageUI-Customization"; + productReference = 6A76DADC444C28D2653F471B /* InAppMessageUI-Customization.app */; + productType = "com.apple.product-type.application"; + }; + C86DEA9CD6ED7E7E75358AD0 /* ContentCardUI-Customization */ = { isa = PBXNativeTarget; - buildConfigurationList = DAC0A7E698E628D993F35934 /* Build configuration list for PBXNativeTarget "ContentCards" */; + buildConfigurationList = 4F7E20F26C98E081CA9378CE /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */; buildPhases = ( - 6089EE24E3EFFEC175CB9A6A /* Sources */, - 1F3BD016FE47788CA94B7A4A /* Resources */, - 6E70CCCD8CEE5D68B1E92800 /* Frameworks */, + 2DE3C693088803AF76B02FC7 /* Sources */, + B8FC3F5D81CD320A55B54135 /* Resources */, + C911032532647ABBD19356F1 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); - name = ContentCards; + name = "ContentCardUI-Customization"; packageProductDependencies = ( - 89598718421C181B57346379 /* BrazeKit */, - 26C11D75220DCD8456AEAA39 /* BrazeUI */, - 0D08CDAB0AE57DFC38F9B590 /* SDWebImage */, + 9720FE32CFB77D7E0319A501 /* BrazeKit */, + 96F76CB78E3FFBBBCDE87EBD /* BrazeUI */, + 77C32D8D5EBCD917A23EE382 /* SDWebImage */, ); - productName = ContentCards; - productReference = B7F06535E19BAEA9F5B73F86 /* ContentCards.app */; + productName = "ContentCardUI-Customization"; + productReference = D65F1DF14BBFB716FC3B8EA8 /* ContentCardUI-Customization.app */; productType = "com.apple.product-type.application"; }; E59DB4201FEAE1A212979375 /* PushNotificationsContentExtension */ = { @@ -790,10 +933,12 @@ targets = ( 4B98C28FD93E5AD15DE94535 /* Analytics-iOS */, 3AA5E6D1B97103DC27376A6D /* Analytics-tvOS */, - DEE99E05C6F822DC78AEE272 /* ContentCards */, + 0A1211FC31CA5DD9A5E1D18E /* ContentCardUI */, + C86DEA9CD6ED7E7E75358AD0 /* ContentCardUI-Customization */, 960C133F6A6AD264A11DD8D9 /* ContentCards-Custom-UI-iOS */, BE02E0C55FAEA6294D129A38 /* ContentCards-Custom-UI-tvOS */, - 5BE2DFC918DF0CC5E69FE387 /* InAppMessages */, + 1BB9C370026C39B3DBE54065 /* InAppMessageUI */, + BF81DFAFE8B8E3CB74955E60 /* InAppMessageUI-Customization */, FD2447C0C6527F1CB2BEC9A6 /* InAppMessages-Custom-UI-iOS */, 6EC91F0D0FFF467CD90FB0D3 /* InAppMessages-Custom-UI-tvOS */, 9B3876462D904A1496AF569D /* Location-iOS */, @@ -842,15 +987,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1F3BD016FE47788CA94B7A4A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 241F4F1F41D820C55156841D /* Assets.xcassets in Resources */, - AD0FB326BFA4C3E7A64469FA /* LaunchScreen.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 2524C2C4AECF5FA40FF674F8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -869,12 +1005,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3D8D07DBB7AF1C865DA26D8E /* Resources */ = { + 61024293B1BC6D12325B3AEB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 8EC99177B84C2FD480B24D33 /* Assets.xcassets in Resources */, - 80D345EAA814805B7B762A4E /* LaunchScreen.storyboard in Resources */, + 949F18A735AE80D5213E51A1 /* Assets.xcassets in Resources */, + 94C35C34017333F3767E58FE /* LaunchScreen.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -896,6 +1032,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6EDCC3D6A15F3C94C51FCD3D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E2E95C34F86FA357D6BCAE54 /* Assets.xcassets in Resources */, + DD969931CFCDB9CABFA30F85 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 865BE7921091ADCB20B8EBC2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F97087EBFD4931AA7C9F3463 /* Assets.xcassets in Resources */, + 19D922BB530AB0C688C2EA4E /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B8FC3F5D81CD320A55B54135 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DE620D05A5DCCA569EE55A19 /* Assets.xcassets in Resources */, + 8B971E3E345CD1B722FDBE40 /* LaunchScreen.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; FDCF284FAF6DD56D949E0F0F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -953,38 +1116,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4D9E50A78216959662CAD320 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 515C858D4C19E68BB365EEAC /* AppDelegate.swift in Sources */, - AA95C8A6110DE76895C734A7 /* Credentials.swift in Sources */, - 7433145D038D07087F62D331 /* Readme.swift in Sources */, - 66308A8D024226F21FA21486 /* ReadmeViewController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6089EE24E3EFFEC175CB9A6A /* Sources */ = { + 2DE3C693088803AF76B02FC7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E7F0FB91F4C78861E58DAA8C /* AppDelegate.swift in Sources */, - 677C7AE5FD7BEF2DD1B0016B /* Credentials.swift in Sources */, - DF74A0BB77F6BE2B9B05FF0A /* Readme.swift in Sources */, - 33C0F7AEF567B240303C75A8 /* ReadmeViewController.swift in Sources */, - FAAC7851B9F24C8DBBF9F138 /* SDWebImageGIFViewProvider.swift in Sources */, + AAEE2F6C6C2C63DE425798FB /* AppDelegate.swift in Sources */, + C18EE9EE632F602ED54A3E25 /* Credentials.swift in Sources */, + BC33E3A24F7CDF45405368E6 /* CustomClassicImageCell.swift in Sources */, + 4F846A08AD6511B92F7D1EA7 /* Readme.swift in Sources */, + 0D0606E3C2BA7D8DA3A697F6 /* ReadmeViewController.swift in Sources */, + 6B20D783226EC21AD5B2FCE9 /* SDWebImageGIFViewProvider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 629101DE070207860B0FF0B5 /* Sources */ = { + 4D9E50A78216959662CAD320 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 53101EC7B6D20D35089EFCD0 /* AppDelegate.swift in Sources */, - 90DE4CA52AAA711D9995399F /* Credentials.swift in Sources */, - DDFC2FEE20F0CF175328CED0 /* Readme.swift in Sources */, - DBFF6E62C94BFDCEDEC7FAED /* ReadmeViewController.swift in Sources */, - ABBB4C198868F5EDC7A3EB0D /* SDWebImageGIFViewProvider.swift in Sources */, + 515C858D4C19E68BB365EEAC /* AppDelegate.swift in Sources */, + AA95C8A6110DE76895C734A7 /* Credentials.swift in Sources */, + 7433145D038D07087F62D331 /* Readme.swift in Sources */, + 66308A8D024226F21FA21486 /* ReadmeViewController.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1022,6 +1174,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + CEC03848E365E8C4311060A8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 27C71A1067571EC42308D9F4 /* AppDelegate.swift in Sources */, + AE50B86A636D3252537D8B88 /* ConfirmButtonSlideupView.swift in Sources */, + 3DB4EEAF2E9C2939B89DA1F8 /* Credentials.swift in Sources */, + B421087E3AD5D5FB373763B9 /* FullWidthSlideupView.swift in Sources */, + 415A15C183F0F1C99F81F869 /* Readme.swift in Sources */, + 028368188C699FD009DA8CA2 /* ReadmeViewController.swift in Sources */, + E5131ADF55A3FB4A71A0EBC7 /* SDWebImageGIFViewProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; DADCD7F86B712F9D6A7C1EB7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1059,6 +1225,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + EEF022E2C366440FCCF362C0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6CB3AC485F3CFBA9395977A1 /* AppDelegate.swift in Sources */, + 0535651FB5EEB326141EB64E /* Credentials.swift in Sources */, + 15539194CFC81E19A23B2943 /* Readme.swift in Sources */, + 61A171370197788908EC6E6C /* ReadmeViewController.swift in Sources */, + 81A00E00292323D74AA0775A /* SDWebImageGIFViewProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FB5C5DB7F3CC52A66733B1D4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8610C40C23AD8DEBC4FE8307 /* AppDelegate.swift in Sources */, + A8393BDD4B926637374206B7 /* Credentials.swift in Sources */, + DED6497BFC44ADEAA7CF1A65 /* Readme.swift in Sources */, + B494AD28CF0DEF6BCFA90099 /* ReadmeViewController.swift in Sources */, + 1EEDCADAEE7204185CC6967E /* SDWebImageGIFViewProvider.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -1163,23 +1353,6 @@ }; name = Debug; }; - 338E775FC51FCA458B2B4AFB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 35E8D78DF517B11959723F4D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1243,40 +1416,23 @@ }; name = Debug; }; - 4C1CEEB16B22B01668229861 /* Release */ = { + 4A132652A20295B00590B16B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/ContentCards/Info.plist; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCards; - PRODUCT_NAME = ContentCards; + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; - 56FADC974A57962ED605AB39 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 582C70DAA75E87B5B1B59BCC /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1384,6 +1540,23 @@ }; name = Release; }; + 6C12E2EAE507160B54525A5E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/InAppMessageUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessageUI; + PRODUCT_NAME = InAppMessageUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 71303405F07C56DBF2524662 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1503,6 +1676,23 @@ }; name = Release; }; + 9D9A0BDA997D036EBEA9221C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 9E13FBC998B0A5499C68208A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1518,6 +1708,57 @@ }; name = Release; }; + A6A715219F3001A92D10FDCE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/ContentCardUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.ContentCardUI-Customization"; + PRODUCT_NAME = "ContentCardUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B2A94D46C4928B86BDB1F2AF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + B436B532CD385795FBD8A905 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; B9FD2D94FC2BF1DFA9DDA644 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1584,40 +1825,40 @@ }; name = Debug; }; - DB1B706F4301DC478A0A4D4B /* Debug */ = { + C2A7EEE09BB48F72633D6BEB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = Sources/PushNotifications/PushNotifications.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/PushNotifications/Info.plist; + INFOPLIST_FILE = Sources/ContentCardUI/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.PushNotifications; - PRODUCT_NAME = PushNotifications; + PRODUCT_BUNDLE_IDENTIFIER = com.braze.ContentCardUI; + PRODUCT_NAME = ContentCardUI; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Debug; + name = Release; }; - F3C477DD3FBDBF3AB5B2FA92 /* Release */ = { + DB1B706F4301DC478A0A4D4B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_ENTITLEMENTS = Sources/PushNotifications/PushNotifications.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; - INFOPLIST_FILE = Sources/InAppMessages/Info.plist; + INFOPLIST_FILE = Sources/PushNotifications/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.braze.InAppMessages; - PRODUCT_NAME = InAppMessages; + PRODUCT_BUNDLE_IDENTIFIER = com.braze.PushNotifications; + PRODUCT_NAME = PushNotifications; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = Release; + name = Debug; }; F83B82D7A7E5DB678B6196A6 /* Debug */ = { isa = XCBuildConfiguration; @@ -1634,6 +1875,23 @@ }; name = Debug; }; + FDF551A632AD9FFB676FAA4D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + INFOPLIST_FILE = "Sources/InAppMessageUI-Customization/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.braze.InAppMessageUI-Customization"; + PRODUCT_NAME = "InAppMessageUI-Customization"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; FF5221A5B39619377D55A14C /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1690,6 +1948,33 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; + 4C19E16B15D4B729583F0D3A /* Build configuration list for PBXNativeTarget "InAppMessageUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6C12E2EAE507160B54525A5E /* Debug */, + 4A132652A20295B00590B16B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 4F7E20F26C98E081CA9378CE /* Build configuration list for PBXNativeTarget "ContentCardUI-Customization" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9D9A0BDA997D036EBEA9221C /* Debug */, + A6A715219F3001A92D10FDCE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 5181AF8DDEA182DF10C54652 /* Build configuration list for PBXNativeTarget "ContentCardUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B436B532CD385795FBD8A905 /* Debug */, + C2A7EEE09BB48F72633D6BEB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; 52115E4788F114BD9F51C612 /* Build configuration list for PBXNativeTarget "ContentCards-Custom-UI-iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1735,11 +2020,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - DAC0A7E698E628D993F35934 /* Build configuration list for PBXNativeTarget "ContentCards" */ = { + A6A1E4C76F43C48C764BB3A6 /* Build configuration list for PBXNativeTarget "InAppMessageUI-Customization" */ = { isa = XCConfigurationList; buildConfigurations = ( - 338E775FC51FCA458B2B4AFB /* Debug */, - 4C1CEEB16B22B01668229861 /* Release */, + B2A94D46C4928B86BDB1F2AF /* Debug */, + FDF551A632AD9FFB676FAA4D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; @@ -1762,15 +2047,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - F76B079D8771880EE7A2C01D /* Build configuration list for PBXNativeTarget "InAppMessages" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 56FADC974A57962ED605AB39 /* Debug */, - F3C477DD3FBDBF3AB5B2FA92 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; FB6122990820F57E6DB4A7D6 /* Build configuration list for PBXNativeTarget "PushNotificationsServiceExtension" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1798,32 +2074,27 @@ isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 09701E67CAE64FCE46458059 /* BrazeKit */ = { - isa = XCSwiftPackageProductDependency; - productName = BrazeKit; - }; - 0BF370808D2F5C21870331A0 /* SDWebImage */ = { + 0891F7D29EA51A994793513D /* BrazeUI */ = { isa = XCSwiftPackageProductDependency; - package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; - productName = SDWebImage; + productName = BrazeUI; }; - 0D08CDAB0AE57DFC38F9B590 /* SDWebImage */ = { + 1587AFA62763A9B75CA01C6C /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; - package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; - productName = SDWebImage; + productName = BrazeKit; }; 17D80570112755DC2EEEF450 /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 26C11D75220DCD8456AEAA39 /* BrazeUI */ = { - isa = XCSwiftPackageProductDependency; - productName = BrazeUI; - }; 2C4994F9E91F986F0629979F /* BrazeLocation */ = { isa = XCSwiftPackageProductDependency; productName = BrazeLocation; }; + 2DFFD8844A474098D6408946 /* SDWebImage */ = { + isa = XCSwiftPackageProductDependency; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; + }; 47F3E12B1114B00B4CB70C60 /* BrazeNotificationService */ = { isa = XCSwiftPackageProductDependency; productName = BrazeNotificationService; @@ -1832,6 +2103,24 @@ isa = XCSwiftPackageProductDependency; productName = BrazePushStory; }; + 5FDBAD51FF3A992AEB226099 /* BrazeUI */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeUI; + }; + 624AA955B2621EE8B5A153AE /* BrazeUI */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeUI; + }; + 6406D8C02D350722AE48DE31 /* SDWebImage */ = { + isa = XCSwiftPackageProductDependency; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; + }; + 64EAC9A16C6BB0EA49C9157A /* SDWebImage */ = { + isa = XCSwiftPackageProductDependency; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; + }; 74D6487EFD8114F6B61637AB /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; @@ -1840,18 +2129,23 @@ isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 80661DB9711EFD43546E249C /* BrazeKit */ = { + 77C32D8D5EBCD917A23EE382 /* SDWebImage */ = { isa = XCSwiftPackageProductDependency; - productName = BrazeKit; + package = 9928D5150C45879A982BA1C6 /* XCRemoteSwiftPackageReference "SDWebImage" */; + productName = SDWebImage; }; - 89598718421C181B57346379 /* BrazeKit */ = { + 80661DB9711EFD43546E249C /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; }; - 9AF0AF048F752A5C62317470 /* BrazeUI */ = { + 96F76CB78E3FFBBBCDE87EBD /* BrazeUI */ = { isa = XCSwiftPackageProductDependency; productName = BrazeUI; }; + 9720FE32CFB77D7E0319A501 /* BrazeKit */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeKit; + }; 9F5A50D1AF8D80AC6C465155 /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; @@ -1860,6 +2154,14 @@ isa = XCSwiftPackageProductDependency; productName = BrazeLocation; }; + B886221109B13C767819BA7C /* BrazeKit */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeKit; + }; + E045FE65756A230024955AD5 /* BrazeKit */ = { + isa = XCSwiftPackageProductDependency; + productName = BrazeKit; + }; F173FCAB52D0340802119A34 /* BrazeKit */ = { isa = XCSwiftPackageProductDependency; productName = BrazeKit; diff --git a/Examples/Swift/Podfile b/Examples/Swift/Podfile index 66dd814301..561d4cbab7 100644 --- a/Examples/Swift/Podfile +++ b/Examples/Swift/Podfile @@ -12,7 +12,16 @@ target 'Analytics-tvOS' do pod 'BrazeKit' end -target 'InAppMessages' do +target 'InAppMessageUI' do + platform :ios, '11.0' + pod 'BrazeKit' + pod 'BrazeUI' + # SDWebImage is optional. BrazeUI requires a third party library to display GIF images. + # See https://braze-inc.github.io/braze-swift-sdk/documentation/braze/gif-support-integrations + pod 'SDWebImage', :modular_headers => true +end + +target 'InAppMessageUI-Customization' do platform :ios, '11.0' pod 'BrazeKit' pod 'BrazeUI' @@ -31,7 +40,16 @@ target 'InAppMessages-Custom-UI-tvOS' do pod 'BrazeKit' end -target 'ContentCards' do +target 'ContentCardUI' do + platform :ios, '11.0' + pod 'BrazeKit' + pod 'BrazeUI' + # SDWebImage is optional. BrazeUI requires a third party library to display GIF images. + # See https://braze-inc.github.io/braze-swift-sdk/documentation/braze/gif-support-integrations + pod 'SDWebImage', :modular_headers => true +end + +target 'ContentCardUI-Customization' do platform :ios, '11.0' pod 'BrazeKit' pod 'BrazeUI' diff --git a/Examples/Swift/Sources/Common/ReadmeViewController.swift b/Examples/Swift/Sources/Common/ReadmeViewController.swift index ed05508d53..a417b5f5e4 100644 --- a/Examples/Swift/Sources/Common/ReadmeViewController.swift +++ b/Examples/Swift/Sources/Common/ReadmeViewController.swift @@ -84,6 +84,7 @@ final class ReadmeViewController: UITableViewController { ?? UITableViewCell(style: .subtitle, reuseIdentifier: identifier) cell.textLabel?.text = actions[indexPath.row].0 cell.detailTextLabel?.text = actions[indexPath.row].1 + cell.detailTextLabel?.numberOfLines = 0 return cell } diff --git a/Examples/Swift/Sources/ContentCardUI-Customization/AppDelegate.swift b/Examples/Swift/Sources/ContentCardUI-Customization/AppDelegate.swift new file mode 100644 index 0000000000..221a10c726 --- /dev/null +++ b/Examples/Swift/Sources/ContentCardUI-Customization/AppDelegate.swift @@ -0,0 +1,208 @@ +import BrazeKit +import BrazeUI +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + static var braze: Braze? = nil + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + // Setup Braze + let configuration = Braze.Configuration(apiKey: brazeApiKey, endpoint: brazeEndpoint) + configuration.logger.level = .info + let braze = Braze(configuration: configuration) + AppDelegate.braze = braze + + // - GIF support + GIFViewProvider.shared = .sdWebImage + + window?.makeKeyAndVisible() + return true + } + +} + +// MARK: - Customizations + +#warning( + """ + For demonstration purposes, this example application uses an alternate Content Card view controller initializer. + + In your implementation, you are expected to use the standard `init(braze:attributes:)` initializer to automatically link the UI to your braze instance. + + See https://braze-inc.github.io/braze-swift-sdk/documentation/brazeui/brazecontentcardui/viewcontroller/init(braze:attributes:) + """ +) + +extension AppDelegate { + + static func noCustomization() { + let viewController = BrazeContentCardUI.ViewController(initialCards: cards) + viewController.title = "No customization" + navigationController.pushViewController(viewController, animated: true) + } + + static func attributesCustomization() { + var attributes = BrazeContentCardUI.ViewController.Attributes.defaults + + // Customize the cell attributes to customize the cell + attributes.cellAttributes.cornerRadius = 20 + attributes.cellAttributes.classicImageCornerRadius = 10 + if #available(iOS 13.0, *) { + attributes.cellAttributes.cornerCurve = .continuous + } + + attributes.cellAttributes.titleFont = UIFont(name: "AvenirNext-Heavy", size: 18)! + attributes.cellAttributes.descriptionFont = UIFont(name: "BradleyHandITCTT-Bold", size: 16)! + attributes.cellAttributes.domainFont = UIFont(name: "TimesNewRomanPSMT", size: 12)! + if #available(iOS 13.0, *) { + attributes.cellAttributes.domainColor = .secondaryLabel + } else { + attributes.cellAttributes.domainColor = .gray + } + attributes.cellAttributes.highlightColor = .systemGreen.withAlphaComponent(0.8) + + let viewController = BrazeContentCardUI.ViewController( + initialCards: cards, + attributes: attributes + ) + viewController.title = "Attributes" + navigationController.pushViewController(viewController, animated: true) + } + + static func tintColorCustomization() { + let viewController = BrazeContentCardUI.ViewController(initialCards: cards) + + // The unviewed indicator, pin image and domain label color inherit the app's tint color + viewController.view.tintColor = .systemGreen + + viewController.title = "Tint color" + navigationController.pushViewController(viewController, animated: true) + } + + static func subclassClassicImageCellCustomization() { + var attributes = BrazeContentCardUI.ViewController.Attributes.defaults + attributes.cells[BrazeContentCardUI.ClassicImageCell.identifier] = CustomClassicImageCell.self + + let viewController = BrazeContentCardUI.ViewController( + initialCards: cards, + attributes: attributes + ) + viewController.title = "Classic Image Cell subclass" + navigationController.pushViewController(viewController, animated: true) + } + + static func staticCardsCustomization() { + var attributes = BrazeContentCardUI.ViewController.Attributes.defaults + + // Create two static cards + let headerCard: Braze.ContentCard = .banner( + .init( + data: .init(viewed: true), + image: .mockImage(width: 1200, height: 675, text: "Static header card", backgroundColor: .systemOrange, drawCorners: false) + ) + ) + let footerCard: Braze.ContentCard = .banner( + .init( + data: .init(viewed: true), + image: .mockImage(width: 1200, height: 675, text: "Static footer card", backgroundColor: .systemOrange, drawCorners: false) + ) + ) + + // Set the transform attributes which allows the modification of the list of content cards + // presented. + // Here we return the braze cards with static header and footer cards. + attributes.transform = { cards in + [headerCard] + cards + [footerCard] + } + + let viewController = BrazeContentCardUI.ViewController( + initialCards: cards, + attributes: attributes + ) + viewController.title = "Static cards" + navigationController.pushViewController(viewController, animated: true) + } + + static func filterCardsCustomization() { + var attributes = BrazeContentCardUI.ViewController.Attributes.defaults + + // Set the transform attributes which allows the modification of the list of content cards + // presented. + // Here we return the braze cards filtered to keep only the classic cards. + attributes.transform = { cards in + cards.filter { $0.classic != nil } + } + + let viewController = BrazeContentCardUI.ViewController( + initialCards: cards, + attributes: attributes + ) + viewController.title = "Filtered cards" + navigationController.pushViewController(viewController, animated: true) + } + + static func transformCardsCustomization() { + var attributes = BrazeContentCardUI.ViewController.Attributes.defaults + + // Set the transform attributes which allows the modification of the list of content cards + // presented. + // Here we return the braze cards modified so that the title and description properties have the + // "[modified]" prefix. + attributes.transform = { cards in + return cards.map { card in + var card = card + if let title = card.title { + card.title = "[modified] \(title)" + } + if let description = card.description { + card.description = "[modified] \(description)" + } + return card + } + } + + let viewController = BrazeContentCardUI.ViewController( + initialCards: cards, + attributes: attributes + ) + viewController.title = "Transform cards" + navigationController.pushViewController(viewController, animated: true) + } + + static func emptyStateCustomization() { + var attributes = BrazeContentCardUI.ViewController.Attributes.defaults + + attributes.emptyStateMessage = "This is a custom empty state message" + attributes.emptyStateMessageFont = .preferredFont(forTextStyle: .title1) + if #available(iOS 13.0, *) { + attributes.emptyStateMessageColor = .secondaryLabel + } else { + attributes.emptyStateMessageColor = .lightGray + } + + let viewController = BrazeContentCardUI.ViewController(initialCards: [], attributes: attributes) + viewController.title = "Empty State" + navigationController.pushViewController(viewController, animated: true) + } + +} + +// MARK: - Helpers + +private var cards: [Braze.ContentCard] = [ + classicPinned, + classic, + classicImage, + banner, + captionedImage +] + +private var navigationController: UINavigationController { + UIApplication.shared.delegate!.window!!.rootViewController! as! UINavigationController +} + diff --git a/Examples/Swift/Sources/ContentCardUI-Customization/Readme.swift b/Examples/Swift/Sources/ContentCardUI-Customization/Readme.swift new file mode 100644 index 0000000000..4bfd407923 --- /dev/null +++ b/Examples/Swift/Sources/ContentCardUI-Customization/Readme.swift @@ -0,0 +1,184 @@ +import BrazeKit +import UIKit + +let readme = + """ + This sample demonstrates multiple ways to customize the Content Cards UI appearance and behavior: + + Customizations are applied when presenting the Content Cards UI in the `AppDelegate` methods. + """ + +let actions: [(String, String, (ReadmeViewController) -> Void)] = [ + ( + "Default", + "No customization.", + noCustomization + ), + ( + "Custom attributes", + "Corner radius, fonts, text color and highlight color.", + attributesCustomization + ), + ( + "Tint color", + "Pin image, unviewed indicator and domain label inherit the current tint color.", + tintColorCustomization + ), + ( + "Custom empty state", + "Empty state message, font and text color.", + emptyStateCustomization + ), + ( + "Custom ClassicImageCell subclass", + "Move the image to the trailing part of the cell, make it take the full height of the cell.", + subclassClassicImageCellCustomization + ), + ( + "Static cards", + "Add static first and last cards to the view controller.", + staticCardCustomization + ), + ( + "Filter cards", + "Keep only classic content card in the feed.", + filterCardsCustomization + ), + ( + "Transform cards", + "Modify the cards texts before display.", + transformCardsCustomization + ), +] + +// MARK: - Internal + +let classicPinned: Braze.ContentCard = withContext( + .classic( + .init( + data: .init(clickAction: .url(URL(string: "https://example.com")!, useWebView: true), pinned: true), + title: "Classic (pinned)", + description: "Cupcake ipsum dolor sit amet. Topping dessert muffin fruitcake.", + domain: "example.com" + ) + ) +) + +let classic: Braze.ContentCard = withContext( + .classic( + .init( + data: .init(clickAction: .url(URL(string: "https://example.com")!, useWebView: true)), + title: "Classic", + description: "Cupcake ipsum dolor sit amet. Topping dessert muffin fruitcake.", + domain: "example.com" + ) + ) +) + +let classicImage: Braze.ContentCard = withContext( + .classicImage( + .init( + data: .init(clickAction: .url(URL(string: "https://example.com")!, useWebView: true)), + image: .mockImage(width: 200, height: 200, text: "🧁", textSize: 128, drawCorners: false), + title: "Classic Image", + description: "Cupcake ipsum dolor sit amet. Topping dessert muffin fruitcake.", + domain: "example.com" + ) + ) +) + +let banner: Braze.ContentCard = withContext( + .banner( + .init( + data: .init(clickAction: .url(URL(string: "https://example.com")!, useWebView: true)), + image: .mockImage(width: 1200, height: 675, text: "🧁", textSize: 256, drawCorners: false), + imageAspectRatio: 1200 / 675 + ) + ) +) + +let captionedImage: Braze.ContentCard = withContext( + .captionedImage( + .init( + data: .init(clickAction: .url(URL(string: "https://example.com")!, useWebView: true)), + image: .mockImage(width: 1200, height: 675, text: "🧁", textSize: 256, drawCorners: false), + title: "Captioned Image", + description: "Cupcake ipsum dolor sit amet. Topping dessert muffin fruitcake.", + domain: "example.com" + ) + ) +) + +func noCustomization(_ viewController: ReadmeViewController) { + AppDelegate.noCustomization() +} + +func attributesCustomization(_ viewController: ReadmeViewController) { + AppDelegate.attributesCustomization() +} + +func tintColorCustomization(_ viewController: ReadmeViewController) { + AppDelegate.tintColorCustomization() +} + +func emptyStateCustomization(_ viewController: ReadmeViewController) { + AppDelegate.emptyStateCustomization() +} + +func subclassClassicImageCellCustomization(_ viewController: ReadmeViewController) { + AppDelegate.subclassClassicImageCellCustomization() +} + +func staticCardCustomization(_ viewController: ReadmeViewController) { + AppDelegate.staticCardsCustomization() +} + +func filterCardsCustomization(_ viewController: ReadmeViewController) { + AppDelegate.filterCardsCustomization() +} + +func transformCardsCustomization(_ viewController: ReadmeViewController) { + AppDelegate.transformCardsCustomization() +} + +func withContext(_ card: Braze.ContentCard) -> Braze.ContentCard { + var card = card + + var loadImage: ((@escaping (Result) -> Void) -> Braze.Cancellable)? + if let imageURL = card.imageURL { + loadImage = { completion in + DispatchQueue.main.async { + completion(.success(imageURL)) + } + return .empty + } + } + + card.context = .init( + logImpression: {}, + logClick: {}, + processClickAction: { clickAction in + switch clickAction { + case .url(let url, let useWebView): + let alert = UIAlertController( + title: "Opening URL", + message: + """ + url: \(url) + useWebView: \(useWebView) + """, + preferredStyle: .actionSheet + ) + alert.addAction(.init(title: "Dismiss", style: .cancel)) + Braze.UIUtils.activeTopmostViewController?.present(alert, animated: true) + @unknown default: + print("Unknown click action: \(clickAction)") + } + }, + logDismissed: {}, + logError: { _ in }, + loadImage: loadImage + ) + + return card +} diff --git a/Examples/Swift/Sources/ContentCards/SDWebImageGIFViewProvider.swift b/Examples/Swift/Sources/ContentCardUI-Customization/SDWebImageGIFViewProvider.swift similarity index 100% rename from Examples/Swift/Sources/ContentCards/SDWebImageGIFViewProvider.swift rename to Examples/Swift/Sources/ContentCardUI-Customization/SDWebImageGIFViewProvider.swift diff --git a/Examples/Swift/Sources/ContentCardUI-Customization/Subclasses/CustomClassicImageCell.swift b/Examples/Swift/Sources/ContentCardUI-Customization/Subclasses/CustomClassicImageCell.swift new file mode 100644 index 0000000000..47e8374932 --- /dev/null +++ b/Examples/Swift/Sources/ContentCardUI-Customization/Subclasses/CustomClassicImageCell.swift @@ -0,0 +1,51 @@ +import UIKit +import BrazeKit +import BrazeUI + +/// A ClassicImageCell subclass which move the image to the trailing part of the cell, make it take +/// the full height of the cell. +class CustomClassicImageCell: BrazeContentCardUI.ClassicImageCell { + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + // Modify stack behavior + cardStack.alignment = .center + cardStack.distribution = .fillProportionally + + // Move image to end of the stack view + contentImageView.removeFromSuperview() + cardStack.addArrangedSubview(contentImageView) + + // Disable the size constraints on the image view to let the stack view automatically size it. + NSLayoutConstraint.deactivate(classicImageSize) + } + + open override func applyAttributes(_ attributes: Attributes) { + // Remove original padding for super + var noPadding = attributes + noPadding.padding = .zero + super.applyAttributes(noPadding) + + // Use the original left padding for the text stack + support RTL languages + textStack?.isLayoutMarginsRelativeArrangement = true + let isRightToLeft = UIView.userInterfaceLayoutDirection(for: semanticContentAttribute) == .rightToLeft + textStack?.layoutMargins = UIEdgeInsets( + top: 0, + left: isRightToLeft ? 0 : attributes.padding.left, + bottom: 0, + right: !isRightToLeft ? 0 : attributes.padding.right + ) + } + + override func set( + card: Braze.ContentCard.ClassicImage, + imageLoad: AsyncImageView.ImageLoad? + ) { + // Customize the title + var card = card + card.title = "\(card.title) (subclass)" + super.set(card: card, imageLoad: imageLoad) + } + +} diff --git a/Examples/Swift/Sources/ContentCards/AppDelegate.swift b/Examples/Swift/Sources/ContentCardUI/AppDelegate.swift similarity index 100% rename from Examples/Swift/Sources/ContentCards/AppDelegate.swift rename to Examples/Swift/Sources/ContentCardUI/AppDelegate.swift diff --git a/Examples/Swift/Sources/ContentCards/Readme.swift b/Examples/Swift/Sources/ContentCardUI/Readme.swift similarity index 100% rename from Examples/Swift/Sources/ContentCards/Readme.swift rename to Examples/Swift/Sources/ContentCardUI/Readme.swift diff --git a/Examples/Swift/Sources/InAppMessages/SDWebImageGIFViewProvider.swift b/Examples/Swift/Sources/ContentCardUI/SDWebImageGIFViewProvider.swift similarity index 100% rename from Examples/Swift/Sources/InAppMessages/SDWebImageGIFViewProvider.swift rename to Examples/Swift/Sources/ContentCardUI/SDWebImageGIFViewProvider.swift diff --git a/Examples/Swift/Sources/ContentCards/Info.plist b/Examples/Swift/Sources/ContentCards/Info.plist deleted file mode 100644 index 0c015f1468..0000000000 --- a/Examples/Swift/Sources/ContentCards/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - ContentCards - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - UILaunchStoryboardName - LaunchScreen - - diff --git a/Examples/Swift/Sources/InAppMessageUI-Customization/AppDelegate.swift b/Examples/Swift/Sources/InAppMessageUI-Customization/AppDelegate.swift new file mode 100644 index 0000000000..1122c4944d --- /dev/null +++ b/Examples/Swift/Sources/InAppMessageUI-Customization/AppDelegate.swift @@ -0,0 +1,161 @@ +import BrazeKit +import BrazeUI +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + static var braze: Braze? = nil + + func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + let configuration = Braze.Configuration(apiKey: brazeApiKey, endpoint: brazeEndpoint) + let braze = Braze(configuration: configuration) + AppDelegate.braze = braze + + // - GIF support + GIFViewProvider.shared = .sdWebImage + + // - InAppMessage UI + let inAppMessageUI = BrazeInAppMessageUI() + inAppMessageUI.delegate = self + braze.inAppMessagePresenter = inAppMessageUI + + window?.makeKeyAndVisible() + return true + } + +} + +// MARK: - Customizations + +extension AppDelegate: BrazeInAppMessageUIDelegate { + + func inAppMessage( + _ ui: BrazeInAppMessageUI, + prepareWith context: inout BrazeInAppMessageUI.PresentationContext + ) { + let customization = context.message.extras["customization"] as? String + + // Slideup - Attributes + if customization == "slideup-attributes" { + var attributes = context.attributes?.slideup + attributes?.font = UIFont(name: "Chalkduster", size: 17)! + attributes?.imageSize = CGSize(width: 65, height: 65) + attributes?.cornerRadius = 20 + attributes?.imageCornerRadius = 10 + if #available(iOS 13.0, *) { + attributes?.cornerCurve = .continuous + attributes?.imageCornerCurve = .continuous + } + context.attributes?.slideup = attributes + } + + // Slideup - Full-width + if customization == "slideup-full-width", let slideup = context.message.slideup { + context.customView = FullWidthSlideupView(message: slideup) + + // The full-width view also support attributes. Uncomment the code below to setup the view + // with more customizations. + /* + var attributes = FullWidthSlideupView.defaultAttributes + attributes.cornerRadius = 0 + attributes.imageCornerRadius = 10 + context.customView = FullWidthSlideupView(message: slideup, attributes: attributes) + */ + } + + // Slideup - Confirm button + if customization == "slideup-confirm-button", let slideup = context.message.slideup { + context.customView = ConfirmButtonSlideupView(message: slideup) + + // The confirm-button view also support attributes. Uncomment the code below to setup the view + // with more customizations. + /* + var attributes = ConfirmButtonSlideupView.defaultAttributes + attributes.imageSize = CGSize(width: 65, height: 65) + attributes.cornerRadius = 20 + attributes.imageCornerRadius = 10 + if #available(iOS 13.0, *) { + attributes.cornerCurve = .continuous + attributes.imageCornerCurve = .continuous + } + context.customView = ConfirmButtonSlideupView(message: slideup, attributes: attributes) + */ + } + + // Modal - Attributes + if customization == "modal-attributes" { + var attributes = context.attributes?.modal + attributes?.headerFont = UIFont(name: "AmericanTypewriter-Bold", size: 20)! + attributes?.messageFont = UIFont(name: "AmericanTypewriter", size: 17)! + attributes?.cornerRadius = 20 + if #available(iOS 13.0, *) { + attributes?.cornerCurve = .continuous + } + context.attributes?.modal = attributes + } + + // Modal - Dismiss on background tap + if customization == "modal-dismiss-on-background-tap" { + context.attributes?.modal?.dismissOnBackgroundTap = true + } + + // Modal - Custom button font + if customization == "modal-button-font" { + context.attributes?.modal?.buttonsAttributes.font = UIFont(name: "AmericanTypewriter-Bold", size: 17)! + } + + // ModalImage - Attributes + if customization == "modal-image-attributes" { + var attributes = context.attributes?.modalImage + attributes?.cornerRadius = 20 + if #available(iOS 13.0, *) { + attributes?.cornerCurve = .continuous + } + context.attributes?.modalImage = attributes + } + + // ModalImage - Dismiss on background tap + if customization == "modal-image-dismiss-on-background-tap" { + context.attributes?.modalImage?.dismissOnBackgroundTap = true + } + + // Full - Attributes + if customization == "full-attributes" { + var attributes = context.attributes?.full + attributes?.headerFont = UIFont(name: "AmericanTypewriter-Bold", size: 20)! + attributes?.messageFont = UIFont(name: "AmericanTypewriter", size: 17)! + attributes?.cornerRadius = 20 + if #available(iOS 13.0, *) { + attributes?.cornerCurve = .continuous + } + context.attributes?.full = attributes + } + + // Full - Dismiss on background tap + if customization == "full-dismiss-on-background-tap" { + context.attributes?.full?.dismissOnBackgroundTap = true + } + + // FullImage - Attributes + if customization == "full-image-attributes" { + var attributes = context.attributes?.fullImage + attributes?.cornerRadius = 20 + if #available(iOS 13.0, *) { + attributes?.cornerCurve = .continuous + } + context.attributes?.fullImage = attributes + } + + // FullImage - Dismiss on background tap + if customization == "full-image-dismiss-on-background-tap" { + context.attributes?.fullImage?.dismissOnBackgroundTap = true + } + } + +} + + diff --git a/Examples/Swift/Sources/InAppMessageUI-Customization/Readme.swift b/Examples/Swift/Sources/InAppMessageUI-Customization/Readme.swift new file mode 100644 index 0000000000..3055e06309 --- /dev/null +++ b/Examples/Swift/Sources/InAppMessageUI-Customization/Readme.swift @@ -0,0 +1,234 @@ +import BrazeKit +import UIKit + +let readme = + """ + This sample demonstrates multiple ways to customize the In-App Message UI appearance and behavior. + + Customizations are applied in the `inAppMessage(_:prepareWith:)` delegate method implemented by the `AppDelegate`. + """ + +let actions: [(String, String, (ReadmeViewController) -> Void)] = [ + ( + "Slideup - Default", + "A non-customized slideup.", + slideupDefault + ), + ( + "Slideup - Attributes", + "A slideup with its font, corner radius and image size customized using the attributes object.", + slideupAttributes + ), + ( + "Slideup - Full-width", + "A full-width slideup, implemented by subclassing the slideup view.", + slideupFullWidth + ), + ( + "Slideup - Confirm button", + "A non-dismissible slideup with a confirm button that perform the message click action, implemented by subclassing the slideup view.", + slideupConfirmButton + ), + ( + "Modal - Default", + "A non-customized modal.", + modalDefault + ), + ( + "Modal - Attributes", + "A modal with its fonts, corner radius customized using the attributes object.", + modalAttributes + ), + ( + "Modal - Dismiss on background tap", + "A modal that can be dismissed when tapping the background. Customized using the attributes object.", + modalDismissOnBackgroundTap + ), + ( + "Modal - Custom button font", + "A modal with its button font modified using the attributes object.", + modalButtonFont + ), + ( + "ModalImage - Default", + "A non-customized modal image.", + modalImageDefault + ), + ( + "ModalImage - Attributes", + "A modal image with its corner radius customized using the attributes object.", + modalImageAttributes + ), + ( + "ModalImage - Dismiss on background tap", + "A modal image that can be dismissed when tapping the background. Customized using the attributes object.", + modalImageDismissOnBackgroundTap + ), + ( + "Full - Default", + "A non-customized full.", + fullDefault + ), + ( + "Full - Attributes", + "A full with its fonts, corner radius customized (iPad) using the attributes object.", + fullAttributes + ), + ( + "Full - Dismiss on background tap (iPad)", + "A full that can be dismissed when tapping the background when appearing as a modal (iPad). Customized using the attributes object.", + fullDismissOnBackgroundTap + ), + ( + "FullImage - Default", + "A non-customized full image.", + fullImageDefault + ), + ( + "FullImage - Attributes", + "A full image with its corner radius customized (iPad) using the attributes object.", + fullImageAttributes + ), + ( + "FullImage - Dismiss on background tap (iPad)", + "A full image that can be dismissed when tapping the background when appearing as a modal (iPad). Customized using the attributes object.", + fullImageDismissOnBackgroundTap + ), +] + +// MARK: - Internal + +let slideup: Braze.InAppMessage = .slideup( + .init( + graphic: .image(.mockImage(width: 200, height: 200, text: "🧁", textSize: 128, backgroundColor: .systemBlue, drawCorners: false)), + message: "Cupcake ipsum dolor sit amet. Topping dessert muffin fruitcake." + ) +) + +let modal: Braze.InAppMessage = .modal( + .init( + graphic: .image(.mockImage(width: 1450, height: 500, text: "🧁", textSize: 256, backgroundColor: .systemBlue, drawCorners: false)), + header: "Hello world!", + message: "Cupcake ipsum dolor sit amet topping. Cookie candy chupa chups jujubes pastry soufflé. Danish cake cheesecake liquorice wafer marshmallow macaroon.", + buttons: [.init(id: 0, text: "OK", clickAction: .none, themes: ["light": .primary])] + ) +) + +let modalImage: Braze.InAppMessage = .modalImage( + .init( + imageURL: .mockImage(width: 1200, height: 1200, text: "🧁", textSize: 512, backgroundColor: .systemBlue, drawCorners: false), + buttons: [.init(id: 0, text: "OK", clickAction: .none, themes: ["light": .primary])] + ) +) + +let full: Braze.InAppMessage = .full( + .init( + imageURL: .mockImage(width: 1200, height: 1000, text: "🧁", textSize: 512, backgroundColor: .systemBlue, drawCorners: false), + header: "Hello world!", + message: "Cupcake ipsum dolor sit amet topping. Cookie candy chupa chups jujubes pastry soufflé. Danish cake cheesecake liquorice wafer marshmallow macaroon.", + buttons: [.init(id: 0, text: "OK", clickAction: .none, themes: ["light": .primary])] + ) +) + +let fullImage: Braze.InAppMessage = .fullImage( + .init( + imageURL: .mockImage(width: 1200, height: 2000, text: "🧁", textSize: 512, backgroundColor: .systemBlue, drawCorners: false), + buttons: [.init(id: 0, text: "OK", clickAction: .none, themes: ["light": .primary])] + ) +) + +func slideupDefault(_ viewController: ReadmeViewController) { + present(message: slideup) +} + +func slideupAttributes(_ viewController: ReadmeViewController) { + var message = slideup + message.extras = ["customization": "slideup-attributes"] + present(message: message) +} + +func slideupFullWidth(_ viewController: ReadmeViewController) { + var message = slideup + message.extras = ["customization": "slideup-full-width"] + present(message: message) +} + +func slideupConfirmButton(_ viewController: ReadmeViewController) { + var message = slideup + message.extras = ["customization": "slideup-confirm-button"] + present(message: message) +} + +func modalDefault(_ viewController: ReadmeViewController) { + present(message: modal) +} + +func modalAttributes(_ viewController: ReadmeViewController) { + var message = modal + message.extras = ["customization": "modal-attributes"] + present(message: message) +} + +func modalDismissOnBackgroundTap(_ viewController: ReadmeViewController) { + var message = modal + message.extras = ["customization": "modal-dismiss-on-background-tap"] + present(message: message) +} + +func modalButtonFont(_ viewController: ReadmeViewController) { + var message = modal + message.extras = ["customization": "modal-button-font"] + present(message: message) +} + +func modalImageDefault(_ viewController: ReadmeViewController) { + present(message: modalImage) +} + +func modalImageAttributes(_ viewController: ReadmeViewController) { + var message = modalImage + message.extras = ["customization": "modal-image-attributes"] + present(message: message) +} + +func modalImageDismissOnBackgroundTap(_ viewController: ReadmeViewController) { + var message = modalImage + message.extras = ["customization": "modal-image-dismiss-on-background-tap"] + present(message: message) +} + +func fullDefault(_ viewController: ReadmeViewController) { + present(message: full) +} + +func fullAttributes(_ viewController: ReadmeViewController) { + var message = full + message.extras = ["customization": "full-attributes"] + present(message: message) +} + +func fullDismissOnBackgroundTap(_ viewController: ReadmeViewController) { + var message = full + message.extras = ["customization": "full-dismiss-on-background-tap"] + present(message: message) +} + +func fullImageDefault(_ viewController: ReadmeViewController) { + present(message: fullImage) +} + +func fullImageAttributes(_ viewController: ReadmeViewController) { + var message = fullImage + message.extras = ["customization": "full-image-attributes"] + present(message: message) +} + +func fullImageDismissOnBackgroundTap(_ viewController: ReadmeViewController) { + var message = fullImage + message.extras = ["customization": "full-image-dismiss-on-background-tap"] + present(message: message) +} + +private func present(message: Braze.InAppMessage) { + AppDelegate.braze?.inAppMessagePresenter?.present(message: message) +} diff --git a/Examples/Swift/Sources/InAppMessageUI-Customization/SDWebImageGIFViewProvider.swift b/Examples/Swift/Sources/InAppMessageUI-Customization/SDWebImageGIFViewProvider.swift new file mode 100644 index 0000000000..5858c0ea5a --- /dev/null +++ b/Examples/Swift/Sources/InAppMessageUI-Customization/SDWebImageGIFViewProvider.swift @@ -0,0 +1,20 @@ +import BrazeUI +import SDWebImage + +extension GIFViewProvider { + + /// A GIF view provider using [SDWebImage](https://github.com/SDWebImage/SDWebImage) as a + /// rendering library. + static let sdWebImage = Self( + view: { SDAnimatedImageView(image: image(for: $0)) }, + updateView: { ($0 as? SDAnimatedImageView)?.image = image(for: $1) } + ) + + private static func image(for url: URL?) -> UIImage? { + guard let url = url else { return nil } + return url.pathExtension == "gif" + ? SDAnimatedImage(contentsOfFile: url.path) + : UIImage(contentsOfFile: url.path) + } + +} diff --git a/Examples/Swift/Sources/InAppMessageUI-Customization/Subclasses/ConfirmButtonSlideupView.swift b/Examples/Swift/Sources/InAppMessageUI-Customization/Subclasses/ConfirmButtonSlideupView.swift new file mode 100644 index 0000000000..e76f3940c1 --- /dev/null +++ b/Examples/Swift/Sources/InAppMessageUI-Customization/Subclasses/ConfirmButtonSlideupView.swift @@ -0,0 +1,69 @@ +import BrazeKit +import BrazeUI +import UIKit + +class ConfirmButtonSlideupView: BrazeInAppMessageUI.SlideupView { + + static let defaultAttributes: Attributes = { + var attributes = Attributes.defaults + attributes.chevronVisibility = .hidden + attributes.dismissible = false + return attributes + }() + + lazy var confirmButton: UIButton = { + let button = UIButton(type: .custom) + let size = CGSize(width: 40, height: 40) + let image = UIGraphicsImageRenderer(size: size).image { context in + UIColor.systemGray.setFill() + context.fill(CGRect(origin: .zero, size: size)) + } + let selectedImage = UIGraphicsImageRenderer(size: size).image { context in + UIColor.systemGreen.setFill() + context.fill(CGRect(origin: .zero, size: size)) + } + button.layer.cornerRadius = 20 + button.layer.masksToBounds = true + button.setBackgroundImage(image, for: .normal) + button.setBackgroundImage(selectedImage, for: .selected) + button.setTitle("✓", for: .normal) + button.setTitleColor(.white, for: .normal) + button.titleLabel?.font = .preferredFont(forTextStyle: .title2) + button.addTarget(self, action: #selector(confirmButtonTapped), for: .touchUpInside) + NSLayoutConstraint.activate([ + button.widthAnchor.constraint(equalToConstant: 40), + button.heightAnchor.constraint(equalToConstant: 40), + ]) + return button + }() + + init( + message: Braze.InAppMessage.Slideup, + attributes: Attributes = ConfirmButtonSlideupView.defaultAttributes + ) { + super.init( + message: message, + attributes: attributes + ) + + // Disable default press gesture + pressGesture.isEnabled = false + + // Add confirm button + contentView.stack.addArrangedSubview(confirmButton) + } + + @objc + func confirmButtonTapped() { + confirmButton.isUserInteractionEnabled = false + UIView.transition(with: confirmButton, duration: 0.2, options: .transitionCrossDissolve) { + self.confirmButton.isSelected = true + } + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + self.logClick() + self.process(clickAction: self.message.clickAction) + self.dismiss() + } + } + +} diff --git a/Examples/Swift/Sources/InAppMessageUI-Customization/Subclasses/FullWidthSlideupView.swift b/Examples/Swift/Sources/InAppMessageUI-Customization/Subclasses/FullWidthSlideupView.swift new file mode 100644 index 0000000000..3315285fbe --- /dev/null +++ b/Examples/Swift/Sources/InAppMessageUI-Customization/Subclasses/FullWidthSlideupView.swift @@ -0,0 +1,68 @@ +import BrazeKit +import BrazeUI +import UIKit + +class FullWidthSlideupView: BrazeInAppMessageUI.SlideupView { + + static let defaultAttributes: Attributes = { + var attributes = Attributes.defaults + attributes.maxWidth = 720 + attributes.padding = UIEdgeInsets(top: 6, left: 10, bottom: 6, right: 10) + return attributes + }() + + let backgroundView = ShadowView(.inAppMessage) + + init( + message: Braze.InAppMessage.Slideup, + attributes: Attributes = FullWidthSlideupView.defaultAttributes + ) { + super.init( + message: message, + attributes: attributes + ) + + // Hide the original shadow view + shadowView.isHidden = true + + // Setup the full-width background view + insertSubview(backgroundView, belowSubview: shadowView) + + // - Auto-layout + backgroundView.translatesAutoresizingMaskIntoConstraints = false + let verticalConstraint: NSLayoutConstraint + switch message.slideFrom { + case .top: + verticalConstraint = backgroundView.bottomAnchor.constraint(equalTo: bottomAnchor) + case .bottom: + verticalConstraint = backgroundView.topAnchor.constraint(equalTo: topAnchor) + @unknown default: + verticalConstraint = backgroundView.topAnchor.constraint(equalTo: topAnchor) + } + NSLayoutConstraint.activate([ + verticalConstraint, + backgroundView.leadingAnchor.constraint(equalTo: leadingAnchor), + backgroundView.trailingAnchor.constraint(equalTo: trailingAnchor), + backgroundView.heightAnchor.constraint(equalToConstant: 1000) + ]) + + applyTheme() + applyAttributes() + } + + override func applyAttributes() { + super.applyAttributes() + backgroundView.shadow = attributes.shadow + backgroundView.layer.cornerRadius = attributes.cornerRadius + if #available(iOS 13.0, *) { + backgroundView.layer.cornerCurve = attributes.cornerCurve + } + } + + override func applyTheme() { + super.applyTheme() + let theme = message.theme(for: traitCollection) + backgroundView.backgroundColor = theme.backgroundColor.uiColor + } + +} diff --git a/Examples/Swift/Sources/InAppMessages/AppDelegate.swift b/Examples/Swift/Sources/InAppMessageUI/AppDelegate.swift similarity index 100% rename from Examples/Swift/Sources/InAppMessages/AppDelegate.swift rename to Examples/Swift/Sources/InAppMessageUI/AppDelegate.swift diff --git a/Examples/Swift/Sources/InAppMessages/Readme.swift b/Examples/Swift/Sources/InAppMessageUI/Readme.swift similarity index 100% rename from Examples/Swift/Sources/InAppMessages/Readme.swift rename to Examples/Swift/Sources/InAppMessageUI/Readme.swift diff --git a/Examples/Swift/Sources/InAppMessageUI/SDWebImageGIFViewProvider.swift b/Examples/Swift/Sources/InAppMessageUI/SDWebImageGIFViewProvider.swift new file mode 100644 index 0000000000..5858c0ea5a --- /dev/null +++ b/Examples/Swift/Sources/InAppMessageUI/SDWebImageGIFViewProvider.swift @@ -0,0 +1,20 @@ +import BrazeUI +import SDWebImage + +extension GIFViewProvider { + + /// A GIF view provider using [SDWebImage](https://github.com/SDWebImage/SDWebImage) as a + /// rendering library. + static let sdWebImage = Self( + view: { SDAnimatedImageView(image: image(for: $0)) }, + updateView: { ($0 as? SDAnimatedImageView)?.image = image(for: $1) } + ) + + private static func image(for url: URL?) -> UIImage? { + guard let url = url else { return nil } + return url.pathExtension == "gif" + ? SDAnimatedImage(contentsOfFile: url.path) + : UIImage(contentsOfFile: url.path) + } + +} diff --git a/Examples/Swift/Sources/InAppMessages/Info.plist b/Examples/Swift/Sources/InAppMessages/Info.plist deleted file mode 100644 index 4f97542122..0000000000 --- a/Examples/Swift/Sources/InAppMessages/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - InAppMessages - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - UILaunchStoryboardName - LaunchScreen - - diff --git a/Package.swift b/Package.swift index 6193991e33..4e819cbe17 100644 --- a/Package.swift +++ b/Package.swift @@ -26,8 +26,8 @@ let package = Package( targets: [ .binaryTarget( name: "BrazeKit", - url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazeKit.zip", - checksum: "7e1060aec7b77c3e2c5648ec7308c1f65686a904fb971c325fc2b3d80540503b" + url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazeKit.zip", + checksum: "c86831ad7bd173f75d25833f6e6648ff3f021eebd41224f7c0c9880521ba8b0c" ), .target( name: "BrazeKitResources", @@ -42,18 +42,18 @@ let package = Package( ), .binaryTarget( name: "BrazeLocation", - url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazeLocation.zip", - checksum: "245089b669640e15fd9a1a4e97756dd39e7223dbc67545bbb2a283a600b71ff9" + url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazeLocation.zip", + checksum: "30bc222ead44126b8f71a73de2f1cced8db57317b9a51a61f3dcb9930d31fb68" ), .binaryTarget( name: "BrazeNotificationService", - url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazeNotificationService.zip", - checksum: "02579b6586bf8aee37530241b195e81d616ab9c6e18a516a6ec35d34f3a36df4" + url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazeNotificationService.zip", + checksum: "26b92b5b17df840b7a0f08d2ac56d04dc4e415a16cd8da38144c0cd0600efff4" ), .binaryTarget( name: "BrazePushStory", - url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.5.1/BrazePushStory.zip", - checksum: "86f6dab41fa804c06f48b5ef828a8d3eecbbeda9a8c9d077598d2b1ede79eef1" + url: "https://github.com/braze-inc/braze-swift-sdk/releases/download/5.6.0/BrazePushStory.zip", + checksum: "f7af4633a4ebd036c7beeecc84ef9289b6e393c590ea726d15aa6359befa71e4" ), ] ) diff --git a/README.md b/README.md index 7ff7b03ddf..c47253c9d4 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@

- Version: 5.5.1 + Version: 5.6.0 URL { let frame = CGRect(x: 0, y: 0, width: width, height: height) let textSize = textSize ?? min(floor(height / 6), floor(width / 12)) @@ -51,10 +52,12 @@ import UIKit ctx.cgContext.addLine(to: pos) ctx.cgContext.drawPath(using: .fillStroke) } - drawCorner(at: .init(x: frame.minX, y: frame.minY)) - drawCorner(at: .init(x: frame.minX, y: frame.maxY)) - drawCorner(at: .init(x: frame.maxX, y: frame.minY)) - drawCorner(at: .init(x: frame.maxX, y: frame.maxY)) + if drawCorners { + drawCorner(at: .init(x: frame.minX, y: frame.minY)) + drawCorner(at: .init(x: frame.minX, y: frame.maxY)) + drawCorner(at: .init(x: frame.maxX, y: frame.minY)) + drawCorner(at: .init(x: frame.maxX, y: frame.maxY)) + } // Draw text let font: UIFont @@ -84,7 +87,7 @@ import UIKit appropriateFor: nil, create: false ) - let imageURL = cacheURL.appendingPathComponent("\(text).png") + let imageURL = cacheURL.appendingPathComponent("\(text)-\(Int(width))x\(Int(height)).png") try! data.write(to: imageURL) return imageURL diff --git a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIBannerCell.swift b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIBannerCell.swift index 5191307944..7559f92ea8 100644 --- a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIBannerCell.swift +++ b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIBannerCell.swift @@ -21,7 +21,7 @@ extension BrazeContentCardUI { container.bringSubviewToFront(unviewedIndicator) installInternalConstraints() - applyAttributes() + applyAttributes(attributes) } /// Does not support interface-builder / storyboards. diff --git a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICaptionedImageCell.swift b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICaptionedImageCell.swift index b47a6ae47d..0408e7618e 100644 --- a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICaptionedImageCell.swift +++ b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICaptionedImageCell.swift @@ -26,7 +26,7 @@ extension BrazeContentCardUI { container.bringSubviewToFront(unviewedIndicator) installInternalConstraints() - applyAttributes() + applyAttributes(attributes) } /// Does not support interface-builder / storyboards. @@ -80,8 +80,8 @@ extension BrazeContentCardUI { highlightable = card.clickAction != .none } - open override func applyAttributes() { - super.applyAttributes() + open override func applyAttributes(_ attributes: Attributes) { + super.applyAttributes(attributes) let padding = attributes.padding textContainerContraints[0].constant = padding.left diff --git a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICell.swift b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICell.swift index 1973761434..9da638a1db 100644 --- a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICell.swift +++ b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUICell.swift @@ -123,12 +123,12 @@ extension BrazeContentCardUI { open var attributes: Attributes = .init() { didSet { guard attributes != oldValue else { return } - applyAttributes() + applyAttributes(attributes) } } /// Apply the current attributes. - open func applyAttributes() { + open func applyAttributes(_ attributes: Attributes) { // Margin switch attributes.margin { case .layoutMargins(let insets): @@ -328,13 +328,13 @@ extension BrazeContentCardUI { /// See [`traitCollectionDidChange(_:)`](https://developer.apple.com/documentation/uikit/uitraitenvironment/1623516-traitcollectiondidchange) open override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) - applyAttributes() + applyAttributes(attributes) } /// See [`tintColorDidChange()`](https://developer.apple.com/documentation/uikit/uiview/1622620-tintcolordidchange) open override func tintColorDidChange() { super.tintColorDidChange() - applyAttributes() + applyAttributes(attributes) } // MARK: - User Interactions diff --git a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicCell.swift b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicCell.swift index 8c244dd205..520b255dad 100644 --- a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicCell.swift +++ b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicCell.swift @@ -22,7 +22,7 @@ extension BrazeContentCardUI { container.addSubview(textStack) installInternalConstraints() - applyAttributes() + applyAttributes(attributes) } /// Does not support interface-builder / storyboards. @@ -58,8 +58,8 @@ extension BrazeContentCardUI { highlightable = card.clickAction != .none } - open override func applyAttributes() { - super.applyAttributes() + open override func applyAttributes(_ attributes: Attributes) { + super.applyAttributes(attributes) let padding = attributes.padding textStackContraints[0].constant = padding.left diff --git a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicImageCell.swift b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicImageCell.swift index 3a281906aa..dc0062f60b 100644 --- a/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicImageCell.swift +++ b/Sources/BrazeUI/ContentCardUI/Cells/ContentCardUIClassicImageCell.swift @@ -39,7 +39,7 @@ extension BrazeContentCardUI { container.addSubview(cardStack) installInternalConstraints() - applyAttributes() + applyAttributes(attributes) } /// Does not support interface-builder / storyboards. @@ -84,8 +84,8 @@ extension BrazeContentCardUI { highlightable = card.clickAction != .none } - open override func applyAttributes() { - super.applyAttributes() + open override func applyAttributes(_ attributes: Attributes) { + super.applyAttributes(attributes) let padding = attributes.padding cardStackConstraints[0].constant = padding.left diff --git a/Sources/BrazeUI/Dependencies/UIKitExt.swift b/Sources/BrazeUI/Dependencies/UIKitExt.swift index 912cbe7010..e8a6256cbc 100644 --- a/Sources/BrazeUI/Dependencies/UIKitExt.swift +++ b/Sources/BrazeUI/Dependencies/UIKitExt.swift @@ -199,3 +199,14 @@ extension CGColor { } } + +extension UIGestureRecognizer { + + /// Cancels the gesture recognizer. + func cancel() { + guard isEnabled else { return } + isEnabled = false + isEnabled = true + } + +} diff --git a/Sources/BrazeUI/InAppMessageUI/InAppMessageViewAttributes.swift b/Sources/BrazeUI/InAppMessageUI/InAppMessageViewAttributes.swift index ca026e9846..a46f8de2bc 100644 --- a/Sources/BrazeUI/InAppMessageUI/InAppMessageViewAttributes.swift +++ b/Sources/BrazeUI/InAppMessageUI/InAppMessageViewAttributes.swift @@ -16,7 +16,7 @@ extension BrazeInAppMessageUI { return slideup } set { - guard let slideup = newValue else { return } + guard let slideup = newValue, case .slideup = self else { return } self = .slideup(slideup) } } @@ -27,7 +27,7 @@ extension BrazeInAppMessageUI { return modal } set { - guard let modal = newValue else { return } + guard let modal = newValue, case .modal = self else { return } self = .modal(modal) } } @@ -38,7 +38,7 @@ extension BrazeInAppMessageUI { return modalImage } set { - guard let modalImage = newValue else { return } + guard let modalImage = newValue, case .modalImage = self else { return } self = .modalImage(modalImage) } } @@ -49,7 +49,7 @@ extension BrazeInAppMessageUI { return full } set { - guard let full = newValue else { return } + guard let full = newValue, case .full = self else { return } self = .full(full) } } @@ -60,7 +60,7 @@ extension BrazeInAppMessageUI { return fullImage } set { - guard let fullImage = newValue else { return } + guard let fullImage = newValue, case .fullImage = self else { return } self = .fullImage(fullImage) } } @@ -71,7 +71,7 @@ extension BrazeInAppMessageUI { return html } set { - guard let html = newValue else { return } + guard let html = newValue, case .html = self else { return } self = .html(html) } } diff --git a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullImageView.swift b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullImageView.swift index eee5bf32b0..ffb47d3776 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullImageView.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullImageView.swift @@ -32,6 +32,14 @@ extension BrazeInAppMessageUI { /// The content view corner radius. public var cornerRadius = 8.0 + /// The content view corner curve. + @available(iOS 13.0, *) + public var cornerCurve: CALayerCornerCurve { + get { CALayerCornerCurve(rawValue: _cornerCurve) } + set { _cornerCurve = newValue.rawValue } + } + var _cornerCurve: String = "circular" + /// The content view shadow. public var shadow: Shadow? = Shadow.inAppMessage @@ -56,6 +64,9 @@ extension BrazeInAppMessageUI { /// view's background. public var dismissOnBackgroundTap = false + /// The buttons attributes. + public var buttonsAttributes = ButtonView.Attributes.defaults + /// Specify the preferred display mode. See /// ``BrazeInAppMessageUI/FullImageView/DisplayMode-swift.enum``. public var preferredDisplayMode: DisplayMode? @@ -150,19 +161,23 @@ extension BrazeInAppMessageUI { public init( message: Braze.InAppMessage.FullImage, attributes: Attributes = .defaults, - gifViewProvider: GIFViewProvider = .nonAnimating, + gifViewProvider: GIFViewProvider = .shared, presented: Bool = false ) { var modalImageAttrs = ModalImageView.Attributes() modalImageAttrs.margin = attributes.margin modalImageAttrs.padding = attributes.padding modalImageAttrs.cornerRadius = attributes.cornerRadius + if #available(iOS 13.0, *) { + modalImageAttrs.cornerCurve = attributes.cornerCurve + } modalImageAttrs.shadow = attributes.shadow modalImageAttrs.minWidth = attributes.minWidth modalImageAttrs.maxWidth = attributes.maxWidth modalImageAttrs.maxHeight = attributes.maxHeight modalImageAttrs.scrollLargeImages = attributes.scrollLargeImages modalImageAttrs.dismissOnBackgroundTap = attributes.dismissOnBackgroundTap + modalImageAttrs.buttonsAttributes = attributes.buttonsAttributes modalImageAttrs.onPresent = { attributes.onPresent?($0 as! FullImageView) } modalImageAttrs.onLayout = { attributes.onLayout?($0 as! FullImageView) } modalImageAttrs.onTheme = { attributes.onTheme?($0 as! FullImageView) } diff --git a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullView.swift b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullView.swift index 1ed5711a0b..95d3486aac 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullView.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIFullView.swift @@ -43,6 +43,14 @@ extension BrazeInAppMessageUI { /// The content view corner radius. public var cornerRadius = 8.0 + /// The content view corner curve. + @available(iOS 13.0, *) + public var cornerCurve: CALayerCornerCurve { + get { CALayerCornerCurve(rawValue: _cornerCurve) } + set { _cornerCurve = newValue.rawValue } + } + var _cornerCurve: String = "circular" + /// The content view shadow. public var shadow: Shadow? = Shadow.inAppMessage @@ -63,6 +71,9 @@ extension BrazeInAppMessageUI { /// view's background. public var dismissOnBackgroundTap = false + /// The buttons attributes. + public var buttonsAttributes = ButtonView.Attributes.defaults + /// Specify the preferred display mode. See /// ``BrazeInAppMessageUI/FullView/DisplayMode-swift.enum``. public var preferredDisplayMode: DisplayMode? @@ -192,7 +203,7 @@ extension BrazeInAppMessageUI { public init( message: Braze.InAppMessage.Full, attributes: Attributes = .defaults, - gifViewProvider: GIFViewProvider = .nonAnimating, + gifViewProvider: GIFViewProvider = .shared, presented: Bool = false ) { var modalViewAttrs = ModalView.Attributes() @@ -203,11 +214,15 @@ extension BrazeInAppMessageUI { modalViewAttrs.headerFont = attributes.headerFont modalViewAttrs.messageFont = attributes.messageFont modalViewAttrs.cornerRadius = attributes.cornerRadius + if #available(iOS 13.0, *) { + modalViewAttrs.cornerCurve = attributes.cornerCurve + } modalViewAttrs.shadow = attributes.shadow modalViewAttrs.minWidth = attributes.minWidth modalViewAttrs.maxWidth = attributes.maxWidth modalViewAttrs.maxHeight = attributes.maxHeight modalViewAttrs.dismissOnBackgroundTap = attributes.dismissOnBackgroundTap + modalViewAttrs.buttonsAttributes = attributes.buttonsAttributes modalViewAttrs.onPresent = { attributes.onPresent?($0 as! FullView) } modalViewAttrs.onLayout = { attributes.onLayout?($0 as! FullView) } modalViewAttrs.onTheme = { attributes.onTheme?($0 as! FullView) } diff --git a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalImageView.swift b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalImageView.swift index 77039ce3d5..840f986228 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalImageView.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalImageView.swift @@ -32,6 +32,14 @@ extension BrazeInAppMessageUI { /// The content view corner radius. public var cornerRadius = 8.0 + /// The content view corner curve. + @available(iOS 13.0, *) + public var cornerCurve: CALayerCornerCurve { + get { CALayerCornerCurve(rawValue: _cornerCurve) } + set { _cornerCurve = newValue.rawValue } + } + var _cornerCurve: String = "circular" + /// The content view shadow. public var shadow: Shadow? = Shadow.inAppMessage @@ -56,6 +64,9 @@ extension BrazeInAppMessageUI { /// view's background. public var dismissOnBackgroundTap = false + /// The buttons attributes. + public var buttonsAttributes = ButtonView.Attributes.defaults + /// Closure allowing further customization, executed when the view is about to be presented. public var onPresent: ((ModalImageView) -> Void)? @@ -88,6 +99,12 @@ extension BrazeInAppMessageUI { shadowView.layer.cornerRadius = attributes.cornerRadius contentView.layer.cornerRadius = attributes.cornerRadius + // Corner curve + if #available(iOS 13.0, *) { + shadowView.layer.cornerCurve = attributes.cornerCurve + contentView.layer.cornerCurve = attributes.cornerCurve + } + // Shadow shadowView.shadow = attributes.shadow @@ -107,6 +124,9 @@ extension BrazeInAppMessageUI { // User interactions tapBackgroundGesture.isEnabled = attributes.dismissOnBackgroundTap + // Buttons + buttons.forEach { $0.attributes = attributes.buttonsAttributes } + setNeedsLayout() layoutIfNeeded() } @@ -147,6 +167,13 @@ extension BrazeInAppMessageUI { return container }() + public var buttons: [ButtonView] { + buttonsContainer?.stack.arrangedSubviews.compactMap { + ($0 as? ButtonView) + ?? $0.bfsSubviews.lazy.compactMap { $0 as? ButtonView }.first { _ in true } + } ?? [] + } + public lazy var closeButton: UIButton = { let button = UIButton(type: .custom) button.setTitle("✕", for: .normal) @@ -177,7 +204,7 @@ extension BrazeInAppMessageUI { public init( message: Braze.InAppMessage.ModalImage, attributes: Attributes = .defaults, - gifViewProvider: GIFViewProvider = .nonAnimating, + gifViewProvider: GIFViewProvider = .shared, presented: Bool = false ) { self.message = message diff --git a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalView.swift b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalView.swift index d354d7573c..297155c21c 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalView.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUIModalView.swift @@ -44,6 +44,14 @@ extension BrazeInAppMessageUI { /// The content view corner radius. public var cornerRadius = 8.0 + /// The content view corner curve. + @available(iOS 13.0, *) + public var cornerCurve: CALayerCornerCurve { + get { CALayerCornerCurve(rawValue: _cornerCurve) } + set { _cornerCurve = newValue.rawValue } + } + var _cornerCurve: String = "circular" + /// The content view shadow. public var shadow: Shadow? = Shadow.inAppMessage @@ -64,6 +72,9 @@ extension BrazeInAppMessageUI { /// view's background. public var dismissOnBackgroundTap = false + /// The buttons attributes. + public var buttonsAttributes = ButtonView.Attributes.defaults + /// Closure allowing further customization, executed when the view is about to be presented. public var onPresent: ((ModalView) -> Void)? @@ -128,6 +139,12 @@ extension BrazeInAppMessageUI { shadowView.layer.cornerRadius = attributes.cornerRadius contentView.layer.cornerRadius = attributes.cornerRadius + // Corner curve + if #available(iOS 13.0, *) { + shadowView.layer.cornerCurve = attributes.cornerCurve + contentView.layer.cornerCurve = attributes.cornerCurve + } + // Shadow shadowView.shadow = attributes.shadow @@ -141,6 +158,9 @@ extension BrazeInAppMessageUI { // User interactions tapBackgroundGesture.isEnabled = attributes.dismissOnBackgroundTap + // Buttons + buttons.forEach { $0.attributes = attributes.buttonsAttributes } + setNeedsLayout() layoutIfNeeded() } @@ -221,6 +241,13 @@ extension BrazeInAppMessageUI { return container }() + public var buttons: [ButtonView] { + buttonsContainer?.stack.arrangedSubviews.compactMap { + ($0 as? ButtonView) + ?? $0.bfsSubviews.lazy.compactMap { $0 as? ButtonView }.first { _ in true } + } ?? [] + } + public lazy var shadowView = ShadowView(.inAppMessage) public lazy var contentView: StackView = { @@ -257,7 +284,7 @@ extension BrazeInAppMessageUI { public init( message: Braze.InAppMessage.Modal, attributes: Attributes = .defaults, - gifViewProvider: GIFViewProvider = .nonAnimating, + gifViewProvider: GIFViewProvider = .shared, presented: Bool = false ) { self.message = message diff --git a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUISlideupView.swift b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUISlideupView.swift index 3ae27d0ba7..99b0be40b4 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUISlideupView.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageUISlideupView.swift @@ -41,12 +41,34 @@ extension BrazeInAppMessageUI { /// The image size. public var imageSize = CGSize(width: 50, height: 50) + /// The image view corner radius. + public var imageCornerRadius = 0.0 + + /// The image view corner curve. + @available(iOS 13.0, *) + public var imageCornerCurve: CALayerCornerCurve { + get { CALayerCornerCurve(rawValue: _imageCornerCurve) } + set { _imageCornerCurve = newValue.rawValue } + } + var _imageCornerCurve: String = "circular" + /// The chevron visibility. public var chevronVisibility: ChevronVisibility = .auto /// The content view corner radius. public var cornerRadius = 15.0 + /// The content view corner curve. + @available(iOS 13.0, *) + public var cornerCurve: CALayerCornerCurve { + get { CALayerCornerCurve(rawValue: _cornerCurve) } + set { _cornerCurve = newValue.rawValue } + } + var _cornerCurve: String = "circular" + + /// Specifies whether the slideup can be dismissed by the user. + public var dismissible = true + /// The content view shadow. public var shadow: Shadow? = .inAppMessage @@ -111,6 +133,10 @@ extension BrazeInAppMessageUI { // Fonts messageLabel.font = attributes.font + // Image size + imageWidthConstraint?.constant = attributes.imageSize.width + imageHeightConstraint?.constant = attributes.imageSize.height + // Chevron chevronView.isHidden = attributes.chevronVisibility == .hidden @@ -120,6 +146,12 @@ extension BrazeInAppMessageUI { shadowView.layer.cornerRadius = attributes.cornerRadius contentView.layer.cornerRadius = attributes.cornerRadius + // Corner curve + if #available(iOS 13.0, *) { + shadowView.layer.cornerCurve = attributes.cornerCurve + contentView.layer.cornerCurve = attributes.cornerCurve + } + // Shadow shadowView.shadow = attributes.shadow @@ -127,6 +159,16 @@ extension BrazeInAppMessageUI { maxWidthConstraints.forEach { $0.constant = attributes.maxWidth } minHeightConstraint.constant = attributes.minHeight + // Image + if case .image = message.graphic { + graphicView?.layer.cornerRadius = attributes.imageCornerRadius + } else { + graphicView?.layer.cornerRadius = 0 + } + if #available(iOS 13.0, *) { + graphicView?.layer.cornerCurve = attributes.imageCornerCurve + } + setNeedsLayout() layoutIfNeeded() } @@ -153,6 +195,7 @@ extension BrazeInAppMessageUI { case .image(let url): let imageView = self.gifViewProvider.view(url) imageView.contentMode = .scaleAspectFit + imageView.layer.masksToBounds = true return imageView default: return nil @@ -207,7 +250,7 @@ extension BrazeInAppMessageUI { public init( message: Braze.InAppMessage.Slideup, attributes: Attributes = .defaults, - gifViewProvider: GIFViewProvider = .nonAnimating, + gifViewProvider: GIFViewProvider = .shared, presented: Bool = false ) { self.message = message @@ -414,17 +457,19 @@ extension BrazeInAppMessageUI { @objc func pan(_ gesture: UIPanGestureRecognizer) { guard let superview = gesture.view?.superview else { return } + let dismissible = attributes.dismissible var dy = gesture.translation(in: superview).y switch gesture.state { case .changed: - if abs(dy) >= 5 { pressGesture.isEnabled = false } + if abs(dy) >= 5 { pressGesture.cancel() } switch message.slideFrom { case .top where dy > 0: dy = dy * 0.095 outerYConstraint.constant = dy innerYConstraint.constant = 0 case .top where dy <= 0: + if !dismissible { dy = dy * 0.095 } outerYConstraint.constant = 0 innerYConstraint.constant = dy case .bottom where dy < 0: @@ -432,19 +477,19 @@ extension BrazeInAppMessageUI { outerYConstraint.constant = dy innerYConstraint.constant = 0 case .bottom where dy >= 0: + if !dismissible { dy = dy * 0.095 } outerYConstraint.constant = 0 innerYConstraint.constant = dy default: break } case .ended: - pressGesture.isEnabled = true let vy = gesture.velocity(in: superview).y switch message.slideFrom { - case .top where vy <= -60 || dy < -25: + case .top where (vy <= -60 || dy < -25) && dismissible: dismiss() - case .bottom where vy >= 60 || dy > 25: + case .bottom where (vy >= 60 || dy > 25) && dismissible: dismiss() default: outerYConstraint.constant = 0 @@ -461,11 +506,21 @@ extension BrazeInAppMessageUI { @objc func press(_ gesture: UILongPressGestureRecognizer) { - guard gesture.view != nil else { return } + guard let gestureView = gesture.view else { return } + let hitView = gestureView.hitTest(gesture.location(in: gestureView), with: nil) switch gesture.state { - case .began, .changed: + case .began: + if hitView is UIControl { + gesture.cancel() + return + } highlighted = true + case .changed: + guard hitView?.isDescendant(of: gestureView) == true else { + gesture.cancel() + return + } case .ended: highlighted = false logClick() diff --git a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageView.swift b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageView.swift index dcb0c1be03..43dda0cb09 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageView.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/InAppMessageView.swift @@ -186,3 +186,42 @@ extension InAppMessageView { } } + +extension InAppMessageView { + + /// The view unwrapped as a `SlideupView`. + public var slideup: BrazeInAppMessageUI.SlideupView? { + self as? BrazeInAppMessageUI.SlideupView + } + + /// The view unwrapped as a `ModalView`. + public var modal: BrazeInAppMessageUI.ModalView? { + self as? BrazeInAppMessageUI.ModalView + } + + /// The view unwrapped as a `ModalImageView`. + public var modalImage: BrazeInAppMessageUI.ModalImageView? { + self as? BrazeInAppMessageUI.ModalImageView + } + + /// The view unwrapped as a `FullView`. + public var full: BrazeInAppMessageUI.FullView? { + self as? BrazeInAppMessageUI.FullView + } + + /// The view unwrapped as a `FullImageView`. + public var fullImage: BrazeInAppMessageUI.FullImageView? { + self as? BrazeInAppMessageUI.FullImageView + } + + /// The view unwrapped as a `HtmlView`. + public var html: BrazeInAppMessageUI.HtmlView? { + self as? BrazeInAppMessageUI.HtmlView + } + + /// The view unwrapped as a `ControlView`. + public var control: BrazeInAppMessageUI.ControlView? { + self as? BrazeInAppMessageUI.ControlView + } + +} diff --git a/Sources/BrazeUI/InAppMessageUI/Views/Misc/ButtonView.swift b/Sources/BrazeUI/InAppMessageUI/Views/Misc/ButtonView.swift index 038246202d..e45071815f 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/Misc/ButtonView.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/Misc/ButtonView.swift @@ -15,7 +15,7 @@ extension BrazeInAppMessageUI { /// - attributes: A high-level customization struct. public init( button: Braze.InAppMessage.Button, - attributes: Attributes = .init() + attributes: Attributes = .defaults ) { self.button = button self.attributes = attributes @@ -77,8 +77,11 @@ extension BrazeInAppMessageUI { /// Default: `44pt.` public var maxHeight: Double = 44 - /// Default initializer - public init() {} + /// The defaults button view attributes. + /// + /// Modify this value directly to apply the customizations to all in-app message buttons + /// presented by the SDK. + public static var defaults = Self() } /// The high-level customization struct. diff --git a/Sources/BrazeUI/InAppMessageUI/Views/Misc/StackView+ButtonViews.swift b/Sources/BrazeUI/InAppMessageUI/Views/Misc/StackView+ButtonViews.swift index 7414e6e7ba..345cc52337 100644 --- a/Sources/BrazeUI/InAppMessageUI/Views/Misc/StackView+ButtonViews.swift +++ b/Sources/BrazeUI/InAppMessageUI/Views/Misc/StackView+ButtonViews.swift @@ -14,6 +14,7 @@ extension BrazeInAppMessageUI.StackView { /// - context: An optional context, used to log and process button clicks. public convenience init?( buttons: [Braze.InAppMessage.Button], + attributes: BrazeInAppMessageUI.ButtonView.Attributes = .defaults, onClick: @escaping (Braze.InAppMessage.Button) -> Void ) { if buttons.isEmpty { return nil }