diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml index 48e2d4c9..7e50e034 100644 --- a/.github/ISSUE_TEMPLATE/bug.yml +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -1,7 +1,7 @@ name: 🐞 Bug report description: File a Bug Report for unexpected or incorrect SDK Behavior title: '[Bug]: ' -labels: ["bug","triage"] +labels: ["bug"] body: - type: markdown attributes: @@ -37,7 +37,7 @@ body: id: xcode_version attributes: label: Xcode Version - placeholder: ex. Xcode 13.2 + placeholder: ex. Xcode 10.1 validations: required: true - type: dropdown diff --git a/.github/ISSUE_TEMPLATE/feature.yml b/.github/ISSUE_TEMPLATE/feature.yml index 3d8f79dc..0def041a 100644 --- a/.github/ISSUE_TEMPLATE/feature.yml +++ b/.github/ISSUE_TEMPLATE/feature.yml @@ -1,7 +1,7 @@ name: ✅ Feature Request description: Request New SDK Features title: '[Feature]: ' -labels: ["feature-request","triage"] +labels: ["feature-request"] body: - type: markdown attributes: diff --git a/Appboy-iOS-SDK.podspec b/Appboy-iOS-SDK.podspec index 83f609bb..9d0e500b 100644 --- a/Appboy-iOS-SDK.podspec +++ b/Appboy-iOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Appboy-iOS-SDK" - s.version = "4.4.2" + s.version = "4.4.3" s.summary = "This is the Braze iOS SDK for Mobile Marketing Automation" s.homepage = "http://www.braze.com" s.license = { :type => 'Commercial', :text => 'Please refer to https://github.com/Appboy/appboy-ios-sdk/blob/master/LICENSE'} diff --git a/Appboy-tvOS-SDK.podspec b/Appboy-tvOS-SDK.podspec index 3e40fe1d..410a3b08 100644 --- a/Appboy-tvOS-SDK.podspec +++ b/Appboy-tvOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Appboy-tvOS-SDK" - s.version = "4.3.2" + s.version = "4.4.3" s.summary = "This is the Braze tvOS SDK for Mobile Marketing Automation" s.homepage = "http://www.braze.com" s.license = { :type => 'Commercial', :text => 'Please refer to https://github.com/Appboy/appboy-ios-sdk/blob/master/LICENSE'} diff --git a/AppboyKit/Appboy.bundle/Info.plist b/AppboyKit/Appboy.bundle/Info.plist index 439a09db..d71b5c65 100644 Binary files a/AppboyKit/Appboy.bundle/Info.plist and b/AppboyKit/Appboy.bundle/Info.plist differ diff --git a/AppboyKit/include/ABKInAppMessage.h b/AppboyKit/include/ABKInAppMessage.h index e9b2fd0b..f92ea13f 100644 --- a/AppboyKit/include/ABKInAppMessage.h +++ b/AppboyKit/include/ABKInAppMessage.h @@ -58,10 +58,10 @@ typedef NS_ENUM(NSInteger, ABKInAppMessageOrientation) { * Default icon and in-app message button background colors. * These are used in the in-app message view controllers. */ -static CGFloat const RedValueOfDefaultIconColorAndButtonBgColor = 0.0f; -static CGFloat const GreenValueOfDefaultIconColorAndButtonBgColor = 115.0f / 255.0f; -static CGFloat const BlueValueOfDefaultIconColorAndButtonBgColor = 213.0f / 255.0f; -static CGFloat const AlphaValueOfDefaultIconColorAndButtonBgColor = 1.0f; +static CGFloat const RedValueOfDefaultIconColorAndButtonBgColor = (CGFloat)0.0f; +static CGFloat const GreenValueOfDefaultIconColorAndButtonBgColor = (CGFloat)(115.0f / 255.0f); +static CGFloat const BlueValueOfDefaultIconColorAndButtonBgColor = (CGFloat)(213.0f / 255.0f); +static CGFloat const AlphaValueOfDefaultIconColorAndButtonBgColor = (CGFloat)1.0f; /* * Braze Public API: ABKInAppMessage diff --git a/AppboyKit/include/Appboy.h b/AppboyKit/include/Appboy.h index 945a5fa1..5f7d9c84 100644 --- a/AppboyKit/include/Appboy.h +++ b/AppboyKit/include/Appboy.h @@ -15,7 +15,7 @@ #import "ABKSdkMetadata.h" #ifndef APPBOY_SDK_VERSION -#define APPBOY_SDK_VERSION @"4.4.2" +#define APPBOY_SDK_VERSION @"4.4.3" #endif #if !TARGET_OS_TV diff --git a/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.h b/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.h index d0fab0bd..42c5728b 100644 --- a/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.h +++ b/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.h @@ -13,6 +13,8 @@ @property (strong, nonatomic) IBOutlet UILabel *descriptionLabel; @property (strong, nonatomic) IBOutlet UILabel *linkLabel; +@property (nonatomic, assign) CGFloat padding; + - (void)applyCard:(ABKCaptionedImageContentCard *)captionedImageCard; @end diff --git a/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.m b/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.m index 822e691b..073b3207 100644 --- a/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.m +++ b/AppboyUI/ABKContentCards/ViewControllers/Cells/ABKCaptionedImageContentCardCell.m @@ -125,6 +125,11 @@ - (UILabel *)linkLabel { #pragma mark - SetUp +- (void)setUp { + [super setUp]; + self.padding = 25; +} + - (void)setUpUI { [super setUpUI]; @@ -151,7 +156,7 @@ - (void)setUpUI { self.imageRatioConstraint, // Pin Image - [self.pinImageView.topAnchor constraintEqualToAnchor:self.captionedImageView.bottomAnchor], + [self.pinImageView.topAnchor constraintEqualToAnchor:self.captionedImageView.topAnchor], [self.pinImageView.trailingAnchor constraintEqualToAnchor:self.rootView.trailingAnchor], [self.pinImageView.widthAnchor constraintEqualToConstant:20], [self.pinImageView.heightAnchor constraintEqualToConstant:20], @@ -160,9 +165,9 @@ - (void)setUpUI { [self.titleLabel.topAnchor constraintEqualToAnchor:self.captionedImageView.bottomAnchor constant:17], [self.titleLabel.leadingAnchor constraintEqualToAnchor:self.rootView.leadingAnchor - constant:25], + constant:self.padding], [self.titleLabel.trailingAnchor constraintEqualToAnchor:self.rootView.trailingAnchor - constant:-25], + constant:-self.padding], // Description [self.descriptionLabel.topAnchor constraintEqualToAnchor:self.titleLabel.bottomAnchor @@ -178,14 +183,14 @@ - (void)setUpUI { self.descriptionConstraints = @[ [self.descriptionLabel.bottomAnchor constraintEqualToAnchor:self.rootView.bottomAnchor - constant:-25] + constant:-self.padding] ]; self.linkConstraints = @[ [self.linkLabel.topAnchor constraintEqualToAnchor:self.descriptionLabel.bottomAnchor constant:8], [self.linkLabel.bottomAnchor constraintEqualToAnchor:self.rootView.bottomAnchor - constant:-25] + constant:-self.padding] ]; } diff --git a/AppboyUI/ABKInAppMessage/ViewControllers/ABKInAppMessageWindowController.m b/AppboyUI/ABKInAppMessage/ViewControllers/ABKInAppMessageWindowController.m index c7730cc1..a7dbe8a3 100644 --- a/AppboyUI/ABKInAppMessage/ViewControllers/ABKInAppMessageWindowController.m +++ b/AppboyUI/ABKInAppMessage/ViewControllers/ABKInAppMessageWindowController.m @@ -23,6 +23,8 @@ @interface ABKInAppMessageWindowController () @property (nonatomic, assign) NSInteger keyWindowRetryCount; +@property (nonatomic, assign) BOOL isRemovingWindow; + @end @implementation ABKInAppMessageWindowController @@ -41,6 +43,7 @@ - (instancetype)initWithInAppMessage:(ABKInAppMessage *)inAppMessage _inAppMessageIsTapped = NO; _clickedButtonId = -1; _keyWindowRetryCount = 0; + _isRemovingWindow = NO; } return self; } @@ -281,6 +284,10 @@ - (void)handleWindowDidBecomeKeyNotification:(NSNotification *)notification { selector:@selector(resetKeyWindowRetryCount) object:nil]; + // Skip if this in-app message is already removing the window + if (self.isRemovingWindow) { + return; + } // Skip for any in-app message window if ([window isKindOfClass:[ABKInAppMessageWindow class]]) { return; @@ -376,10 +383,18 @@ - (void)hideInAppMessageViewWithAnimation:(BOOL)withAnimation } - (void)hideInAppMessageWindow { + if (self.isRemovingWindow) { + return; + } + self.isRemovingWindow = YES; + [self.slideAwayTimer invalidate]; self.slideAwayTimer = nil; self.inAppMessageWindow.rootViewController = nil; + if (@available(iOS 13.0, *)) { + self.inAppMessageWindow.windowScene = nil; + } self.inAppMessageWindow = nil; [[NSNotificationCenter defaultCenter] postNotificationName:ABKNotificationInAppMessageWindowDismissed object:self diff --git a/AppboyUI/ABKNewsFeed/ViewControllers/Cells/ABKNFBaseCardCell.h b/AppboyUI/ABKNewsFeed/ViewControllers/Cells/ABKNFBaseCardCell.h index 422fae09..f571e08f 100644 --- a/AppboyUI/ABKNewsFeed/ViewControllers/Cells/ABKNFBaseCardCell.h +++ b/AppboyUI/ABKNewsFeed/ViewControllers/Cells/ABKNFBaseCardCell.h @@ -1,5 +1,4 @@ #import -#import #import "ABKCard.h" @protocol ABKBaseNewsFeedCellDelegate diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b10bbaa..b5f8a58e 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## 4.4.3 + +##### Fixed +- Fixes an issue introduced in `4.4.0` which prevented custom events or purchases with an empty dictionary of properties from being logged. +- Improves handling of `ABKInAppMessageWindow`'s dismissal to promptly remove it from the view hierarchy. +- Fixes the position of the pinned indicator for _Captioned Image_ Content Cards when using the default UI. +- Fixes an issue introduced in `4.3.2` and limited to users of `Appboy-tvOS-SDK`, which prevented custom events with properties or purchases with properties from being logged. + +##### Added +- Adds a `padding` property to `ABKCaptionedImageContentCardCell` to support modifying the default value. + ## 4.4.2 ##### Fixed diff --git a/Example/Stopwatch.xcodeproj/project.pbxproj b/Example/Stopwatch.xcodeproj/project.pbxproj index c098f279..e640f164 100644 --- a/Example/Stopwatch.xcodeproj/project.pbxproj +++ b/Example/Stopwatch.xcodeproj/project.pbxproj @@ -1301,7 +1301,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "Apple Development"; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 4.4.2; + CURRENT_PROJECT_VERSION = 4.4.3; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; @@ -1357,7 +1357,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CODE_SIGN_IDENTITY = "Apple Distribution"; COPY_PHASE_STRIP = YES; - CURRENT_PROJECT_VERSION = 4.4.2; + CURRENT_PROJECT_VERSION = 4.4.3; ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; diff --git a/Example/Stopwatch/Supporting Files/Info.plist b/Example/Stopwatch/Supporting Files/Info.plist index f259c3ec..1ec09e14 100644 --- a/Example/Stopwatch/Supporting Files/Info.plist +++ b/Example/Stopwatch/Supporting Files/Info.plist @@ -5,7 +5,7 @@ CFBundleShortVersionString - 4.4.2 + 4.4.3 CFBundleVersion 1 CFBundleDevelopmentRegion diff --git a/Example/tvOS_TVML_Stopwatch/AppboyBridge.m b/Example/tvOS_TVML_Stopwatch/AppboyBridge.m index 317aedf5..e693cc12 100644 --- a/Example/tvOS_TVML_Stopwatch/AppboyBridge.m +++ b/Example/tvOS_TVML_Stopwatch/AppboyBridge.m @@ -11,7 +11,11 @@ - (void)changeUser:(NSString *)userId { [[Appboy sharedInstance] changeUser:[userId stringByAppendingString:[NSString stringWithFormat:@"%.0f", [[NSDate date] timeIntervalSince1970]]]]; } - (void)logCustomEventsAndPurchases { - [[Appboy sharedInstance] logCustomEvent:@"tvOSCustomEvent"]; + [[Appboy sharedInstance] logCustomEvent:@"tvOS_TVML_Event_noProps"]; + [[Appboy sharedInstance] logCustomEvent:@"tvOS_TVML_Event" withProperties:@{@"tvOS_TVML_EventPKey" : @123}]; + + [[Appboy sharedInstance] logPurchase:@"tvOS_TVML_Purchase_noProps" inCurrency:@"USD" atPrice:[[NSDecimalNumber alloc] initWithString:@"0.11"] withQuantity:1]; + [[Appboy sharedInstance] logPurchase:@"tvOS_TVML_Purchase" inCurrency:@"USD" atPrice:[[NSDecimalNumber alloc] initWithString:@"0.88"] withQuantity:2 andProperties:@{@"tvOS_TVML_PurchasePKey" : @456}]; } - (void)logAttributes { [[Appboy sharedInstance].user setLastName:@"West"]; diff --git a/HelloSwift/HelloSwift.xcodeproj/project.pbxproj b/HelloSwift/HelloSwift.xcodeproj/project.pbxproj index 983608dd..b2d536dc 100644 --- a/HelloSwift/HelloSwift.xcodeproj/project.pbxproj +++ b/HelloSwift/HelloSwift.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 132CC5A12375E3FE007F3576 /* NotificationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 132CC5A02375E3FE007F3576 /* NotificationViewController.swift */; }; 132CC5A42375E3FE007F3576 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 132CC5A22375E3FE007F3576 /* MainInterface.storyboard */; }; 132CC5A82375E3FE007F3576 /* HelloSwiftNotificationContentExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 132CC59A2375E3FE007F3576 /* HelloSwiftNotificationContentExtension.appex */; platformFilter = ios; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 1648E673DE4FC79F2F7458E7 /* Pods_HelloSwiftTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ED6E62D212803047175AAD3F /* Pods_HelloSwiftTests.framework */; }; 4E1644F21A04170E0007CA5C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1644F11A04170E0007CA5C /* AppDelegate.swift */; }; 4E1644F41A04170E0007CA5C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E1644F31A04170E0007CA5C /* ViewController.swift */; }; 4E1644F71A04170E0007CA5C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4E1644F51A04170E0007CA5C /* Main.storyboard */; }; @@ -28,6 +29,7 @@ C1E6FB391D83682F0084F8CE /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C1E6FB331D835D5C0084F8CE /* NotificationCenter.framework */; platformFilter = ios; }; D7999436856B456BD02675FF /* Pods_HelloSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0174F70FAE31265EA00C5A40 /* Pods_HelloSwift.framework */; }; E92DA257F78D3E451990EF1A /* Pods_tvOS_HelloSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E479D3C5CCE693F4F3D1B38 /* Pods_tvOS_HelloSwift.framework */; }; + F58337B227EBBC220084DED0 /* AppboyPushUnitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F58337B127EBBC220084DED0 /* AppboyPushUnitTests.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -59,6 +61,13 @@ remoteGlobalIDString = C06D5DDA1ED367C100087F72; remoteInfo = HelloSwiftNotificationExtension; }; + F58337AC27EBBBEA0084DED0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 4E1644E41A04170E0007CA5C /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4E1644EB1A04170E0007CA5C; + remoteInfo = HelloSwift; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -97,6 +106,7 @@ 132CC5AC2375E478007F3576 /* HelloSwift-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "HelloSwift-Bridging-Header.h"; sourceTree = ""; }; 132CC5AD2375EE2A007F3576 /* HelloSwiftNotificationContentExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HelloSwiftNotificationContentExtension.entitlements; sourceTree = ""; }; 132CC5AF23760367007F3576 /* AppboyPushStory.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppboyPushStory.framework; path = "Pods/Appboy-Push-Story/Appboy-Push-Story/AppboyPushStory.framework"; sourceTree = ""; }; + 1FD4ECD188FC2DF8EBDE728E /* Pods-HelloSwiftTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloSwiftTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-HelloSwiftTests/Pods-HelloSwiftTests.release.xcconfig"; sourceTree = ""; }; 30019696A309065B62CBDEA5 /* Pods-HelloSwiftNotificationContentExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloSwiftNotificationContentExtension.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HelloSwiftNotificationContentExtension/Pods-HelloSwiftNotificationContentExtension.debug.xcconfig"; sourceTree = ""; }; 407829BB386E6374A89DC47A /* Pods_HelloSwiftNotificationContentExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HelloSwiftNotificationContentExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 446901049F7C1F60144D6DC2 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -127,8 +137,12 @@ C1E6FB321D835D230084F8CE /* HelloSwift.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HelloSwift.entitlements; sourceTree = ""; }; C1E6FB331D835D5C0084F8CE /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; CA3221C7D1BB492DAD146EE9 /* Pods-HelloSwift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloSwift.release.xcconfig"; path = "Pods/Target Support Files/Pods-HelloSwift/Pods-HelloSwift.release.xcconfig"; sourceTree = ""; }; + CEC27BBB5564D54CF4C5554D /* Pods-HelloSwiftTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloSwiftTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HelloSwiftTests/Pods-HelloSwiftTests.debug.xcconfig"; sourceTree = ""; }; D16084DD3DE533703D4D40BB /* Pods-HelloSwift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-HelloSwift.debug.xcconfig"; path = "Pods/Target Support Files/Pods-HelloSwift/Pods-HelloSwift.debug.xcconfig"; sourceTree = ""; }; D5C4C2AA26D59845000EBC35 /* HelloSwiftNotificationExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = HelloSwiftNotificationExtension.entitlements; sourceTree = ""; }; + ED6E62D212803047175AAD3F /* Pods_HelloSwiftTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_HelloSwiftTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F58337A827EBBBEA0084DED0 /* HelloSwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HelloSwiftTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F58337B127EBBC220084DED0 /* AppboyPushUnitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppboyPushUnitTests.m; sourceTree = ""; }; FD2DEB2A95BEB5EA28A525D0 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -181,6 +195,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F58337A527EBBBEA0084DED0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1648E673DE4FC79F2F7458E7 /* Pods_HelloSwiftTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -206,6 +228,8 @@ 5D4BB4C480BD4CB4BD68C25F /* Pods-tvOS_HelloSwift.release.xcconfig */, 30019696A309065B62CBDEA5 /* Pods-HelloSwiftNotificationContentExtension.debug.xcconfig */, BD6628B77F5C18792F6AC206 /* Pods-HelloSwiftNotificationContentExtension.release.xcconfig */, + CEC27BBB5564D54CF4C5554D /* Pods-HelloSwiftTests.debug.xcconfig */, + 1FD4ECD188FC2DF8EBDE728E /* Pods-HelloSwiftTests.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -217,6 +241,7 @@ C06D5DDC1ED367C200087F72 /* HelloSwiftNotificationExtension */, 7FE56AD72347F15B00A1AB59 /* tvOS_HelloSwift */, 132CC59F2375E3FE007F3576 /* HelloSwiftNotificationContentExtension */, + F58337A927EBBBEA0084DED0 /* HelloSwiftTests */, 4E1644ED1A04170E0007CA5C /* Products */, 1F2FA88B2578A653CA7CA976 /* Pods */, 5C274ADBE04DAF82D572D7B9 /* Frameworks */, @@ -232,6 +257,7 @@ 7FE56AE92347F15D00A1AB59 /* tvOS_HelloSwiftTests.xctest */, 7FE56AF42347F15D00A1AB59 /* tvOS_HelloSwiftUITests.xctest */, 132CC59A2375E3FE007F3576 /* HelloSwiftNotificationContentExtension.appex */, + F58337A827EBBBEA0084DED0 /* HelloSwiftTests.xctest */, ); name = Products; sourceTree = ""; @@ -270,6 +296,7 @@ 132CC59B2375E3FE007F3576 /* UserNotifications.framework */, 132CC59D2375E3FE007F3576 /* UserNotificationsUI.framework */, 407829BB386E6374A89DC47A /* Pods_HelloSwiftNotificationContentExtension.framework */, + ED6E62D212803047175AAD3F /* Pods_HelloSwiftTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -305,6 +332,14 @@ path = HelloSwiftNotificationExtension; sourceTree = ""; }; + F58337A927EBBBEA0084DED0 /* HelloSwiftTests */ = { + isa = PBXGroup; + children = ( + F58337B127EBBC220084DED0 /* AppboyPushUnitTests.m */, + ); + path = HelloSwiftTests; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -423,13 +458,33 @@ productReference = C06D5DDB1ED367C100087F72 /* HelloSwiftNotificationExtension.appex */; productType = "com.apple.product-type.app-extension"; }; + F58337A727EBBBEA0084DED0 /* HelloSwiftTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F58337B027EBBBEA0084DED0 /* Build configuration list for PBXNativeTarget "HelloSwiftTests" */; + buildPhases = ( + 0B9409C130706EAAFF2FC4EF /* [CP] Check Pods Manifest.lock */, + F58337A427EBBBEA0084DED0 /* Sources */, + F58337A527EBBBEA0084DED0 /* Frameworks */, + F58337A627EBBBEA0084DED0 /* Resources */, + 01E7B9DD2EC51B209EC11747 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + F58337AD27EBBBEA0084DED0 /* PBXTargetDependency */, + ); + name = HelloSwiftTests; + productName = HelloSwiftTests; + productReference = F58337A827EBBBEA0084DED0 /* HelloSwiftTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 4E1644E41A04170E0007CA5C /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1110; + LastSwiftUpdateCheck = 1320; LastUpgradeCheck = 0900; ORGANIZATIONNAME = Appboy; TargetAttributes = { @@ -465,6 +520,11 @@ DevelopmentTeam = 5GLZKGNWQ3; LastSwiftMigration = 0900; }; + F58337A727EBBBEA0084DED0 = { + CreatedOnToolsVersion = 13.2.1; + LastSwiftMigration = 1320; + TestTargetID = 4E1644EB1A04170E0007CA5C; + }; }; }; buildConfigurationList = 4E1644E71A04170E0007CA5C /* Build configuration list for PBXProject "HelloSwift" */; @@ -487,6 +547,7 @@ 7FE56AE82347F15D00A1AB59 /* tvOS_HelloSwiftTests */, 7FE56AF32347F15D00A1AB59 /* tvOS_HelloSwiftUITests */, 132CC5992375E3FE007F3576 /* HelloSwiftNotificationContentExtension */, + F58337A727EBBBEA0084DED0 /* HelloSwiftTests */, ); }; /* End PBXProject section */ @@ -541,9 +602,56 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F58337A627EBBBEA0084DED0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 01E7B9DD2EC51B209EC11747 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-HelloSwiftTests/Pods-HelloSwiftTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/OCMock/OCMock.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OCMock.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-HelloSwiftTests/Pods-HelloSwiftTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 0B9409C130706EAAFF2FC4EF /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-HelloSwiftTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 18FD65456D3D5BB5F9C189DD /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -731,6 +839,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F58337A427EBBBEA0084DED0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F58337B227EBBC220084DED0 /* AppboyPushUnitTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -755,6 +871,11 @@ target = C06D5DDA1ED367C100087F72 /* HelloSwiftNotificationExtension */; targetProxy = C06D5DE01ED367C200087F72 /* PBXContainerItemProxy */; }; + F58337AD27EBBBEA0084DED0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4E1644EB1A04170E0007CA5C /* HelloSwift */; + targetProxy = F58337AC27EBBBEA0084DED0 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ @@ -1320,6 +1441,86 @@ }; name = Release; }; + F58337AE27EBBBEA0084DED0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CEC27BBB5564D54CF4C5554D /* Pods-HelloSwiftTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = 5GLZKGNWQ3; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.appboy.HelloSwiftTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloSwift.app/HelloSwift"; + }; + name = Debug; + }; + F58337AF27EBBBEA0084DED0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1FD4ECD188FC2DF8EBDE728E /* Pods-HelloSwiftTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = 5GLZKGNWQ3; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.appboy.HelloSwiftTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/HelloSwift.app/HelloSwift"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1386,6 +1587,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + F58337B027EBBBEA0084DED0 /* Build configuration list for PBXNativeTarget "HelloSwiftTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F58337AE27EBBBEA0084DED0 /* Debug */, + F58337AF27EBBBEA0084DED0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 4E1644E41A04170E0007CA5C /* Project object */; diff --git a/HelloSwift/HelloSwiftTests/AppboyPushUnitTests.m b/HelloSwift/HelloSwiftTests/AppboyPushUnitTests.m new file mode 100644 index 00000000..d65d9024 --- /dev/null +++ b/HelloSwift/HelloSwiftTests/AppboyPushUnitTests.m @@ -0,0 +1,178 @@ +#import "Appboy.h" +#import +#import +#import +#import + +/** + * A collection of test cases to verify a successful implementation of push + * notifications using Braze. + + * In a unit testing target, as long as the `AppboyPushTests` module is included, + * the target will run all of this class's unit tests. No added code is required. + * + * @seealso https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/integration/ + */ +@interface AppboyPushUnitTests : XCTestCase + +@end + +@implementation AppboyPushUnitTests + +// MARK: - Push Registration + +/** + * Checks whether the app registers for push notifications when launching. + * + * @discussion This test case will pass if the AppDelegate's + * @c application:didFinishLaunchingWithOptions: method results in a call to: + * + * @code + * [[UIApplication sharedApplication] registerForRemoteNotifications]; + * @endcode + * + * @seealso https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/integration/#step-3-register-for-push-notifications + */ +- (void)testDidFinishLaunchingWithOptions_RegistersForPush { + id partialMock = [OCMockObject partialMockForObject:UIApplication.sharedApplication]; + UIApplication *application = UIApplication.sharedApplication; + + // Launch app + [application.delegate application:application didFinishLaunchingWithOptions:nil]; + + // Confirm app registered for push + OCMVerify([partialMock registerForRemoteNotifications]); +} + +// MARK: - Push Tokens + +/** + * Checks whether the app registers the device's push token with the + * Braze SDK when the system registers for push notifications. + * + * @discussion This test case will pass if the AppDelegate's + * @c application:didRegisterForRemoteNotificationsWithDeviceToken: method + * results in a call to: + * + * @code + * [[Appboy sharedInstance] registerDeviceToken:deviceToken]; + * @endcode + * + * @seealso https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/integration/#step-4-register-push-tokens-with-braze + */ +- (void)testDidRegisterForRemoteNotificationsWithDeviceToken { + id partialMock = [OCMockObject partialMockForObject:[Appboy sharedInstance]]; + UIApplication *application = UIApplication.sharedApplication; + NSData *token = [[NSData alloc] init]; + + // Register with device token + [application.delegate application:application didRegisterForRemoteNotificationsWithDeviceToken:token]; + + // Confirm device token logged to Braze + OCMVerify([partialMock registerDeviceToken:token]); +} + +// MARK: - Push Analytics and Handling + +/** + * Checks whether the app uses Braze to handle newly received push notifications. + * + * @discussion This test case will pass if the AppDelegate's + * @c application:didFinishLaunchingWithOptions: method sets a valid + * @c UNUserNotificationCenterDelegate as the + * + * @code + * [UNUserNotificationCenter currentNotificationCenter].delegate + * @endcode + * + * AND the AppDelegate's + * @c application:didReceiveRemoteNotification:fetchCompletionHandler: method + * results in a call to: + * + * @code + * [[Appboy sharedInstance] registerApplication:application + * didReceiveRemoteNotification:userInfo + * fetchCompletionHandler:completionHandler]; + * @endcode + * + * @seealso https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/integration/#step-5-enable-push-handling + */ +- (void)testDidReceiveRemoteNotification { + id partialMock = [OCMockObject partialMockForObject:[Appboy sharedInstance]]; + UIApplication *application = UIApplication.sharedApplication; + + // Receive notification + [application.delegate application:application + didReceiveRemoteNotification:@{} + fetchCompletionHandler:^(UIBackgroundFetchResult result) {}]; + + // Confirm notification logged to Braze + OCMVerify([partialMock registerApplication:application + didReceiveRemoteNotification:@{} + fetchCompletionHandler:[OCMArg any]]); +} + +/** + * Checks whether the app uses Braze to handle any interaction with a push notification. + * + * @discussion This test case will pass if the AppDelegate's + * @c application:didFinishLaunchingWithOptions: method sets a valid + * @c UNUserNotificationCenterDelegate as the + * + * @code + * [UNUserNotificationCenter currentNotificationCenter].delegate + * @endcode + * + * AND the AppDelegate's + * @c userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: method + * results in a call to: + * + * @code + * [[Appboy sharedInstance] userNotificationCenter:center + * didReceiveNotificationResponse:response + * withCompletionHandler:completionHandler]; + * @endcode + * + * @seealso https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/integration/#step-5-enable-push-handling + */ +- (void)testDidReceiveNotificationResponse { + id partialMock = [OCMockObject partialMockForObject:[Appboy sharedInstance]]; + UNUserNotificationCenter *notificationCenter = UNUserNotificationCenter.currentNotificationCenter; + UNNotificationResponse *response = OCMClassMock([UNNotificationResponse class]); + + // Receive notification response + [notificationCenter.delegate userNotificationCenter:notificationCenter + didReceiveNotificationResponse:response + withCompletionHandler:^{}]; + + // Confirm response logged to Braze + OCMVerify([partialMock userNotificationCenter:notificationCenter + didReceiveNotificationResponse:response + withCompletionHandler:[OCMArg any]]); +} + +/** + * Checks whether the app handles push notifications while foregrounded. + * + * @discussion This test case will pass if the AppDelegate's + * @c userNotificationCenter:willPresentNotification:withCompletionHandler: method + * results in calling the provided @c completionHandler + * + * @seealso https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/integration/#step-5-enable-push-handling + */ +- (void)testForegroundPushHandling { + UNUserNotificationCenter *notificationCenter = UNUserNotificationCenter.currentNotificationCenter; + UNNotification *notification = OCMClassMock([UNNotification class]); + + XCTestExpectation *expectation = [[XCTestExpectation alloc] initWithDescription:@"Completion handler should be called"]; + + [notificationCenter.delegate userNotificationCenter:notificationCenter + willPresentNotification:notification + withCompletionHandler:^(UNNotificationPresentationOptions options) { + [expectation fulfill]; + }]; + + [self waitForExpectations:@[expectation] timeout:0.5]; +} + +@end diff --git a/HelloSwift/Podfile b/HelloSwift/Podfile index 8c7c1ba2..26106d84 100644 --- a/HelloSwift/Podfile +++ b/HelloSwift/Podfile @@ -8,6 +8,12 @@ target 'HelloSwift' do platform :ios, '9.0' pod 'Appboy-iOS-SDK' # pod 'Appboy-iOS-SDK', :path => './../../Appboy-iOS-SDK/' + + target 'HelloSwiftTests' do + inherit! :search_paths + pod 'OCMock' + end + end target 'HelloSwiftNotificationContentExtension' do diff --git a/Package.swift b/Package.swift index 05714407..de5419c4 100644 --- a/Package.swift +++ b/Package.swift @@ -19,8 +19,8 @@ let package = Package( targets: [ .binaryTarget( name: "AppboyKitLibrary", - url: "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/AppboyKitLibrary.xcframework.zip", - checksum: "8af8194536bcbd83247f7239815ee01676d3a1587ef63849e047b671cad60f43" + url: "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.3/AppboyKitLibrary.xcframework.zip", + checksum: "66f13ebff3323d7eeccfba4fb67ab2174402a2b021c6b5a28990737316041510" ), .target( name: "AppboyKit", @@ -53,8 +53,8 @@ let package = Package( ), .binaryTarget( name: "AppboyPushStoryFramework", - url: "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/AppboyPushStoryFramework.xcframework.zip", - checksum: "7b376545e163bca7482a1a52ef742315350f095da107de79048d654ca5d49714" + url: "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.3/AppboyPushStoryFramework.xcframework.zip", + checksum: "950a16e8d8ad665f92986d4d0af405316ea28b2655228ac798d0f156ca892718" ), .target( name: "AppboyPushStory", diff --git a/appboy_ios_sdk.json b/appboy_ios_sdk.json index 2196c8ee..d6931d5d 100644 --- a/appboy_ios_sdk.json +++ b/appboy_ios_sdk.json @@ -1 +1 @@ -{ "4.4.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK_thin.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK.xcframework.zip", "4.4.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK_thin.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK.xcframework.zip", "4.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK_thin.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK.xcframework.zip", "4.3.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.4/Appboy_iOS_SDK_thin.framework.zip", "4.3.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.3/Appboy_iOS_SDK_thin.framework.zip", "4.3.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.2/Appboy_iOS_SDK_thin.framework.zip", "4.3.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.1/Appboy_iOS_SDK_thin.framework.zip", "4.3.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.0/Appboy_iOS_SDK_thin.framework.zip", "4.2.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.2.0/Appboy_iOS_SDK_thin.framework.zip", "4.1.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.1.0/Appboy_iOS_SDK_thin.framework.zip", "4.0.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.2/Appboy_iOS_SDK_thin.framework.zip", "4.0.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.1/Appboy_iOS_SDK_thin.framework.zip", "4.0.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.0/Appboy_iOS_SDK_thin.framework.zip", "3.34.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.34.0/Appboy_iOS_SDK_thin.framework.zip", "3.33.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.1/Appboy_iOS_SDK_thin.framework.zip", "3.33.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.0/Appboy_iOS_SDK_thin.framework.zip", "3.32.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.32.0/Appboy_iOS_SDK_thin.framework.zip", "3.31.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.2/Appboy_iOS_SDK_thin.framework.zip", "3.31.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.1/Appboy_iOS_SDK_thin.framework.zip", "3.31.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.0/Appboy_iOS_SDK_thin.framework.zip", "3.30.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.30.0/Appboy_iOS_SDK_thin.framework.zip", "3.29.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.1/Appboy_iOS_SDK_thin.framework.zip", "3.29.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.0/Appboy_iOS_SDK_thin.framework.zip", "3.28.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.28.0/Appboy_iOS_SDK_thin.framework.zip", "3.27.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.27.0/Appboy_iOS_SDK_thin.framework.zip", "3.26.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.1/Appboy_iOS_SDK_thin.framework.zip", "3.26.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.0/Appboy_iOS_SDK_thin.framework.zip", "3.25.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.25.0/Appboy_iOS_SDK_thin.framework.zip", "3.24.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.2/Appboy_iOS_SDK_thin.framework.zip", "3.24.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.1/Appboy_iOS_SDK_thin.framework.zip", "3.24.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.0/Appboy_iOS_SDK_thin.framework.zip", "3.23.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.23.0/Appboy_iOS_SDK_thin.framework.zip", "3.22.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.22.0/Appboy_iOS_SDK_thin.framework.zip", "3.21.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.3/Appboy_iOS_SDK_thin.framework.zip", "3.21.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.2/Appboy_iOS_SDK_thin.framework.zip", "3.21.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.1/Appboy_iOS_SDK_thin.framework.zip", "3.21.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.0/Appboy_iOS_SDK_thin.framework.zip", "3.20.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.4/Appboy_iOS_SDK_thin.framework.zip", "3.20.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.3/Appboy_iOS_SDK_thin.framework.zip", "3.20.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.2/Appboy_iOS_SDK_thin.framework.zip", "3.20.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.1/Appboy_iOS_SDK_thin.framework.zip", "3.20.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.0/Appboy_iOS_SDK_thin.framework.zip", "3.19.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.19.0/Appboy_iOS_SDK_thin.framework.zip", "3.18.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.18.0/Appboy_iOS_SDK_thin.framework.zip", "3.17.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.17.0/Appboy_iOS_SDK_thin.framework.zip", "3.16.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.16.0/Appboy_iOS_SDK_thin.framework.zip", "3.15.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.15.0/Appboy_iOS_SDK_thin.framework.zip", "3.14.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.1/Appboy_iOS_SDK_thin.framework.zip", "3.14.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.0/Appboy_iOS_SDK_thin.framework.zip", "3.13.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.13.0/Appboy_iOS_SDK_thin.framework.zip", "3.12.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.12.0/Appboy_iOS_SDK_thin.framework.zip", "3.11.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.11.0/Appboy_iOS_SDK_thin.framework.zip", "3.10.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.10.0/Appboy_iOS_SDK_thin.framework.zip", "3.9.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.9.0/Appboy_iOS_SDK_thin.framework.zip", "3.8.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.4/Appboy_iOS_SDK_thin.framework.zip", "3.8.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.3/Appboy_iOS_SDK_thin.framework.zip", "3.8.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.2/Appboy_iOS_SDK_thin.framework.zip", "3.8.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.1/Appboy_iOS_SDK_thin.framework.zip", "3.8.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.0/Appboy_iOS_SDK_thin.framework.zip", "3.7.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.7.1/Appboy_iOS_SDK_thin.framework.zip", "3.7.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.7.0/Appboy_iOS_SDK_thin.framework.zip", "3.6.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.6.0/Appboy_iOS_SDK_thin.framework.zip", "3.5.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.5.1/Appboy_iOS_SDK_thin.framework.zip", "3.5.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.5.0/Appboy_iOS_SDK_thin.framework.zip", "3.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.4.0/Appboy_iOS_SDK_thin.framework.zip" } +{ "4.4.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.3/Appboy_iOS_SDK_thin.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.3/Appboy_iOS_SDK.xcframework.zip", "4.4.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK_thin.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK.xcframework.zip", "4.4.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK_thin.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK.xcframework.zip", "4.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK_thin.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK.xcframework.zip", "4.3.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.4/Appboy_iOS_SDK_thin.framework.zip", "4.3.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.3/Appboy_iOS_SDK_thin.framework.zip", "4.3.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.2/Appboy_iOS_SDK_thin.framework.zip", "4.3.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.1/Appboy_iOS_SDK_thin.framework.zip", "4.3.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.0/Appboy_iOS_SDK_thin.framework.zip", "4.2.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.2.0/Appboy_iOS_SDK_thin.framework.zip", "4.1.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.1.0/Appboy_iOS_SDK_thin.framework.zip", "4.0.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.2/Appboy_iOS_SDK_thin.framework.zip", "4.0.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.1/Appboy_iOS_SDK_thin.framework.zip", "4.0.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.0/Appboy_iOS_SDK_thin.framework.zip", "3.34.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.34.0/Appboy_iOS_SDK_thin.framework.zip", "3.33.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.1/Appboy_iOS_SDK_thin.framework.zip", "3.33.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.0/Appboy_iOS_SDK_thin.framework.zip", "3.32.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.32.0/Appboy_iOS_SDK_thin.framework.zip", "3.31.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.2/Appboy_iOS_SDK_thin.framework.zip", "3.31.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.1/Appboy_iOS_SDK_thin.framework.zip", "3.31.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.0/Appboy_iOS_SDK_thin.framework.zip", "3.30.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.30.0/Appboy_iOS_SDK_thin.framework.zip", "3.29.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.1/Appboy_iOS_SDK_thin.framework.zip", "3.29.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.0/Appboy_iOS_SDK_thin.framework.zip", "3.28.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.28.0/Appboy_iOS_SDK_thin.framework.zip", "3.27.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.27.0/Appboy_iOS_SDK_thin.framework.zip", "3.26.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.1/Appboy_iOS_SDK_thin.framework.zip", "3.26.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.0/Appboy_iOS_SDK_thin.framework.zip", "3.25.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.25.0/Appboy_iOS_SDK_thin.framework.zip", "3.24.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.2/Appboy_iOS_SDK_thin.framework.zip", "3.24.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.1/Appboy_iOS_SDK_thin.framework.zip", "3.24.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.0/Appboy_iOS_SDK_thin.framework.zip", "3.23.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.23.0/Appboy_iOS_SDK_thin.framework.zip", "3.22.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.22.0/Appboy_iOS_SDK_thin.framework.zip", "3.21.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.3/Appboy_iOS_SDK_thin.framework.zip", "3.21.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.2/Appboy_iOS_SDK_thin.framework.zip", "3.21.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.1/Appboy_iOS_SDK_thin.framework.zip", "3.21.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.0/Appboy_iOS_SDK_thin.framework.zip", "3.20.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.4/Appboy_iOS_SDK_thin.framework.zip", "3.20.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.3/Appboy_iOS_SDK_thin.framework.zip", "3.20.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.2/Appboy_iOS_SDK_thin.framework.zip", "3.20.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.1/Appboy_iOS_SDK_thin.framework.zip", "3.20.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.0/Appboy_iOS_SDK_thin.framework.zip", "3.19.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.19.0/Appboy_iOS_SDK_thin.framework.zip", "3.18.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.18.0/Appboy_iOS_SDK_thin.framework.zip", "3.17.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.17.0/Appboy_iOS_SDK_thin.framework.zip", "3.16.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.16.0/Appboy_iOS_SDK_thin.framework.zip", "3.15.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.15.0/Appboy_iOS_SDK_thin.framework.zip", "3.14.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.1/Appboy_iOS_SDK_thin.framework.zip", "3.14.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.0/Appboy_iOS_SDK_thin.framework.zip", "3.13.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.13.0/Appboy_iOS_SDK_thin.framework.zip", "3.12.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.12.0/Appboy_iOS_SDK_thin.framework.zip", "3.11.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.11.0/Appboy_iOS_SDK_thin.framework.zip", "3.10.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.10.0/Appboy_iOS_SDK_thin.framework.zip", "3.9.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.9.0/Appboy_iOS_SDK_thin.framework.zip", "3.8.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.4/Appboy_iOS_SDK_thin.framework.zip", "3.8.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.3/Appboy_iOS_SDK_thin.framework.zip", "3.8.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.2/Appboy_iOS_SDK_thin.framework.zip", "3.8.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.1/Appboy_iOS_SDK_thin.framework.zip", "3.8.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.8.0/Appboy_iOS_SDK_thin.framework.zip", "3.7.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.7.1/Appboy_iOS_SDK_thin.framework.zip", "3.7.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.7.0/Appboy_iOS_SDK_thin.framework.zip", "3.6.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.6.0/Appboy_iOS_SDK_thin.framework.zip", "3.5.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.5.1/Appboy_iOS_SDK_thin.framework.zip", "3.5.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.5.0/Appboy_iOS_SDK_thin.framework.zip", "3.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.4.0/Appboy_iOS_SDK_thin.framework.zip" } diff --git a/appboy_ios_sdk_core.json b/appboy_ios_sdk_core.json index 3040a1be..64c03218 100644 --- a/appboy_ios_sdk_core.json +++ b/appboy_ios_sdk_core.json @@ -1 +1 @@ -{ "4.4.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK_core.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK_core.xcframework.zip", "4.4.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK_core.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK_core.xcframework.zip", "4.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK_core.framework.zip", "4.3.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.4/Appboy_iOS_SDK_core.framework.zip", "4.3.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.3/Appboy_iOS_SDK_core.framework.zip", "4.3.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.2/Appboy_iOS_SDK_core.framework.zip", "4.3.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.1/Appboy_iOS_SDK_core.framework.zip", "4.3.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.0/Appboy_iOS_SDK_core.framework.zip", "4.2.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.2.0/Appboy_iOS_SDK_core.framework.zip", "4.1.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.1.0/Appboy_iOS_SDK_core.framework.zip", "4.0.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.2/Appboy_iOS_SDK_core.framework.zip", "4.0.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.1/Appboy_iOS_SDK_core.framework.zip", "4.0.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.0/Appboy_iOS_SDK_core.framework.zip", "3.34.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.34.0/Appboy_iOS_SDK_core.framework.zip", "3.33.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.1/Appboy_iOS_SDK_core.framework.zip", "3.33.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.0/Appboy_iOS_SDK_core.framework.zip", "3.32.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.32.0/Appboy_iOS_SDK_core.framework.zip", "3.31.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.2/Appboy_iOS_SDK_core.framework.zip", "3.31.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.1/Appboy_iOS_SDK_core.framework.zip", "3.31.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.0/Appboy_iOS_SDK_core.framework.zip", "3.30.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.30.0/Appboy_iOS_SDK_core.framework.zip", "3.29.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.1/Appboy_iOS_SDK_core.framework.zip", "3.29.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.0/Appboy_iOS_SDK_core.framework.zip", "3.28.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.28.0/Appboy_iOS_SDK_core.framework.zip", "3.27.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.27.0/Appboy_iOS_SDK_core.framework.zip", "3.26.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.1/Appboy_iOS_SDK_core.framework.zip", "3.26.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.0/Appboy_iOS_SDK_core.framework.zip", "3.25.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.25.0/Appboy_iOS_SDK_core.framework.zip", "3.24.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.2/Appboy_iOS_SDK_core.framework.zip", "3.24.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.1/Appboy_iOS_SDK_core.framework.zip", "3.24.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.0/Appboy_iOS_SDK_core.framework.zip", "3.23.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.23.0/Appboy_iOS_SDK_core.framework.zip", "3.22.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.22.0/Appboy_iOS_SDK_core.framework.zip", "3.21.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.3/Appboy_iOS_SDK_core.framework.zip", "3.21.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.2/Appboy_iOS_SDK_core.framework.zip", "3.21.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.1/Appboy_iOS_SDK_core.framework.zip", "3.21.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.0/Appboy_iOS_SDK_core.framework.zip", "3.20.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.4/Appboy_iOS_SDK_core.framework.zip", "3.20.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.3/Appboy_iOS_SDK_core.framework.zip", "3.20.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.2/Appboy_iOS_SDK_core.framework.zip", "3.20.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.1/Appboy_iOS_SDK_core.framework.zip", "3.20.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.0/Appboy_iOS_SDK_core.framework.zip", "3.19.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.19.0/Appboy_iOS_SDK_core.framework.zip", "3.18.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.18.0/Appboy_iOS_SDK_core.framework.zip", "3.17.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.17.0/Appboy_iOS_SDK_core.framework.zip", "3.16.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.16.0/Appboy_iOS_SDK_core.framework.zip", "3.15.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.15.0/Appboy_iOS_SDK_core.framework.zip", "3.14.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.1/Appboy_iOS_SDK_core.framework.zip", "3.14.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.0/Appboy_iOS_SDK_core.framework.zip", "3.13.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.13.0/Appboy_iOS_SDK_core.framework.zip", "3.12.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.12.0/Appboy_iOS_SDK_core.framework.zip", "3.11.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.11.0/Appboy_iOS_SDK_core.framework.zip" } +{ "4.4.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.3/Appboy_iOS_SDK_core.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.3/Appboy_iOS_SDK_core.xcframework.zip", "4.4.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK_core.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK_core.xcframework.zip", "4.4.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK_core.framework.zip?alt=https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK_core.xcframework.zip", "4.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK_core.framework.zip", "4.3.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.4/Appboy_iOS_SDK_core.framework.zip", "4.3.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.3/Appboy_iOS_SDK_core.framework.zip", "4.3.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.2/Appboy_iOS_SDK_core.framework.zip", "4.3.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.1/Appboy_iOS_SDK_core.framework.zip", "4.3.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.0/Appboy_iOS_SDK_core.framework.zip", "4.2.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.2.0/Appboy_iOS_SDK_core.framework.zip", "4.1.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.1.0/Appboy_iOS_SDK_core.framework.zip", "4.0.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.2/Appboy_iOS_SDK_core.framework.zip", "4.0.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.1/Appboy_iOS_SDK_core.framework.zip", "4.0.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.0/Appboy_iOS_SDK_core.framework.zip", "3.34.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.34.0/Appboy_iOS_SDK_core.framework.zip", "3.33.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.1/Appboy_iOS_SDK_core.framework.zip", "3.33.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.0/Appboy_iOS_SDK_core.framework.zip", "3.32.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.32.0/Appboy_iOS_SDK_core.framework.zip", "3.31.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.2/Appboy_iOS_SDK_core.framework.zip", "3.31.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.1/Appboy_iOS_SDK_core.framework.zip", "3.31.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.0/Appboy_iOS_SDK_core.framework.zip", "3.30.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.30.0/Appboy_iOS_SDK_core.framework.zip", "3.29.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.1/Appboy_iOS_SDK_core.framework.zip", "3.29.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.0/Appboy_iOS_SDK_core.framework.zip", "3.28.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.28.0/Appboy_iOS_SDK_core.framework.zip", "3.27.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.27.0/Appboy_iOS_SDK_core.framework.zip", "3.26.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.1/Appboy_iOS_SDK_core.framework.zip", "3.26.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.0/Appboy_iOS_SDK_core.framework.zip", "3.25.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.25.0/Appboy_iOS_SDK_core.framework.zip", "3.24.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.2/Appboy_iOS_SDK_core.framework.zip", "3.24.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.1/Appboy_iOS_SDK_core.framework.zip", "3.24.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.0/Appboy_iOS_SDK_core.framework.zip", "3.23.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.23.0/Appboy_iOS_SDK_core.framework.zip", "3.22.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.22.0/Appboy_iOS_SDK_core.framework.zip", "3.21.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.3/Appboy_iOS_SDK_core.framework.zip", "3.21.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.2/Appboy_iOS_SDK_core.framework.zip", "3.21.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.1/Appboy_iOS_SDK_core.framework.zip", "3.21.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.21.0/Appboy_iOS_SDK_core.framework.zip", "3.20.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.4/Appboy_iOS_SDK_core.framework.zip", "3.20.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.3/Appboy_iOS_SDK_core.framework.zip", "3.20.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.2/Appboy_iOS_SDK_core.framework.zip", "3.20.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.1/Appboy_iOS_SDK_core.framework.zip", "3.20.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.20.0/Appboy_iOS_SDK_core.framework.zip", "3.19.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.19.0/Appboy_iOS_SDK_core.framework.zip", "3.18.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.18.0/Appboy_iOS_SDK_core.framework.zip", "3.17.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.17.0/Appboy_iOS_SDK_core.framework.zip", "3.16.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.16.0/Appboy_iOS_SDK_core.framework.zip", "3.15.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.15.0/Appboy_iOS_SDK_core.framework.zip", "3.14.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.1/Appboy_iOS_SDK_core.framework.zip", "3.14.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.14.0/Appboy_iOS_SDK_core.framework.zip", "3.13.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.13.0/Appboy_iOS_SDK_core.framework.zip", "3.12.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.12.0/Appboy_iOS_SDK_core.framework.zip", "3.11.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.11.0/Appboy_iOS_SDK_core.framework.zip" } diff --git a/appboy_ios_sdk_full.json b/appboy_ios_sdk_full.json index c9652a1a..d47074a2 100644 --- a/appboy_ios_sdk_full.json +++ b/appboy_ios_sdk_full.json @@ -1 +1 @@ -{ "4.4.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK.framework.zip", "4.4.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK.framework.zip", "4.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK.framework.zip", "4.3.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.4/Appboy_iOS_SDK.framework.zip", "4.3.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.3/Appboy_iOS_SDK.framework.zip", "4.3.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.2/Appboy_iOS_SDK.framework.zip", "4.3.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.1/Appboy_iOS_SDK.framework.zip", "4.3.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.0/Appboy_iOS_SDK.framework.zip", "4.2.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.2.0/Appboy_iOS_SDK.framework.zip", "4.1.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.1.0/Appboy_iOS_SDK.framework.zip", "4.0.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.2/Appboy_iOS_SDK.framework.zip", "4.0.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.1/Appboy_iOS_SDK.framework.zip", "4.0.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.0/Appboy_iOS_SDK.framework.zip", "3.34.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.34.0/Appboy_iOS_SDK.framework.zip", "3.33.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.1/Appboy_iOS_SDK.framework.zip", "3.33.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.0/Appboy_iOS_SDK.framework.zip", "3.32.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.32.0/Appboy_iOS_SDK.framework.zip", "3.31.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.2/Appboy_iOS_SDK.framework.zip", "3.31.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.1/Appboy_iOS_SDK.framework.zip", "3.31.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.0/Appboy_iOS_SDK.framework.zip", "3.30.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.30.0/Appboy_iOS_SDK.framework.zip", "3.29.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.1/Appboy_iOS_SDK.framework.zip", "3.29.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.0/Appboy_iOS_SDK.framework.zip", "3.28.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.28.0/Appboy_iOS_SDK.framework.zip", "3.27.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.27.0/Appboy_iOS_SDK.framework.zip", "3.26.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.1/Appboy_iOS_SDK.framework.zip", "3.26.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.0/Appboy_iOS_SDK.framework.zip", "3.25.0" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.25.0/Appboy_iOS_SDK.framework.zip", "3.24.2" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.2/Appboy_iOS_SDK.framework.zip", "3.24.1" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.1/Appboy_iOS_SDK.framework.zip", "3.24.0" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.0/Appboy_iOS_SDK.framework.zip"} +{ "4.4.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.3/Appboy_iOS_SDK.framework.zip", "4.4.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.2/Appboy_iOS_SDK.framework.zip", "4.4.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.1/Appboy_iOS_SDK.framework.zip", "4.4.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.4.0/Appboy_iOS_SDK.framework.zip", "4.3.4": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.4/Appboy_iOS_SDK.framework.zip", "4.3.3": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.3/Appboy_iOS_SDK.framework.zip", "4.3.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.2/Appboy_iOS_SDK.framework.zip", "4.3.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.1/Appboy_iOS_SDK.framework.zip", "4.3.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.3.0/Appboy_iOS_SDK.framework.zip", "4.2.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.2.0/Appboy_iOS_SDK.framework.zip", "4.1.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.1.0/Appboy_iOS_SDK.framework.zip", "4.0.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.2/Appboy_iOS_SDK.framework.zip", "4.0.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.1/Appboy_iOS_SDK.framework.zip", "4.0.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/4.0.0/Appboy_iOS_SDK.framework.zip", "3.34.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.34.0/Appboy_iOS_SDK.framework.zip", "3.33.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.1/Appboy_iOS_SDK.framework.zip", "3.33.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.33.0/Appboy_iOS_SDK.framework.zip", "3.32.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.32.0/Appboy_iOS_SDK.framework.zip", "3.31.2": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.2/Appboy_iOS_SDK.framework.zip", "3.31.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.1/Appboy_iOS_SDK.framework.zip", "3.31.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.31.0/Appboy_iOS_SDK.framework.zip", "3.30.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.30.0/Appboy_iOS_SDK.framework.zip", "3.29.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.1/Appboy_iOS_SDK.framework.zip", "3.29.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.29.0/Appboy_iOS_SDK.framework.zip", "3.28.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.28.0/Appboy_iOS_SDK.framework.zip", "3.27.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.27.0/Appboy_iOS_SDK.framework.zip", "3.26.1": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.1/Appboy_iOS_SDK.framework.zip", "3.26.0": "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.26.0/Appboy_iOS_SDK.framework.zip", "3.25.0" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.25.0/Appboy_iOS_SDK.framework.zip", "3.24.2" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.2/Appboy_iOS_SDK.framework.zip", "3.24.1" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.1/Appboy_iOS_SDK.framework.zip", "3.24.0" : "https://github.com/Appboy/appboy-ios-sdk/releases/download/3.24.0/Appboy_iOS_SDK.framework.zip"}