diff --git a/.gitignore b/.gitignore index 71f834d23..fc27a5aa6 100644 --- a/.gitignore +++ b/.gitignore @@ -119,3 +119,4 @@ xcuserdata # Binary build product files **/out +**/Products \ No newline at end of file diff --git a/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/project.pbxproj deleted file mode 100644 index 9edadc788..000000000 --- a/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/project.pbxproj +++ /dev/null @@ -1,317 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - ECFDED521950E4CB0043F777 /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ECFDED511950E4CB0043F777 /* libANSDK.a */; }; - ECFDED621950E4D30043F777 /* ANGADCustomBannerAd.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDED551950E4D30043F777 /* ANGADCustomBannerAd.m */; }; - ECFDED631950E4D30043F777 /* ANGADCustomInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDED571950E4D30043F777 /* ANGADCustomInterstitialAd.m */; }; - ECFDED731950E7050043F777 /* ANSDKResources.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = ECFDED4F1950E4CB0043F777 /* ANSDKResources.bundle */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - ECFDED1C1950E48E0043F777 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ECFDED731950E7050043F777 /* ANSDKResources.bundle in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - ECFDED1E1950E48E0043F777 /* libANAdapterForGoogleAdMobSDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANAdapterForGoogleAdMobSDK.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ECFDED481950E4CB0043F777 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - ECFDED491950E4CB0043F777 /* ANAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdView.h; sourceTree = ""; }; - ECFDED4A1950E4CB0043F777 /* ANBannerAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBannerAdView.h; sourceTree = ""; }; - ECFDED4B1950E4CB0043F777 /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - ECFDED4C1950E4CB0043F777 /* ANInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAd.h; sourceTree = ""; }; - ECFDED4D1950E4CB0043F777 /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - ECFDED4E1950E4CB0043F777 /* ANLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogManager.h; sourceTree = ""; }; - ECFDED4F1950E4CB0043F777 /* ANSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANSDKResources.bundle; sourceTree = ""; }; - ECFDED501950E4CB0043F777 /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - ECFDED511950E4CB0043F777 /* libANSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libANSDK.a; sourceTree = ""; }; - ECFDED541950E4D30043F777 /* ANGADCustomBannerAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGADCustomBannerAd.h; sourceTree = ""; }; - ECFDED551950E4D30043F777 /* ANGADCustomBannerAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANGADCustomBannerAd.m; sourceTree = ""; }; - ECFDED561950E4D30043F777 /* ANGADCustomInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGADCustomInterstitialAd.h; sourceTree = ""; }; - ECFDED571950E4D30043F777 /* ANGADCustomInterstitialAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANGADCustomInterstitialAd.m; sourceTree = ""; }; - ECFDED591950E4D30043F777 /* GADAdSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdSize.h; sourceTree = ""; }; - ECFDED5A1950E4D30043F777 /* GADCustomEventBanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBanner.h; sourceTree = ""; }; - ECFDED5B1950E4D30043F777 /* GADCustomEventBannerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBannerDelegate.h; sourceTree = ""; }; - ECFDED5C1950E4D30043F777 /* GADCustomEventExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventExtras.h; sourceTree = ""; }; - ECFDED5D1950E4D30043F777 /* GADCustomEventInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitial.h; sourceTree = ""; }; - ECFDED5E1950E4D30043F777 /* GADCustomEventInterstitialDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitialDelegate.h; sourceTree = ""; }; - ECFDED5F1950E4D30043F777 /* GADCustomEventRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventRequest.h; sourceTree = ""; }; - ECFDED601950E4D30043F777 /* GADModules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADModules.h; sourceTree = ""; }; - ECFDED611950E4D30043F777 /* GADRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADRequest.h; sourceTree = ""; }; - ECFDED641950E4DE0043F777 /* ANBasicConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ECFDED1B1950E48E0043F777 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ECFDED521950E4CB0043F777 /* libANSDK.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - ECFDED151950E48E0043F777 = { - isa = PBXGroup; - children = ( - ECFDED641950E4DE0043F777 /* ANBasicConfig.h */, - ECFDED531950E4D30043F777 /* GoogleAdMob */, - ECFDED471950E4CB0043F777 /* ANSDK */, - ECFDED1F1950E48E0043F777 /* Products */, - ); - sourceTree = ""; - }; - ECFDED1F1950E48E0043F777 /* Products */ = { - isa = PBXGroup; - children = ( - ECFDED1E1950E48E0043F777 /* libANAdapterForGoogleAdMobSDK.a */, - ); - name = Products; - sourceTree = ""; - }; - ECFDED471950E4CB0043F777 /* ANSDK */ = { - isa = PBXGroup; - children = ( - ECFDED481950E4CB0043F777 /* ANAdProtocol.h */, - ECFDED491950E4CB0043F777 /* ANAdView.h */, - ECFDED4A1950E4CB0043F777 /* ANBannerAdView.h */, - ECFDED4B1950E4CB0043F777 /* ANCustomAdapter.h */, - ECFDED4C1950E4CB0043F777 /* ANInterstitialAd.h */, - ECFDED4D1950E4CB0043F777 /* ANLocation.h */, - ECFDED4E1950E4CB0043F777 /* ANLogManager.h */, - ECFDED4F1950E4CB0043F777 /* ANSDKResources.bundle */, - ECFDED501950E4CB0043F777 /* ANTargetingParameters.h */, - ECFDED511950E4CB0043F777 /* libANSDK.a */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; - ECFDED531950E4D30043F777 /* GoogleAdMob */ = { - isa = PBXGroup; - children = ( - ECFDED541950E4D30043F777 /* ANGADCustomBannerAd.h */, - ECFDED551950E4D30043F777 /* ANGADCustomBannerAd.m */, - ECFDED561950E4D30043F777 /* ANGADCustomInterstitialAd.h */, - ECFDED571950E4D30043F777 /* ANGADCustomInterstitialAd.m */, - ECFDED581950E4D30043F777 /* GoogleAdMobSDK */, - ); - name = GoogleAdMob; - path = ../mediation/mediating/GoogleAdMob; - sourceTree = ""; - }; - ECFDED581950E4D30043F777 /* GoogleAdMobSDK */ = { - isa = PBXGroup; - children = ( - ECFDED591950E4D30043F777 /* GADAdSize.h */, - ECFDED5A1950E4D30043F777 /* GADCustomEventBanner.h */, - ECFDED5B1950E4D30043F777 /* GADCustomEventBannerDelegate.h */, - ECFDED5C1950E4D30043F777 /* GADCustomEventExtras.h */, - ECFDED5D1950E4D30043F777 /* GADCustomEventInterstitial.h */, - ECFDED5E1950E4D30043F777 /* GADCustomEventInterstitialDelegate.h */, - ECFDED5F1950E4D30043F777 /* GADCustomEventRequest.h */, - ECFDED601950E4D30043F777 /* GADModules.h */, - ECFDED611950E4D30043F777 /* GADRequest.h */, - ); - path = GoogleAdMobSDK; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - ECFDED1D1950E48E0043F777 /* ANAdapterForGoogleAdMobSDK */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECFDED411950E48E0043F777 /* Build configuration list for PBXNativeTarget "ANAdapterForGoogleAdMobSDK" */; - buildPhases = ( - ECFDED1A1950E48E0043F777 /* Sources */, - ECFDED1B1950E48E0043F777 /* Frameworks */, - ECFDED1C1950E48E0043F777 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANAdapterForGoogleAdMobSDK; - productName = ANAdapterForGoogleAdMobSDK; - productReference = ECFDED1E1950E48E0043F777 /* libANAdapterForGoogleAdMobSDK.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ECFDED161950E48E0043F777 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = ECFDED191950E48E0043F777 /* Build configuration list for PBXProject "ANAdapterForGoogleAdMobSDK" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = ECFDED151950E48E0043F777; - productRefGroup = ECFDED1F1950E48E0043F777 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ECFDED1D1950E48E0043F777 /* ANAdapterForGoogleAdMobSDK */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - ECFDED1A1950E48E0043F777 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECFDED621950E4D30043F777 /* ANGADCustomBannerAd.m in Sources */, - ECFDED631950E4D30043F777 /* ANGADCustomInterstitialAd.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - ECFDED3F1950E48E0043F777 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECFDED401950E48E0043F777 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ECFDED421950E48E0043F777 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANAdapterForGoogleAdMobSDK.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - ECFDED431950E48E0043F777 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANAdapterForGoogleAdMobSDK.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ECFDED191950E48E0043F777 /* Build configuration list for PBXProject "ANAdapterForGoogleAdMobSDK" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECFDED3F1950E48E0043F777 /* Debug */, - ECFDED401950E48E0043F777 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECFDED411950E48E0043F777 /* Build configuration list for PBXNativeTarget "ANAdapterForGoogleAdMobSDK" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECFDED421950E48E0043F777 /* Debug */, - ECFDED431950E48E0043F777 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = ECFDED161950E48E0043F777 /* Project object */; -} diff --git a/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index cdb350b85..000000000 --- a/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/xcshareddata/xcschemes/ANAdapterForGoogleAdMobSDK.xcscheme b/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/xcshareddata/xcschemes/ANAdapterForGoogleAdMobSDK.xcscheme deleted file mode 100644 index 380a7bfb1..000000000 --- a/BinaryProjects/ANAdapterForGoogleAdMobSDK.xcodeproj/xcshareddata/xcschemes/ANAdapterForGoogleAdMobSDK.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/project.pbxproj deleted file mode 100644 index 65028b57e..000000000 --- a/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/project.pbxproj +++ /dev/null @@ -1,307 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - ECFDEC921950E22D0043F777 /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ECFDEC911950E22D0043F777 /* libANSDK.a */; }; - ECFDED661950E5060043F777 /* ANSDKResources.bundle in CopyFiles */ = {isa = PBXBuildFile; fileRef = ECFDEC8F1950E22D0043F777 /* ANSDKResources.bundle */; }; - ECFDED711950E5290043F777 /* ANMoPubMediationBanner.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDED691950E5290043F777 /* ANMoPubMediationBanner.m */; }; - ECFDED721950E5290043F777 /* ANMoPubMediationInterstitial.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDED6B1950E5290043F777 /* ANMoPubMediationInterstitial.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - ECFDEC5C1950E1720043F777 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ECFDED661950E5060043F777 /* ANSDKResources.bundle in CopyFiles */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - ECFDEC5E1950E1720043F777 /* libANAdapterForMoPubSDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANAdapterForMoPubSDK.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ECFDEC881950E22D0043F777 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - ECFDEC891950E22D0043F777 /* ANAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdView.h; sourceTree = ""; }; - ECFDEC8A1950E22D0043F777 /* ANBannerAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBannerAdView.h; sourceTree = ""; }; - ECFDEC8B1950E22D0043F777 /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - ECFDEC8C1950E22D0043F777 /* ANInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAd.h; sourceTree = ""; }; - ECFDEC8D1950E22D0043F777 /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - ECFDEC8E1950E22D0043F777 /* ANLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogManager.h; sourceTree = ""; }; - ECFDEC8F1950E22D0043F777 /* ANSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANSDKResources.bundle; sourceTree = ""; }; - ECFDEC901950E22D0043F777 /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - ECFDEC911950E22D0043F777 /* libANSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libANSDK.a; sourceTree = ""; }; - ECFDECA41950E2540043F777 /* ANBasicConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; - ECFDED681950E5290043F777 /* ANMoPubMediationBanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMoPubMediationBanner.h; sourceTree = ""; }; - ECFDED691950E5290043F777 /* ANMoPubMediationBanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMoPubMediationBanner.m; sourceTree = ""; }; - ECFDED6A1950E5290043F777 /* ANMoPubMediationInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMoPubMediationInterstitial.h; sourceTree = ""; }; - ECFDED6B1950E5290043F777 /* ANMoPubMediationInterstitial.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMoPubMediationInterstitial.m; sourceTree = ""; }; - ECFDED6D1950E5290043F777 /* MPBannerCustomEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPBannerCustomEvent.h; sourceTree = ""; }; - ECFDED6E1950E5290043F777 /* MPBannerCustomEventDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPBannerCustomEventDelegate.h; sourceTree = ""; }; - ECFDED6F1950E5290043F777 /* MPInterstitialCustomEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPInterstitialCustomEvent.h; sourceTree = ""; }; - ECFDED701950E5290043F777 /* MPInterstitialCustomEventDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPInterstitialCustomEventDelegate.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ECFDEC5B1950E1720043F777 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ECFDEC921950E22D0043F777 /* libANSDK.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - ECFDEC551950E1720043F777 = { - isa = PBXGroup; - children = ( - ECFDECA41950E2540043F777 /* ANBasicConfig.h */, - ECFDED671950E5290043F777 /* MoPub */, - ECFDEC871950E22D0043F777 /* ANSDK */, - ECFDEC5F1950E1720043F777 /* Products */, - ); - sourceTree = ""; - }; - ECFDEC5F1950E1720043F777 /* Products */ = { - isa = PBXGroup; - children = ( - ECFDEC5E1950E1720043F777 /* libANAdapterForMoPubSDK.a */, - ); - name = Products; - sourceTree = ""; - }; - ECFDEC871950E22D0043F777 /* ANSDK */ = { - isa = PBXGroup; - children = ( - ECFDEC881950E22D0043F777 /* ANAdProtocol.h */, - ECFDEC891950E22D0043F777 /* ANAdView.h */, - ECFDEC8A1950E22D0043F777 /* ANBannerAdView.h */, - ECFDEC8B1950E22D0043F777 /* ANCustomAdapter.h */, - ECFDEC8C1950E22D0043F777 /* ANInterstitialAd.h */, - ECFDEC8D1950E22D0043F777 /* ANLocation.h */, - ECFDEC8E1950E22D0043F777 /* ANLogManager.h */, - ECFDEC8F1950E22D0043F777 /* ANSDKResources.bundle */, - ECFDEC901950E22D0043F777 /* ANTargetingParameters.h */, - ECFDEC911950E22D0043F777 /* libANSDK.a */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; - ECFDED671950E5290043F777 /* MoPub */ = { - isa = PBXGroup; - children = ( - ECFDED681950E5290043F777 /* ANMoPubMediationBanner.h */, - ECFDED691950E5290043F777 /* ANMoPubMediationBanner.m */, - ECFDED6A1950E5290043F777 /* ANMoPubMediationInterstitial.h */, - ECFDED6B1950E5290043F777 /* ANMoPubMediationInterstitial.m */, - ECFDED6C1950E5290043F777 /* MoPubSDK */, - ); - name = MoPub; - path = ../mediation/mediating/MoPub; - sourceTree = ""; - }; - ECFDED6C1950E5290043F777 /* MoPubSDK */ = { - isa = PBXGroup; - children = ( - ECFDED6D1950E5290043F777 /* MPBannerCustomEvent.h */, - ECFDED6E1950E5290043F777 /* MPBannerCustomEventDelegate.h */, - ECFDED6F1950E5290043F777 /* MPInterstitialCustomEvent.h */, - ECFDED701950E5290043F777 /* MPInterstitialCustomEventDelegate.h */, - ); - path = MoPubSDK; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - ECFDEC5D1950E1720043F777 /* ANAdapterForMoPubSDK */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECFDEC811950E1720043F777 /* Build configuration list for PBXNativeTarget "ANAdapterForMoPubSDK" */; - buildPhases = ( - ECFDEC5A1950E1720043F777 /* Sources */, - ECFDEC5B1950E1720043F777 /* Frameworks */, - ECFDEC5C1950E1720043F777 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANAdapterForMoPubSDK; - productName = ANAdapterForMoPubSDK; - productReference = ECFDEC5E1950E1720043F777 /* libANAdapterForMoPubSDK.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ECFDEC561950E1720043F777 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = ECFDEC591950E1720043F777 /* Build configuration list for PBXProject "ANAdapterForMoPubSDK" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = ECFDEC551950E1720043F777; - productRefGroup = ECFDEC5F1950E1720043F777 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ECFDEC5D1950E1720043F777 /* ANAdapterForMoPubSDK */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - ECFDEC5A1950E1720043F777 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECFDED711950E5290043F777 /* ANMoPubMediationBanner.m in Sources */, - ECFDED721950E5290043F777 /* ANMoPubMediationInterstitial.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - ECFDEC7F1950E1720043F777 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECFDEC801950E1720043F777 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ECFDEC821950E1720043F777 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANAdapterForMoPubSDK.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - ECFDEC831950E1720043F777 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANAdapterForMoPubSDK.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ECFDEC591950E1720043F777 /* Build configuration list for PBXProject "ANAdapterForMoPubSDK" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECFDEC7F1950E1720043F777 /* Debug */, - ECFDEC801950E1720043F777 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECFDEC811950E1720043F777 /* Build configuration list for PBXNativeTarget "ANAdapterForMoPubSDK" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECFDEC821950E1720043F777 /* Debug */, - ECFDEC831950E1720043F777 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = ECFDEC561950E1720043F777 /* Project object */; -} diff --git a/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index d0f8d35bf..000000000 --- a/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/BinaryProjects/ANSDK.h b/BinaryProjects/ANSDK.h new file mode 100644 index 000000000..24bd0e084 --- /dev/null +++ b/BinaryProjects/ANSDK.h @@ -0,0 +1,23 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdProtocol.h" +#import "ANAdView.h" +#import "ANBannerAdView.h" +#import "ANCustomAdapter.h" +#import "ANInterstitialAd.h" +#import "ANLocation.h" +#import "ANLogManager.h" +#import "ANTargetingParameters.h" \ No newline at end of file diff --git a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj index 62c97ba05..87db71163 100644 --- a/BinaryProjects/ANSDK.xcodeproj/project.pbxproj +++ b/BinaryProjects/ANSDK.xcodeproj/project.pbxproj @@ -6,7 +6,63 @@ objectVersion = 46; objects = { +/* Begin PBXAggregateTarget section */ + 8A6BE73919D5EEE500498F77 /* BuildANSDKFramework */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 8A6BE73A19D5EEE500498F77 /* Build configuration list for PBXAggregateTarget "BuildANSDKFramework" */; + buildPhases = ( + 8A6BE73D19D5EF1600498F77 /* Run Script */, + ); + dependencies = ( + 8A6BE74419D5F19800498F77 /* PBXTargetDependency */, + ); + name = BuildANSDKFramework; + productName = Framework; + }; +/* End PBXAggregateTarget section */ + /* Begin PBXBuildFile section */ + 8A3B378119D623C300CE24A5 /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = EC48177B1845046A0066BBFE /* ANSDKResources.bundle */; }; + 8A3EC16E19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3EC16D19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.m */; }; + 8A3EC17019B8FDCA0049CD29 /* ANMRAID.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A3EC16F19B8FDC70049CD29 /* ANMRAID.bundle */; }; + 8A6BE74619D5F2BD00498F77 /* ANAdProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA8D194B768A0069D934 /* ANAdProtocol.h */; }; + 8A6BE74719D5F2BD00498F77 /* ANAdView.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA8E194B768A0069D934 /* ANAdView.h */; }; + 8A6BE74819D5F2BD00498F77 /* ANBannerAdView.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA8F194B768A0069D934 /* ANBannerAdView.h */; }; + 8A6BE74919D5F2BD00498F77 /* ANCustomAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA90194B768A0069D934 /* ANCustomAdapter.h */; }; + 8A6BE74A19D5F2BD00498F77 /* ANInterstitialAd.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA91194B768A0069D934 /* ANInterstitialAd.h */; }; + 8A6BE74B19D5F2BD00498F77 /* ANLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA92194B768A0069D934 /* ANLocation.h */; }; + 8A6BE74C19D5F2BD00498F77 /* ANLogManager.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA93194B768A0069D934 /* ANLogManager.h */; }; + 8A6BE74D19D5F2BD00498F77 /* ANTargetingParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA94194B768A0069D934 /* ANTargetingParameters.h */; }; + 8A6BE78219D60C3E00498F77 /* ANSDK.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A6BE78019D60C3E00498F77 /* ANSDK.h */; }; + 8A6BE78819D61EDA00498F77 /* ANBannerAdView+ANContentViewTransitions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A3EC16C19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.h */; }; + 8A6BE78919D61EDA00498F77 /* NSString+ANCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA96194B768A0069D934 /* NSString+ANCategory.h */; }; + 8A6BE78A19D61EDA00498F77 /* NSTimer+ANCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA98194B768A0069D934 /* NSTimer+ANCategory.h */; }; + 8A6BE78B19D61EDA00498F77 /* UIView+ANCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA9A194B768A0069D934 /* UIView+ANCategory.h */; }; + 8A6BE78C19D61EDA00498F77 /* UIWebView+ANCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = ECE4EA9C194B768A0069D934 /* UIWebView+ANCategory.h */; }; + 8A6BE78D19D61EF900498F77 /* ANAdFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD6189E1981C11F00AC0780 /* ANAdFetcher.h */; }; + 8A6BE78E19D61EF900498F77 /* ANAdRequestUrl.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A01981C11F00AC0780 /* ANAdRequestUrl.h */; }; + 8A6BE78F19D61EF900498F77 /* ANAdResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A21981C11F00AC0780 /* ANAdResponse.h */; }; + 8A6BE79019D61EF900498F77 /* ANAdViewDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A51981C11F00AC0780 /* ANAdViewDelegate.h */; }; + 8A6BE79119D61EF900498F77 /* ANAdWebViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A61981C11F00AC0780 /* ANAdWebViewController.h */; }; + 8A6BE79219D61EF900498F77 /* ANANJAMImplementation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618A81981C11F00AC0780 /* ANANJAMImplementation.h */; }; + 8A6BE79319D61EF900498F77 /* ANBasicConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618AB1981C11F00AC0780 /* ANBasicConfig.h */; }; + 8A6BE79419D61EF900498F77 /* ANBrowserViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618AC1981C11F00AC0780 /* ANBrowserViewController.h */; }; + 8A6BE79519D61EF900498F77 /* ANClickOverlayView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618AE1981C11F00AC0780 /* ANClickOverlayView.h */; }; + 8A6BE79619D61EF900498F77 /* ANGlobal.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B01981C11F00AC0780 /* ANGlobal.h */; }; + 8A6BE79719D61EF900498F77 /* ANInterstitialAdViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B31981C11F00AC0780 /* ANInterstitialAdViewController.h */; }; + 8A6BE79819D61EF900498F77 /* ANLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B61981C11F00AC0780 /* ANLogging.h */; }; + 8A6BE79919D61EF900498F77 /* ANMediatedAd.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618B91981C11F00AC0780 /* ANMediatedAd.h */; }; + 8A6BE79A19D61EF900498F77 /* ANMediationAdViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618BB1981C11F00AC0780 /* ANMediationAdViewController.h */; }; + 8A6BE79B19D61EF900498F77 /* ANMediationContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618BD1981C11F00AC0780 /* ANMediationContainerView.h */; }; + 8A6BE79C19D61EF900498F77 /* ANMRAIDProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618BF1981C11F00AC0780 /* ANMRAIDProperties.h */; }; + 8A6BE79D19D61EF900498F77 /* ANMRAIDViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C01981C11F00AC0780 /* ANMRAIDViewController.h */; }; + 8A6BE79E19D61EF900498F77 /* ANPBBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C21981C11F00AC0780 /* ANPBBuffer.h */; }; + 8A6BE79F19D61EF900498F77 /* ANPBContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C41981C11F00AC0780 /* ANPBContainerView.h */; }; + 8A6BE7A019D61EF900498F77 /* ANReachability.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C61981C11F00AC0780 /* ANReachability.h */; }; + 8A6BE7A119D61EF900498F77 /* ANWebView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AD618C91981C11F00AC0780 /* ANWebView.h */; }; + 8AD5155D19D216E6002E53D6 /* ANAdAdapterBannerAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155619D216E6002E53D6 /* ANAdAdapterBannerAmazon.m */; }; + 8AD5155E19D216E6002E53D6 /* ANAdAdapterBaseAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155819D216E6002E53D6 /* ANAdAdapterBaseAmazon.m */; }; + 8AD5155F19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD5155A19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m */; }; 8AD618CB1981C11F00AC0780 /* ANAdFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD6189F1981C11F00AC0780 /* ANAdFetcher.m */; }; 8AD618CC1981C11F00AC0780 /* ANAdRequestUrl.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A11981C11F00AC0780 /* ANAdRequestUrl.m */; }; 8AD618CD1981C11F00AC0780 /* ANAdResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618A31981C11F00AC0780 /* ANAdResponse.m */; }; @@ -33,7 +89,26 @@ 8AD618E21981C11F00AC0780 /* ANWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD618CA1981C11F00AC0780 /* ANWebView.m */; }; 8AD618E31981C19100AC0780 /* appnexus_logo_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */; }; 8AD618E41981C19500AC0780 /* appnexus_logo_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */; }; - EC481796184504AD0066BBFE /* ANSDKResources.bundle in Copy Files */ = {isa = PBXBuildFile; fileRef = EC48177B1845046A0066BBFE /* ANSDKResources.bundle */; }; + 8AE2D79C19CC881D00001B70 /* ANAdAdapterBannerFacebook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D79719CC880D00001B70 /* ANAdAdapterBannerFacebook.m */; }; + 8AE2D79D19CC881D00001B70 /* ANAdAdapterInterstitialFacebook.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D79919CC880D00001B70 /* ANAdAdapterInterstitialFacebook.m */; }; + 8AE2D7C519CC885600001B70 /* ANAdAdapterBannerMoPub.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7A219CC885600001B70 /* ANAdAdapterBannerMoPub.m */; }; + 8AE2D7C619CC885600001B70 /* ANAdAdapterInterstitialMoPub.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7A419CC885600001B70 /* ANAdAdapterInterstitialMoPub.m */; }; + 8AE2D7C719CC885600001B70 /* ANAdAdapterMoPubBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7A619CC885600001B70 /* ANAdAdapterMoPubBase.m */; }; + 8AE2D7D719CC88AA00001B70 /* ANAdAdapterBannerMillennialMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7CF19CC88A000001B70 /* ANAdAdapterBannerMillennialMedia.m */; }; + 8AE2D7D819CC88AA00001B70 /* ANAdAdapterInterstitialMillennialMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7D119CC88A000001B70 /* ANAdAdapterInterstitialMillennialMedia.m */; }; + 8AE2D7D919CC88AA00001B70 /* ANAdAdapterMillennialMediaBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7D319CC88A000001B70 /* ANAdAdapterMillennialMediaBase.m */; }; + 8AE2D7E219CC88EF00001B70 /* ANAdAdapterBanneriAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7DF19CC88EF00001B70 /* ANAdAdapterBanneriAd.m */; }; + 8AE2D7E319CC88EF00001B70 /* ANAdAdapterInterstitialiAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7E119CC88EF00001B70 /* ANAdAdapterInterstitialiAd.m */; }; + 8AE2D7EF19CC891B00001B70 /* ANAdAdapterBannerAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7E819CC891B00001B70 /* ANAdAdapterBannerAdMob.m */; }; + 8AE2D7F019CC891B00001B70 /* ANAdAdapterBannerDFP.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7EA19CC891B00001B70 /* ANAdAdapterBannerDFP.m */; }; + 8AE2D7F119CC891B00001B70 /* ANAdAdapterInterstitialAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7EC19CC891B00001B70 /* ANAdAdapterInterstitialAdMob.m */; }; + 8AE2D7F219CC891B00001B70 /* ANAdAdapterInterstitialDFP.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D7EE19CC891B00001B70 /* ANAdAdapterInterstitialDFP.m */; }; + 8AE2D86619CC9B3A00001B70 /* ANGADCustomBannerAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86319CC9B3A00001B70 /* ANGADCustomBannerAd.m */; }; + 8AE2D86719CC9B3A00001B70 /* ANGADCustomInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86519CC9B3A00001B70 /* ANGADCustomInterstitialAd.m */; }; + 8AE2D86F19CC9B7300001B70 /* ANMoPubMediationBanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86C19CC9B7300001B70 /* ANMoPubMediationBanner.m */; }; + 8AE2D87019CC9B7300001B70 /* ANMoPubMediationInterstitial.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE2D86E19CC9B7300001B70 /* ANMoPubMediationInterstitial.m */; }; + 8AF366BD19D492F30097019F /* ANSDKResources.bundle in Copy Files */ = {isa = PBXBuildFile; fileRef = EC48177B1845046A0066BBFE /* ANSDKResources.bundle */; }; + 8AF9F08D19DA131F00758111 /* ANAdAdapterBaseAmazon.h in Copy Files */ = {isa = PBXBuildFile; fileRef = 8AD5155719D216E6002E53D6 /* ANAdAdapterBaseAmazon.h */; }; ECE4EADA194B768A0069D934 /* NSString+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EA97194B768A0069D934 /* NSString+ANCategory.m */; }; ECE4EADB194B768A0069D934 /* NSTimer+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EA99194B768A0069D934 /* NSTimer+ANCategory.m */; }; ECE4EADC194B768A0069D934 /* UIView+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EA9B194B768A0069D934 /* UIView+ANCategory.m */; }; @@ -50,7 +125,6 @@ ECE4EB0C194B76960069D934 /* UIButtonBarArrowLeft@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = ECE4EAD5194B768A0069D934 /* UIButtonBarArrowLeft@2x.png */; }; ECE4EB0D194B76960069D934 /* UIButtonBarArrowRight.png in Resources */ = {isa = PBXBuildFile; fileRef = ECE4EAD6194B768A0069D934 /* UIButtonBarArrowRight.png */; }; ECE4EB0E194B76960069D934 /* UIButtonBarArrowRight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = ECE4EAD7194B768A0069D934 /* UIButtonBarArrowRight@2x.png */; }; - ECE4EB0F194B76960069D934 /* MRAID.bundle in Resources */ = {isa = PBXBuildFile; fileRef = ECE4EAD8194B768A0069D934 /* MRAID.bundle */; }; ECE4EB10194B76960069D934 /* sdkjs.js in Resources */ = {isa = PBXBuildFile; fileRef = ECE4EAD9194B768A0069D934 /* sdkjs.js */; }; ECE4EB11194B78280069D934 /* ANAdProtocol.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECE4EA8D194B768A0069D934 /* ANAdProtocol.h */; }; ECE4EB12194B78280069D934 /* ANAdView.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECE4EA8E194B768A0069D934 /* ANAdView.h */; }; @@ -63,6 +137,69 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 8A6BE74319D5F19800498F77 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AD5153419D214CA002E53D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AE2D7F719CC897000001B70 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AE2D7F919CC897300001B70 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AE2D7FB19CC897800001B70 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AE2D7FD19CC897B00001B70 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AE2D7FF19CC898000001B70 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AE2D84719CC9A6F00001B70 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AE2D85719CC9B0F00001B70 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC3E5CD41843C6D50070315E /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; EC4817941845049D0066BBFE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = EC3E5CD41843C6D50070315E /* Project object */; @@ -73,12 +210,94 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 8AD5153919D214CA002E53D6 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + 8AF9F08D19DA131F00758111 /* ANAdAdapterBaseAmazon.h in Copy Files */, + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6C319CC874B00001B70 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6F419CC878300001B70 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D72519CC879900001B70 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D75619CC87B200001B70 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D78719CC87CC00001B70 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D84C19CC9A6F00001B70 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D85A19CC9B0F00001B70 /* Copy Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + ); + name = "Copy Files"; + runOnlyForDeploymentPostprocessing = 0; + }; EC3E5CDA1843C6D50070315E /* Copy Files */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = "$(PRODUCT_NAME)"; dstSubfolderSpec = 16; files = ( + 8AF366BD19D492F30097019F /* ANSDKResources.bundle in Copy Files */, ECE4EB11194B78280069D934 /* ANAdProtocol.h in Copy Files */, ECE4EB12194B78280069D934 /* ANAdView.h in Copy Files */, ECE4EB13194B78280069D934 /* ANBannerAdView.h in Copy Files */, @@ -87,7 +306,6 @@ ECE4EB16194B78280069D934 /* ANLocation.h in Copy Files */, ECE4EB17194B78280069D934 /* ANLogManager.h in Copy Files */, ECE4EB18194B78280069D934 /* ANTargetingParameters.h in Copy Files */, - EC481796184504AD0066BBFE /* ANSDKResources.bundle in Copy Files */, ); name = "Copy Files"; runOnlyForDeploymentPostprocessing = 0; @@ -95,8 +313,89 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = appnexus_logo_icon.png; path = images/appnexus_logo_icon.png; sourceTree = ""; }; - 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appnexus_logo_icon@2x.png"; path = "images/appnexus_logo_icon@2x.png"; sourceTree = ""; }; + 8A3EC16C19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANBannerAdView+ANContentViewTransitions.h"; sourceTree = ""; }; + 8A3EC16D19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ANBannerAdView+ANContentViewTransitions.m"; sourceTree = ""; }; + 8A3EC16F19B8FDC70049CD29 /* ANMRAID.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANMRAID.bundle; sourceTree = ""; }; + 8A6BE78019D60C3E00498F77 /* ANSDK.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSDK.h; sourceTree = ""; }; + 8A944DDE19D5AF8C007AAAB0 /* AmazonAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = AmazonAd.framework; sourceTree = ""; }; + 8A944DDF19D5AF8C007AAAB0 /* NOTICE-AMAZON.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "NOTICE-AMAZON.txt"; sourceTree = ""; }; + 8A944DE119D5AF94007AAAB0 /* FBAudienceNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FBAudienceNetwork.framework; sourceTree = ""; }; + 8A944DE519D5AFAB007AAAB0 /* DFPBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPBannerView.h; sourceTree = ""; }; + 8A944DE619D5AFAB007AAAB0 /* DFPExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPExtras.h; sourceTree = ""; }; + 8A944DE719D5AFAB007AAAB0 /* DFPInterstitial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPInterstitial.h; sourceTree = ""; }; + 8A944DE819D5AFAB007AAAB0 /* DFPSwipeableBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPSwipeableBannerView.h; sourceTree = ""; }; + 8A944DE919D5AFAB007AAAB0 /* GADAdSizeDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdSizeDelegate.h; sourceTree = ""; }; + 8A944DEA19D5AFAB007AAAB0 /* GADAppEventDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAppEventDelegate.h; sourceTree = ""; }; + 8A944DEB19D5AFAB007AAAB0 /* GADSwipeableBannerViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADSwipeableBannerViewDelegate.h; sourceTree = ""; }; + 8A944DED19D5AFAB007AAAB0 /* GADCustomEventBanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBanner.h; sourceTree = ""; }; + 8A944DEE19D5AFAB007AAAB0 /* GADCustomEventBannerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBannerDelegate.h; sourceTree = ""; }; + 8A944DEF19D5AFAB007AAAB0 /* GADCustomEventExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventExtras.h; sourceTree = ""; }; + 8A944DF019D5AFAB007AAAB0 /* GADCustomEventInterstitial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitial.h; sourceTree = ""; }; + 8A944DF119D5AFAB007AAAB0 /* GADCustomEventInterstitialDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitialDelegate.h; sourceTree = ""; }; + 8A944DF219D5AFAB007AAAB0 /* GADCustomEventRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventRequest.h; sourceTree = ""; }; + 8A944DF419D5AFAB007AAAB0 /* GADSearchBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADSearchBannerView.h; sourceTree = ""; }; + 8A944DF519D5AFAB007AAAB0 /* GADSearchRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADSearchRequest.h; sourceTree = ""; }; + 8A944DF619D5AFAB007AAAB0 /* GADAdMobExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdMobExtras.h; sourceTree = ""; }; + 8A944DF719D5AFAB007AAAB0 /* GADAdNetworkExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdNetworkExtras.h; sourceTree = ""; }; + 8A944DF819D5AFAB007AAAB0 /* GADAdSize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdSize.h; sourceTree = ""; }; + 8A944DF919D5AFAB007AAAB0 /* GADBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADBannerView.h; sourceTree = ""; }; + 8A944DFA19D5AFAB007AAAB0 /* GADBannerViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADBannerViewDelegate.h; sourceTree = ""; }; + 8A944DFB19D5AFAB007AAAB0 /* GADInAppPurchase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInAppPurchase.h; sourceTree = ""; }; + 8A944DFC19D5AFAB007AAAB0 /* GADInAppPurchaseDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInAppPurchaseDelegate.h; sourceTree = ""; }; + 8A944DFD19D5AFAB007AAAB0 /* GADInterstitial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInterstitial.h; sourceTree = ""; }; + 8A944DFE19D5AFAB007AAAB0 /* GADInterstitialDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInterstitialDelegate.h; sourceTree = ""; }; + 8A944DFF19D5AFAB007AAAB0 /* GADModules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADModules.h; sourceTree = ""; }; + 8A944E0019D5AFAB007AAAB0 /* GADRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADRequest.h; sourceTree = ""; }; + 8A944E0119D5AFAB007AAAB0 /* GADRequestError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADRequestError.h; sourceTree = ""; }; + 8A944E0219D5AFAB007AAAB0 /* GoogleAdMobSDKReadme.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = GoogleAdMobSDKReadme.txt; sourceTree = ""; }; + 8A944E0319D5AFAB007AAAB0 /* libGoogleAdMobAds.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGoogleAdMobAds.a; sourceTree = ""; }; + 8A944E0519D5AFBB007AAAB0 /* LICENSE-MILLENNIAL MEDIA.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-MILLENNIAL MEDIA.txt"; sourceTree = ""; }; + 8A944E0619D5AFBB007AAAB0 /* MillennialMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MillennialMedia.framework; sourceTree = ""; }; + 8A944E0819D5AFCD007AAAB0 /* libMoPubSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libMoPubSDK.a; sourceTree = ""; }; + 8A944E0919D5AFCD007AAAB0 /* LICENSE-MOPUB */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-MOPUB"; sourceTree = ""; }; + 8A944E0A19D5AFCD007AAAB0 /* MPAdBrowserController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MPAdBrowserController.xib; sourceTree = ""; }; + 8A944E0B19D5AFCD007AAAB0 /* MPAdConversionTracker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAdConversionTracker.h; sourceTree = ""; }; + 8A944E0C19D5AFCD007AAAB0 /* MPAdPositioning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAdPositioning.h; sourceTree = ""; }; + 8A944E0D19D5AFCD007AAAB0 /* MPAdView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPAdView.h; sourceTree = ""; }; + 8A944E0E19D5AFCD007AAAB0 /* MPBannerCustomEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPBannerCustomEvent.h; sourceTree = ""; }; + 8A944E0F19D5AFCD007AAAB0 /* MPBannerCustomEventDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPBannerCustomEventDelegate.h; sourceTree = ""; }; + 8A944E1019D5AFCD007AAAB0 /* MPClientAdPositioning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPClientAdPositioning.h; sourceTree = ""; }; + 8A944E1119D5AFCD007AAAB0 /* MPCloseButtonX.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = MPCloseButtonX.png; sourceTree = ""; }; + 8A944E1219D5AFCD007AAAB0 /* MPCloseButtonX@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MPCloseButtonX@2x.png"; sourceTree = ""; }; + 8A944E1319D5AFCD007AAAB0 /* MPCollectionViewAdPlacer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPCollectionViewAdPlacer.h; sourceTree = ""; }; + 8A944E1419D5AFCD007AAAB0 /* MPConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPConstants.h; sourceTree = ""; }; + 8A944E1519D5AFCD007AAAB0 /* MPInterstitialAdController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPInterstitialAdController.h; sourceTree = ""; }; + 8A944E1619D5AFCD007AAAB0 /* MPInterstitialCustomEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPInterstitialCustomEvent.h; sourceTree = ""; }; + 8A944E1719D5AFCD007AAAB0 /* MPInterstitialCustomEventDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPInterstitialCustomEventDelegate.h; sourceTree = ""; }; + 8A944E1819D5AFCD007AAAB0 /* MPNativeAd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAd.h; sourceTree = ""; }; + 8A944E1919D5AFCD007AAAB0 /* MPNativeAdAdapter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdAdapter.h; sourceTree = ""; }; + 8A944E1A19D5AFCD007AAAB0 /* MPNativeAdConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdConstants.h; sourceTree = ""; }; + 8A944E1B19D5AFCD007AAAB0 /* MPNativeAdData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdData.h; sourceTree = ""; }; + 8A944E1C19D5AFCD007AAAB0 /* MPNativeAdError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdError.h; sourceTree = ""; }; + 8A944E1D19D5AFCD007AAAB0 /* MPNativeAdRendering.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdRendering.h; sourceTree = ""; }; + 8A944E1E19D5AFCD007AAAB0 /* MPNativeAdRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdRequest.h; sourceTree = ""; }; + 8A944E1F19D5AFCD007AAAB0 /* MPNativeAdRequestTargeting.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdRequestTargeting.h; sourceTree = ""; }; + 8A944E2019D5AFCD007AAAB0 /* MPNativeAdSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdSource.h; sourceTree = ""; }; + 8A944E2119D5AFCD007AAAB0 /* MPNativeAdSourceDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeAdSourceDelegate.h; sourceTree = ""; }; + 8A944E2219D5AFCD007AAAB0 /* MPNativeCustomEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeCustomEvent.h; sourceTree = ""; }; + 8A944E2319D5AFCD007AAAB0 /* MPNativeCustomEventDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPNativeCustomEventDelegate.h; sourceTree = ""; }; + 8A944E2419D5AFCE007AAAB0 /* MPStreamAdPlacementData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPStreamAdPlacementData.h; sourceTree = ""; }; + 8A944E2519D5AFCE007AAAB0 /* MPStreamAdPlacer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPStreamAdPlacer.h; sourceTree = ""; }; + 8A944E2619D5AFCE007AAAB0 /* MPTableViewAdManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTableViewAdManager.h; sourceTree = ""; }; + 8A944E2719D5AFCE007AAAB0 /* MPTableViewAdPlacer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPTableViewAdPlacer.h; sourceTree = ""; }; + 8A944E2819D5AFCE007AAAB0 /* MRAID.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MRAID.bundle; sourceTree = ""; }; + 8AC662A219DC9DDA004025D5 /* MPServerAdPositioning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MPServerAdPositioning.h; sourceTree = ""; }; + 8AC662A319DC9E07004025D5 /* MoPub-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MoPub-Bridging-Header.h"; sourceTree = ""; }; + 8AD5154019D214CA002E53D6 /* libANSDKAmazonAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKAmazonAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AD5155519D216E6002E53D6 /* ANAdAdapterBannerAmazon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerAmazon.h; sourceTree = ""; }; + 8AD5155619D216E6002E53D6 /* ANAdAdapterBannerAmazon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerAmazon.m; sourceTree = ""; }; + 8AD5155719D216E6002E53D6 /* ANAdAdapterBaseAmazon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBaseAmazon.h; sourceTree = ""; }; + 8AD5155819D216E6002E53D6 /* ANAdAdapterBaseAmazon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBaseAmazon.m; sourceTree = ""; }; + 8AD5155919D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialAmazon.h; sourceTree = ""; }; + 8AD5155A19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialAmazon.m; sourceTree = ""; }; + 8AD5156019D21706002E53D6 /* Amazon.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Amazon.pch; sourceTree = ""; }; + 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = appnexus_logo_icon.png; sourceTree = ""; }; + 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appnexus_logo_icon@2x.png"; sourceTree = ""; }; 8AD6189E1981C11F00AC0780 /* ANAdFetcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdFetcher.h; sourceTree = ""; }; 8AD6189F1981C11F00AC0780 /* ANAdFetcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdFetcher.m; sourceTree = ""; }; 8AD618A01981C11F00AC0780 /* ANAdRequestUrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdRequestUrl.h; sourceTree = ""; }; @@ -142,6 +441,49 @@ 8AD618C81981C11F00AC0780 /* ANTargetingParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANTargetingParameters.m; sourceTree = ""; }; 8AD618C91981C11F00AC0780 /* ANWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANWebView.h; sourceTree = ""; }; 8AD618CA1981C11F00AC0780 /* ANWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANWebView.m; sourceTree = ""; }; + 8AE2D6D119CC874B00001B70 /* libANSDKGoogleAdMobAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKGoogleAdMobAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AE2D70219CC878300001B70 /* libANSDKiAdAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKiAdAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AE2D73319CC879900001B70 /* libANSDKMillennialMediaAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKMillennialMediaAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AE2D76419CC87B200001B70 /* libANSDKMoPubAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKMoPubAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AE2D79519CC87CC00001B70 /* libANSDKFacebookAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKFacebookAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AE2D79619CC880D00001B70 /* ANAdAdapterBannerFacebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerFacebook.h; path = ../mediation/mediatedviews/Facebook/ANAdAdapterBannerFacebook.h; sourceTree = ""; }; + 8AE2D79719CC880D00001B70 /* ANAdAdapterBannerFacebook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerFacebook.m; path = ../mediation/mediatedviews/Facebook/ANAdAdapterBannerFacebook.m; sourceTree = ""; }; + 8AE2D79819CC880D00001B70 /* ANAdAdapterInterstitialFacebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterInterstitialFacebook.h; path = ../mediation/mediatedviews/Facebook/ANAdAdapterInterstitialFacebook.h; sourceTree = ""; }; + 8AE2D79919CC880D00001B70 /* ANAdAdapterInterstitialFacebook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterInterstitialFacebook.m; path = ../mediation/mediatedviews/Facebook/ANAdAdapterInterstitialFacebook.m; sourceTree = ""; }; + 8AE2D7A119CC885600001B70 /* ANAdAdapterBannerMoPub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerMoPub.h; sourceTree = ""; }; + 8AE2D7A219CC885600001B70 /* ANAdAdapterBannerMoPub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerMoPub.m; sourceTree = ""; }; + 8AE2D7A319CC885600001B70 /* ANAdAdapterInterstitialMoPub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialMoPub.h; sourceTree = ""; }; + 8AE2D7A419CC885600001B70 /* ANAdAdapterInterstitialMoPub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialMoPub.m; sourceTree = ""; }; + 8AE2D7A519CC885600001B70 /* ANAdAdapterMoPubBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterMoPubBase.h; sourceTree = ""; }; + 8AE2D7A619CC885600001B70 /* ANAdAdapterMoPubBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterMoPubBase.m; sourceTree = ""; }; + 8AE2D7CE19CC88A000001B70 /* ANAdAdapterBannerMillennialMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerMillennialMedia.h; path = ../mediation/mediatedviews/MillennialMedia/ANAdAdapterBannerMillennialMedia.h; sourceTree = ""; }; + 8AE2D7CF19CC88A000001B70 /* ANAdAdapterBannerMillennialMedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerMillennialMedia.m; path = ../mediation/mediatedviews/MillennialMedia/ANAdAdapterBannerMillennialMedia.m; sourceTree = ""; }; + 8AE2D7D019CC88A000001B70 /* ANAdAdapterInterstitialMillennialMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterInterstitialMillennialMedia.h; path = ../mediation/mediatedviews/MillennialMedia/ANAdAdapterInterstitialMillennialMedia.h; sourceTree = ""; }; + 8AE2D7D119CC88A000001B70 /* ANAdAdapterInterstitialMillennialMedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterInterstitialMillennialMedia.m; path = ../mediation/mediatedviews/MillennialMedia/ANAdAdapterInterstitialMillennialMedia.m; sourceTree = ""; }; + 8AE2D7D219CC88A000001B70 /* ANAdAdapterMillennialMediaBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterMillennialMediaBase.h; path = ../mediation/mediatedviews/MillennialMedia/ANAdAdapterMillennialMediaBase.h; sourceTree = ""; }; + 8AE2D7D319CC88A000001B70 /* ANAdAdapterMillennialMediaBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterMillennialMediaBase.m; path = ../mediation/mediatedviews/MillennialMedia/ANAdAdapterMillennialMediaBase.m; sourceTree = ""; }; + 8AE2D7DE19CC88EF00001B70 /* ANAdAdapterBanneriAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBanneriAd.h; path = ../mediation/mediatedviews/iAd/ANAdAdapterBanneriAd.h; sourceTree = ""; }; + 8AE2D7DF19CC88EF00001B70 /* ANAdAdapterBanneriAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBanneriAd.m; path = ../mediation/mediatedviews/iAd/ANAdAdapterBanneriAd.m; sourceTree = ""; }; + 8AE2D7E019CC88EF00001B70 /* ANAdAdapterInterstitialiAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterInterstitialiAd.h; path = ../mediation/mediatedviews/iAd/ANAdAdapterInterstitialiAd.h; sourceTree = ""; }; + 8AE2D7E119CC88EF00001B70 /* ANAdAdapterInterstitialiAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterInterstitialiAd.m; path = ../mediation/mediatedviews/iAd/ANAdAdapterInterstitialiAd.m; sourceTree = ""; }; + 8AE2D7E719CC891B00001B70 /* ANAdAdapterBannerAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerAdMob.h; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerAdMob.h; sourceTree = ""; }; + 8AE2D7E819CC891B00001B70 /* ANAdAdapterBannerAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerAdMob.m; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerAdMob.m; sourceTree = ""; }; + 8AE2D7E919CC891B00001B70 /* ANAdAdapterBannerDFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerDFP.h; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerDFP.h; sourceTree = ""; }; + 8AE2D7EA19CC891B00001B70 /* ANAdAdapterBannerDFP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerDFP.m; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerDFP.m; sourceTree = ""; }; + 8AE2D7EB19CC891B00001B70 /* ANAdAdapterInterstitialAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterInterstitialAdMob.h; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialAdMob.h; sourceTree = ""; }; + 8AE2D7EC19CC891B00001B70 /* ANAdAdapterInterstitialAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterInterstitialAdMob.m; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialAdMob.m; sourceTree = ""; }; + 8AE2D7ED19CC891B00001B70 /* ANAdAdapterInterstitialDFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterInterstitialDFP.h; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialDFP.h; sourceTree = ""; }; + 8AE2D7EE19CC891B00001B70 /* ANAdAdapterInterstitialDFP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterInterstitialDFP.m; path = ../mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialDFP.m; sourceTree = ""; }; + 8AE2D85319CC9A6F00001B70 /* libANAdapterForGoogleAdMobSDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANAdapterForGoogleAdMobSDK.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AE2D86119CC9B0F00001B70 /* libANAdapterForMoPubSDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANAdapterForMoPubSDK.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AE2D86219CC9B3A00001B70 /* ANGADCustomBannerAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANGADCustomBannerAd.h; path = ../mediation/mediating/GoogleAdMob/ANGADCustomBannerAd.h; sourceTree = ""; }; + 8AE2D86319CC9B3A00001B70 /* ANGADCustomBannerAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANGADCustomBannerAd.m; path = ../mediation/mediating/GoogleAdMob/ANGADCustomBannerAd.m; sourceTree = ""; }; + 8AE2D86419CC9B3A00001B70 /* ANGADCustomInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANGADCustomInterstitialAd.h; path = ../mediation/mediating/GoogleAdMob/ANGADCustomInterstitialAd.h; sourceTree = ""; }; + 8AE2D86519CC9B3A00001B70 /* ANGADCustomInterstitialAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANGADCustomInterstitialAd.m; path = ../mediation/mediating/GoogleAdMob/ANGADCustomInterstitialAd.m; sourceTree = ""; }; + 8AE2D86B19CC9B7300001B70 /* ANMoPubMediationBanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANMoPubMediationBanner.h; path = ../mediation/mediating/MoPub/ANMoPubMediationBanner.h; sourceTree = ""; }; + 8AE2D86C19CC9B7300001B70 /* ANMoPubMediationBanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANMoPubMediationBanner.m; path = ../mediation/mediating/MoPub/ANMoPubMediationBanner.m; sourceTree = ""; }; + 8AE2D86D19CC9B7300001B70 /* ANMoPubMediationInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANMoPubMediationInterstitial.h; path = ../mediation/mediating/MoPub/ANMoPubMediationInterstitial.h; sourceTree = ""; }; + 8AE2D86E19CC9B7300001B70 /* ANMoPubMediationInterstitial.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANMoPubMediationInterstitial.m; path = ../mediation/mediating/MoPub/ANMoPubMediationInterstitial.m; sourceTree = ""; }; EC3E5CDC1843C6D50070315E /* libANSDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDK.a; sourceTree = BUILT_PRODUCTS_DIR; }; EC48177B1845046A0066BBFE /* ANSDKResources.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ANSDKResources.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; ECE4EA8D194B768A0069D934 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; @@ -172,11 +514,66 @@ ECE4EAD5194B768A0069D934 /* UIButtonBarArrowLeft@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "UIButtonBarArrowLeft@2x.png"; sourceTree = ""; }; ECE4EAD6194B768A0069D934 /* UIButtonBarArrowRight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UIButtonBarArrowRight.png; sourceTree = ""; }; ECE4EAD7194B768A0069D934 /* UIButtonBarArrowRight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "UIButtonBarArrowRight@2x.png"; sourceTree = ""; }; - ECE4EAD8194B768A0069D934 /* MRAID.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MRAID.bundle; sourceTree = ""; }; ECE4EAD9194B768A0069D934 /* sdkjs.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = sdkjs.js; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 8AD5153819D214CA002E53D6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6C219CC874B00001B70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6F319CC878300001B70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D72419CC879900001B70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D75519CC87B200001B70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D78619CC87CC00001B70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D84B19CC9A6F00001B70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D85919CC9B0F00001B70 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; EC3E5CD91843C6D50070315E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -194,6 +591,161 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 8A944DDD19D5AF8C007AAAB0 /* AmazonSDK */ = { + isa = PBXGroup; + children = ( + 8A944DDE19D5AF8C007AAAB0 /* AmazonAd.framework */, + 8A944DDF19D5AF8C007AAAB0 /* NOTICE-AMAZON.txt */, + ); + path = AmazonSDK; + sourceTree = ""; + }; + 8A944DE019D5AF94007AAAB0 /* FacebookSDK */ = { + isa = PBXGroup; + children = ( + 8A944DE119D5AF94007AAAB0 /* FBAudienceNetwork.framework */, + ); + name = FacebookSDK; + path = ../mediation/mediatedviews/Facebook/FacebookSDK; + sourceTree = ""; + }; + 8A944DE219D5AFAB007AAAB0 /* GoogleAdMobSDK */ = { + isa = PBXGroup; + children = ( + 8A944DE319D5AFAB007AAAB0 /* Add-ons */, + 8A944DF619D5AFAB007AAAB0 /* GADAdMobExtras.h */, + 8A944DF719D5AFAB007AAAB0 /* GADAdNetworkExtras.h */, + 8A944DF819D5AFAB007AAAB0 /* GADAdSize.h */, + 8A944DF919D5AFAB007AAAB0 /* GADBannerView.h */, + 8A944DFA19D5AFAB007AAAB0 /* GADBannerViewDelegate.h */, + 8A944DFB19D5AFAB007AAAB0 /* GADInAppPurchase.h */, + 8A944DFC19D5AFAB007AAAB0 /* GADInAppPurchaseDelegate.h */, + 8A944DFD19D5AFAB007AAAB0 /* GADInterstitial.h */, + 8A944DFE19D5AFAB007AAAB0 /* GADInterstitialDelegate.h */, + 8A944DFF19D5AFAB007AAAB0 /* GADModules.h */, + 8A944E0019D5AFAB007AAAB0 /* GADRequest.h */, + 8A944E0119D5AFAB007AAAB0 /* GADRequestError.h */, + 8A944E0219D5AFAB007AAAB0 /* GoogleAdMobSDKReadme.txt */, + 8A944E0319D5AFAB007AAAB0 /* libGoogleAdMobAds.a */, + ); + name = GoogleAdMobSDK; + path = ../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK; + sourceTree = ""; + }; + 8A944DE319D5AFAB007AAAB0 /* Add-ons */ = { + isa = PBXGroup; + children = ( + 8A944DE419D5AFAB007AAAB0 /* DoubleClick */, + 8A944DEC19D5AFAB007AAAB0 /* Mediation */, + 8A944DF319D5AFAB007AAAB0 /* Search */, + ); + path = "Add-ons"; + sourceTree = ""; + }; + 8A944DE419D5AFAB007AAAB0 /* DoubleClick */ = { + isa = PBXGroup; + children = ( + 8A944DE519D5AFAB007AAAB0 /* DFPBannerView.h */, + 8A944DE619D5AFAB007AAAB0 /* DFPExtras.h */, + 8A944DE719D5AFAB007AAAB0 /* DFPInterstitial.h */, + 8A944DE819D5AFAB007AAAB0 /* DFPSwipeableBannerView.h */, + 8A944DE919D5AFAB007AAAB0 /* GADAdSizeDelegate.h */, + 8A944DEA19D5AFAB007AAAB0 /* GADAppEventDelegate.h */, + 8A944DEB19D5AFAB007AAAB0 /* GADSwipeableBannerViewDelegate.h */, + ); + path = DoubleClick; + sourceTree = ""; + }; + 8A944DEC19D5AFAB007AAAB0 /* Mediation */ = { + isa = PBXGroup; + children = ( + 8A944DED19D5AFAB007AAAB0 /* GADCustomEventBanner.h */, + 8A944DEE19D5AFAB007AAAB0 /* GADCustomEventBannerDelegate.h */, + 8A944DEF19D5AFAB007AAAB0 /* GADCustomEventExtras.h */, + 8A944DF019D5AFAB007AAAB0 /* GADCustomEventInterstitial.h */, + 8A944DF119D5AFAB007AAAB0 /* GADCustomEventInterstitialDelegate.h */, + 8A944DF219D5AFAB007AAAB0 /* GADCustomEventRequest.h */, + ); + path = Mediation; + sourceTree = ""; + }; + 8A944DF319D5AFAB007AAAB0 /* Search */ = { + isa = PBXGroup; + children = ( + 8A944DF419D5AFAB007AAAB0 /* GADSearchBannerView.h */, + 8A944DF519D5AFAB007AAAB0 /* GADSearchRequest.h */, + ); + path = Search; + sourceTree = ""; + }; + 8A944E0419D5AFBB007AAAB0 /* MillennialMediaSDK */ = { + isa = PBXGroup; + children = ( + 8A944E0519D5AFBB007AAAB0 /* LICENSE-MILLENNIAL MEDIA.txt */, + 8A944E0619D5AFBB007AAAB0 /* MillennialMedia.framework */, + ); + name = MillennialMediaSDK; + path = ../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK; + sourceTree = ""; + }; + 8A944E0719D5AFCD007AAAB0 /* MoPubSDK */ = { + isa = PBXGroup; + children = ( + 8A944E0819D5AFCD007AAAB0 /* libMoPubSDK.a */, + 8A944E0919D5AFCD007AAAB0 /* LICENSE-MOPUB */, + 8AC662A319DC9E07004025D5 /* MoPub-Bridging-Header.h */, + 8A944E0A19D5AFCD007AAAB0 /* MPAdBrowserController.xib */, + 8A944E0B19D5AFCD007AAAB0 /* MPAdConversionTracker.h */, + 8A944E0C19D5AFCD007AAAB0 /* MPAdPositioning.h */, + 8A944E0D19D5AFCD007AAAB0 /* MPAdView.h */, + 8A944E0E19D5AFCD007AAAB0 /* MPBannerCustomEvent.h */, + 8A944E0F19D5AFCD007AAAB0 /* MPBannerCustomEventDelegate.h */, + 8A944E1019D5AFCD007AAAB0 /* MPClientAdPositioning.h */, + 8A944E1119D5AFCD007AAAB0 /* MPCloseButtonX.png */, + 8A944E1219D5AFCD007AAAB0 /* MPCloseButtonX@2x.png */, + 8A944E1319D5AFCD007AAAB0 /* MPCollectionViewAdPlacer.h */, + 8A944E1419D5AFCD007AAAB0 /* MPConstants.h */, + 8A944E1519D5AFCD007AAAB0 /* MPInterstitialAdController.h */, + 8A944E1619D5AFCD007AAAB0 /* MPInterstitialCustomEvent.h */, + 8A944E1719D5AFCD007AAAB0 /* MPInterstitialCustomEventDelegate.h */, + 8A944E1819D5AFCD007AAAB0 /* MPNativeAd.h */, + 8A944E1919D5AFCD007AAAB0 /* MPNativeAdAdapter.h */, + 8A944E1A19D5AFCD007AAAB0 /* MPNativeAdConstants.h */, + 8A944E1B19D5AFCD007AAAB0 /* MPNativeAdData.h */, + 8A944E1C19D5AFCD007AAAB0 /* MPNativeAdError.h */, + 8A944E1D19D5AFCD007AAAB0 /* MPNativeAdRendering.h */, + 8A944E1E19D5AFCD007AAAB0 /* MPNativeAdRequest.h */, + 8A944E1F19D5AFCD007AAAB0 /* MPNativeAdRequestTargeting.h */, + 8A944E2019D5AFCD007AAAB0 /* MPNativeAdSource.h */, + 8A944E2119D5AFCD007AAAB0 /* MPNativeAdSourceDelegate.h */, + 8A944E2219D5AFCD007AAAB0 /* MPNativeCustomEvent.h */, + 8A944E2319D5AFCD007AAAB0 /* MPNativeCustomEventDelegate.h */, + 8AC662A219DC9DDA004025D5 /* MPServerAdPositioning.h */, + 8A944E2419D5AFCE007AAAB0 /* MPStreamAdPlacementData.h */, + 8A944E2519D5AFCE007AAAB0 /* MPStreamAdPlacer.h */, + 8A944E2619D5AFCE007AAAB0 /* MPTableViewAdManager.h */, + 8A944E2719D5AFCE007AAAB0 /* MPTableViewAdPlacer.h */, + 8A944E2819D5AFCE007AAAB0 /* MRAID.bundle */, + ); + path = MoPubSDK; + sourceTree = ""; + }; + 8AD5155119D216E6002E53D6 /* Amazon */ = { + isa = PBXGroup; + children = ( + 8AD5156019D21706002E53D6 /* Amazon.pch */, + 8A944DDD19D5AF8C007AAAB0 /* AmazonSDK */, + 8AD5155519D216E6002E53D6 /* ANAdAdapterBannerAmazon.h */, + 8AD5155619D216E6002E53D6 /* ANAdAdapterBannerAmazon.m */, + 8AD5155719D216E6002E53D6 /* ANAdAdapterBaseAmazon.h */, + 8AD5155819D216E6002E53D6 /* ANAdAdapterBaseAmazon.m */, + 8AD5155919D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.h */, + 8AD5155A19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m */, + ); + name = Amazon; + path = ../mediation/mediatedviews/Amazon; + sourceTree = ""; + }; 8AD6189D1981C11F00AC0780 /* internal */ = { isa = PBXGroup; children = ( @@ -246,83 +798,208 @@ path = internal; sourceTree = ""; }; - EC3E5CD31843C6D50070315E = { + 8AE2D6A019CC871800001B70 /* Facebook Audience Network */ = { isa = PBXGroup; children = ( - ECE4EA8C194B768A0069D934 /* sdk */, - EC3E5CDD1843C6D50070315E /* Products */, + 8AE2D79619CC880D00001B70 /* ANAdAdapterBannerFacebook.h */, + 8AE2D79719CC880D00001B70 /* ANAdAdapterBannerFacebook.m */, + 8AE2D79819CC880D00001B70 /* ANAdAdapterInterstitialFacebook.h */, + 8AE2D79919CC880D00001B70 /* ANAdAdapterInterstitialFacebook.m */, + 8A944DE019D5AF94007AAAB0 /* FacebookSDK */, ); + name = "Facebook Audience Network"; sourceTree = ""; }; - EC3E5CDD1843C6D50070315E /* Products */ = { + 8AE2D7A019CC885600001B70 /* MoPub */ = { isa = PBXGroup; children = ( - EC3E5CDC1843C6D50070315E /* libANSDK.a */, - EC48177B1845046A0066BBFE /* ANSDKResources.bundle */, + 8AE2D7A119CC885600001B70 /* ANAdAdapterBannerMoPub.h */, + 8AE2D7A219CC885600001B70 /* ANAdAdapterBannerMoPub.m */, + 8AE2D7A319CC885600001B70 /* ANAdAdapterInterstitialMoPub.h */, + 8AE2D7A419CC885600001B70 /* ANAdAdapterInterstitialMoPub.m */, + 8AE2D7A519CC885600001B70 /* ANAdAdapterMoPubBase.h */, + 8AE2D7A619CC885600001B70 /* ANAdAdapterMoPubBase.m */, + 8A944E0719D5AFCD007AAAB0 /* MoPubSDK */, ); - name = Products; + name = MoPub; + path = ../mediation/mediatedviews/MoPub; sourceTree = ""; }; - ECE4EA8C194B768A0069D934 /* sdk */ = { + 8AE2D7CD19CC889000001B70 /* Millennial Media */ = { isa = PBXGroup; children = ( - ECE4EA8D194B768A0069D934 /* ANAdProtocol.h */, - ECE4EA8E194B768A0069D934 /* ANAdView.h */, - ECE4EA8F194B768A0069D934 /* ANBannerAdView.h */, - ECE4EA90194B768A0069D934 /* ANCustomAdapter.h */, - ECE4EA91194B768A0069D934 /* ANInterstitialAd.h */, - ECE4EA92194B768A0069D934 /* ANLocation.h */, - ECE4EA93194B768A0069D934 /* ANLogManager.h */, - ECE4EA94194B768A0069D934 /* ANTargetingParameters.h */, - 8AD6189D1981C11F00AC0780 /* internal */, - ECE4EA95194B768A0069D934 /* Categories */, - ECE4EACA194B768A0069D934 /* Resources */, + 8AE2D7CE19CC88A000001B70 /* ANAdAdapterBannerMillennialMedia.h */, + 8AE2D7CF19CC88A000001B70 /* ANAdAdapterBannerMillennialMedia.m */, + 8AE2D7D019CC88A000001B70 /* ANAdAdapterInterstitialMillennialMedia.h */, + 8AE2D7D119CC88A000001B70 /* ANAdAdapterInterstitialMillennialMedia.m */, + 8AE2D7D219CC88A000001B70 /* ANAdAdapterMillennialMediaBase.h */, + 8AE2D7D319CC88A000001B70 /* ANAdAdapterMillennialMediaBase.m */, + 8A944E0419D5AFBB007AAAB0 /* MillennialMediaSDK */, ); - name = sdk; - path = ../sdk; + name = "Millennial Media"; sourceTree = ""; }; - ECE4EA95194B768A0069D934 /* Categories */ = { + 8AE2D7DD19CC88C900001B70 /* iAd */ = { isa = PBXGroup; children = ( - ECE4EA96194B768A0069D934 /* NSString+ANCategory.h */, - ECE4EA97194B768A0069D934 /* NSString+ANCategory.m */, - ECE4EA98194B768A0069D934 /* NSTimer+ANCategory.h */, - ECE4EA99194B768A0069D934 /* NSTimer+ANCategory.m */, - ECE4EA9A194B768A0069D934 /* UIView+ANCategory.h */, - ECE4EA9B194B768A0069D934 /* UIView+ANCategory.m */, - ECE4EA9C194B768A0069D934 /* UIWebView+ANCategory.h */, - ECE4EA9D194B768A0069D934 /* UIWebView+ANCategory.m */, + 8AE2D7DE19CC88EF00001B70 /* ANAdAdapterBanneriAd.h */, + 8AE2D7DF19CC88EF00001B70 /* ANAdAdapterBanneriAd.m */, + 8AE2D7E019CC88EF00001B70 /* ANAdAdapterInterstitialiAd.h */, + 8AE2D7E119CC88EF00001B70 /* ANAdAdapterInterstitialiAd.m */, ); - path = Categories; + name = iAd; sourceTree = ""; }; - ECE4EACA194B768A0069D934 /* Resources */ = { + 8AE2D7E619CC88FB00001B70 /* Google AdMob */ = { isa = PBXGroup; children = ( - ECE4EACB194B768A0069D934 /* ANBrowserViewController.xib */, - ECE4EACC194B768A0069D934 /* ANInterstitialAdViewController.xib */, - ECE4EACD194B768A0069D934 /* anjam.js */, - ECE4EACE194B768A0069D934 /* errors.strings */, - ECE4EACF194B768A0069D934 /* images */, - ECE4EAD8194B768A0069D934 /* MRAID.bundle */, - ECE4EAD9194B768A0069D934 /* sdkjs.js */, - 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */, - 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */, + 8AE2D7E719CC891B00001B70 /* ANAdAdapterBannerAdMob.h */, + 8AE2D7E819CC891B00001B70 /* ANAdAdapterBannerAdMob.m */, + 8AE2D7E919CC891B00001B70 /* ANAdAdapterBannerDFP.h */, + 8AE2D7EA19CC891B00001B70 /* ANAdAdapterBannerDFP.m */, + 8AE2D7EB19CC891B00001B70 /* ANAdAdapterInterstitialAdMob.h */, + 8AE2D7EC19CC891B00001B70 /* ANAdAdapterInterstitialAdMob.m */, + 8AE2D7ED19CC891B00001B70 /* ANAdAdapterInterstitialDFP.h */, + 8AE2D7EE19CC891B00001B70 /* ANAdAdapterInterstitialDFP.m */, + 8A944DE219D5AFAB007AAAB0 /* GoogleAdMobSDK */, ); - path = Resources; + name = "Google AdMob"; sourceTree = ""; }; - ECE4EACF194B768A0069D934 /* images */ = { + 8AE2D85419CC9AED00001B70 /* Google AdMob */ = { isa = PBXGroup; children = ( - ECE4EAD0194B768A0069D934 /* interstitial_closebox-down.png */, - ECE4EAD1194B768A0069D934 /* interstitial_closebox-down@2x.png */, - ECE4EAD2194B768A0069D934 /* interstitial_closebox.png */, - ECE4EAD3194B768A0069D934 /* interstitial_closebox@2x.png */, - ECE4EAD4194B768A0069D934 /* UIButtonBarArrowLeft.png */, - ECE4EAD5194B768A0069D934 /* UIButtonBarArrowLeft@2x.png */, + 8AE2D86219CC9B3A00001B70 /* ANGADCustomBannerAd.h */, + 8AE2D86319CC9B3A00001B70 /* ANGADCustomBannerAd.m */, + 8AE2D86419CC9B3A00001B70 /* ANGADCustomInterstitialAd.h */, + 8AE2D86519CC9B3A00001B70 /* ANGADCustomInterstitialAd.m */, + ); + name = "Google AdMob"; + sourceTree = ""; + }; + 8AE2D86A19CC9B5F00001B70 /* MoPub */ = { + isa = PBXGroup; + children = ( + 8AE2D86B19CC9B7300001B70 /* ANMoPubMediationBanner.h */, + 8AE2D86C19CC9B7300001B70 /* ANMoPubMediationBanner.m */, + 8AE2D86D19CC9B7300001B70 /* ANMoPubMediationInterstitial.h */, + 8AE2D86E19CC9B7300001B70 /* ANMoPubMediationInterstitial.m */, + ); + name = MoPub; + sourceTree = ""; + }; + 8AE2D87319CC9D7400001B70 /* Mediating AppNexus */ = { + isa = PBXGroup; + children = ( + 8AE2D85419CC9AED00001B70 /* Google AdMob */, + 8AE2D86A19CC9B5F00001B70 /* MoPub */, + ); + name = "Mediating AppNexus"; + sourceTree = ""; + }; + 8AE2D87419CC9D9B00001B70 /* Mediated By AppNexus */ = { + isa = PBXGroup; + children = ( + 8AD5155119D216E6002E53D6 /* Amazon */, + 8AE2D6A019CC871800001B70 /* Facebook Audience Network */, + 8AE2D7E619CC88FB00001B70 /* Google AdMob */, + 8AE2D7DD19CC88C900001B70 /* iAd */, + 8AE2D7CD19CC889000001B70 /* Millennial Media */, + 8AE2D7A019CC885600001B70 /* MoPub */, + ); + name = "Mediated By AppNexus"; + sourceTree = ""; + }; + EC3E5CD31843C6D50070315E = { + isa = PBXGroup; + children = ( + 8A6BE78019D60C3E00498F77 /* ANSDK.h */, + ECE4EA8C194B768A0069D934 /* ANSDK */, + 8AE2D87419CC9D9B00001B70 /* Mediated By AppNexus */, + 8AE2D87319CC9D7400001B70 /* Mediating AppNexus */, + EC3E5CDD1843C6D50070315E /* Products */, + ); + sourceTree = ""; + }; + EC3E5CDD1843C6D50070315E /* Products */ = { + isa = PBXGroup; + children = ( + EC3E5CDC1843C6D50070315E /* libANSDK.a */, + EC48177B1845046A0066BBFE /* ANSDKResources.bundle */, + 8AE2D6D119CC874B00001B70 /* libANSDKGoogleAdMobAdapter.a */, + 8AE2D70219CC878300001B70 /* libANSDKiAdAdapter.a */, + 8AE2D73319CC879900001B70 /* libANSDKMillennialMediaAdapter.a */, + 8AE2D76419CC87B200001B70 /* libANSDKMoPubAdapter.a */, + 8AE2D79519CC87CC00001B70 /* libANSDKFacebookAdapter.a */, + 8AE2D85319CC9A6F00001B70 /* libANAdapterForGoogleAdMobSDK.a */, + 8AE2D86119CC9B0F00001B70 /* libANAdapterForMoPubSDK.a */, + 8AD5154019D214CA002E53D6 /* libANSDKAmazonAdapter.a */, + ); + name = Products; + sourceTree = ""; + }; + ECE4EA8C194B768A0069D934 /* ANSDK */ = { + isa = PBXGroup; + children = ( + ECE4EA8D194B768A0069D934 /* ANAdProtocol.h */, + ECE4EA8E194B768A0069D934 /* ANAdView.h */, + ECE4EA8F194B768A0069D934 /* ANBannerAdView.h */, + ECE4EA90194B768A0069D934 /* ANCustomAdapter.h */, + ECE4EA91194B768A0069D934 /* ANInterstitialAd.h */, + ECE4EA92194B768A0069D934 /* ANLocation.h */, + ECE4EA93194B768A0069D934 /* ANLogManager.h */, + ECE4EA94194B768A0069D934 /* ANTargetingParameters.h */, + ECE4EA95194B768A0069D934 /* Categories */, + 8AD6189D1981C11F00AC0780 /* internal */, + ECE4EACA194B768A0069D934 /* Resources */, + ); + name = ANSDK; + path = ../sdk; + sourceTree = ""; + }; + ECE4EA95194B768A0069D934 /* Categories */ = { + isa = PBXGroup; + children = ( + 8A3EC16C19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.h */, + 8A3EC16D19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.m */, + ECE4EA96194B768A0069D934 /* NSString+ANCategory.h */, + ECE4EA97194B768A0069D934 /* NSString+ANCategory.m */, + ECE4EA98194B768A0069D934 /* NSTimer+ANCategory.h */, + ECE4EA99194B768A0069D934 /* NSTimer+ANCategory.m */, + ECE4EA9A194B768A0069D934 /* UIView+ANCategory.h */, + ECE4EA9B194B768A0069D934 /* UIView+ANCategory.m */, + ECE4EA9C194B768A0069D934 /* UIWebView+ANCategory.h */, + ECE4EA9D194B768A0069D934 /* UIWebView+ANCategory.m */, + ); + path = Categories; + sourceTree = ""; + }; + ECE4EACA194B768A0069D934 /* Resources */ = { + isa = PBXGroup; + children = ( + ECE4EACB194B768A0069D934 /* ANBrowserViewController.xib */, + ECE4EAD9194B768A0069D934 /* sdkjs.js */, + ECE4EACD194B768A0069D934 /* anjam.js */, + ECE4EACC194B768A0069D934 /* ANInterstitialAdViewController.xib */, + 8A3EC16F19B8FDC70049CD29 /* ANMRAID.bundle */, + ECE4EACE194B768A0069D934 /* errors.strings */, + ECE4EACF194B768A0069D934 /* images */, + ); + path = Resources; + sourceTree = ""; + }; + ECE4EACF194B768A0069D934 /* images */ = { + isa = PBXGroup; + children = ( + 8AD618991981C10700AC0780 /* appnexus_logo_icon.png */, + 8AD6189A1981C10700AC0780 /* appnexus_logo_icon@2x.png */, + ECE4EAD0194B768A0069D934 /* interstitial_closebox-down.png */, + ECE4EAD1194B768A0069D934 /* interstitial_closebox-down@2x.png */, + ECE4EAD2194B768A0069D934 /* interstitial_closebox.png */, + ECE4EAD3194B768A0069D934 /* interstitial_closebox@2x.png */, + ECE4EAD4194B768A0069D934 /* UIButtonBarArrowLeft.png */, ECE4EAD6194B768A0069D934 /* UIButtonBarArrowRight.png */, + ECE4EAD5194B768A0069D934 /* UIButtonBarArrowLeft@2x.png */, ECE4EAD7194B768A0069D934 /* UIButtonBarArrowRight@2x.png */, ); path = images; @@ -330,7 +1007,204 @@ }; /* End PBXGroup section */ +/* Begin PBXHeadersBuildPhase section */ + 8A6BE74519D5F2B500498F77 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A6BE78219D60C3E00498F77 /* ANSDK.h in Headers */, + 8A6BE74619D5F2BD00498F77 /* ANAdProtocol.h in Headers */, + 8A6BE74719D5F2BD00498F77 /* ANAdView.h in Headers */, + 8A6BE74819D5F2BD00498F77 /* ANBannerAdView.h in Headers */, + 8A6BE74919D5F2BD00498F77 /* ANCustomAdapter.h in Headers */, + 8A6BE74A19D5F2BD00498F77 /* ANInterstitialAd.h in Headers */, + 8A6BE74B19D5F2BD00498F77 /* ANLocation.h in Headers */, + 8A6BE74C19D5F2BD00498F77 /* ANLogManager.h in Headers */, + 8A6BE74D19D5F2BD00498F77 /* ANTargetingParameters.h in Headers */, + 8A6BE78819D61EDA00498F77 /* ANBannerAdView+ANContentViewTransitions.h in Headers */, + 8A6BE78919D61EDA00498F77 /* NSString+ANCategory.h in Headers */, + 8A6BE78A19D61EDA00498F77 /* NSTimer+ANCategory.h in Headers */, + 8A6BE78B19D61EDA00498F77 /* UIView+ANCategory.h in Headers */, + 8A6BE78C19D61EDA00498F77 /* UIWebView+ANCategory.h in Headers */, + 8A6BE78D19D61EF900498F77 /* ANAdFetcher.h in Headers */, + 8A6BE78E19D61EF900498F77 /* ANAdRequestUrl.h in Headers */, + 8A6BE78F19D61EF900498F77 /* ANAdResponse.h in Headers */, + 8A6BE79019D61EF900498F77 /* ANAdViewDelegate.h in Headers */, + 8A6BE79119D61EF900498F77 /* ANAdWebViewController.h in Headers */, + 8A6BE79219D61EF900498F77 /* ANANJAMImplementation.h in Headers */, + 8A6BE79319D61EF900498F77 /* ANBasicConfig.h in Headers */, + 8A6BE79419D61EF900498F77 /* ANBrowserViewController.h in Headers */, + 8A6BE79519D61EF900498F77 /* ANClickOverlayView.h in Headers */, + 8A6BE79619D61EF900498F77 /* ANGlobal.h in Headers */, + 8A6BE79719D61EF900498F77 /* ANInterstitialAdViewController.h in Headers */, + 8A6BE79819D61EF900498F77 /* ANLogging.h in Headers */, + 8A6BE79919D61EF900498F77 /* ANMediatedAd.h in Headers */, + 8A6BE79A19D61EF900498F77 /* ANMediationAdViewController.h in Headers */, + 8A6BE79B19D61EF900498F77 /* ANMediationContainerView.h in Headers */, + 8A6BE79C19D61EF900498F77 /* ANMRAIDProperties.h in Headers */, + 8A6BE79D19D61EF900498F77 /* ANMRAIDViewController.h in Headers */, + 8A6BE79E19D61EF900498F77 /* ANPBBuffer.h in Headers */, + 8A6BE79F19D61EF900498F77 /* ANPBContainerView.h in Headers */, + 8A6BE7A019D61EF900498F77 /* ANReachability.h in Headers */, + 8A6BE7A119D61EF900498F77 /* ANWebView.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + /* Begin PBXNativeTarget section */ + 8AD5153219D214CA002E53D6 /* ANSDKAmazonAdapter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AD5153D19D214CA002E53D6 /* Build configuration list for PBXNativeTarget "ANSDKAmazonAdapter" */; + buildPhases = ( + 8AD5153519D214CA002E53D6 /* Sources */, + 8AD5153819D214CA002E53D6 /* Frameworks */, + 8AD5153919D214CA002E53D6 /* Copy Files */, + 8AD5153C19D214CA002E53D6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AD5153319D214CA002E53D6 /* PBXTargetDependency */, + ); + name = ANSDKAmazonAdapter; + productName = AppNexusSDK; + productReference = 8AD5154019D214CA002E53D6 /* libANSDKAmazonAdapter.a */; + productType = "com.apple.product-type.library.static"; + }; + 8AE2D6A119CC874B00001B70 /* ANSDKGoogleAdMobAdapter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AE2D6CE19CC874B00001B70 /* Build configuration list for PBXNativeTarget "ANSDKGoogleAdMobAdapter" */; + buildPhases = ( + 8AE2D6A419CC874B00001B70 /* Sources */, + 8AE2D6C219CC874B00001B70 /* Frameworks */, + 8AE2D6C319CC874B00001B70 /* Copy Files */, + 8AE2D6CD19CC874B00001B70 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AE2D7F819CC897000001B70 /* PBXTargetDependency */, + ); + name = ANSDKGoogleAdMobAdapter; + productName = AppNexusSDK; + productReference = 8AE2D6D119CC874B00001B70 /* libANSDKGoogleAdMobAdapter.a */; + productType = "com.apple.product-type.library.static"; + }; + 8AE2D6D219CC878300001B70 /* ANSDKiAdAdapter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AE2D6FF19CC878300001B70 /* Build configuration list for PBXNativeTarget "ANSDKiAdAdapter" */; + buildPhases = ( + 8AE2D6D519CC878300001B70 /* Sources */, + 8AE2D6F319CC878300001B70 /* Frameworks */, + 8AE2D6F419CC878300001B70 /* Copy Files */, + 8AE2D6FE19CC878300001B70 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AE2D7FA19CC897300001B70 /* PBXTargetDependency */, + ); + name = ANSDKiAdAdapter; + productName = AppNexusSDK; + productReference = 8AE2D70219CC878300001B70 /* libANSDKiAdAdapter.a */; + productType = "com.apple.product-type.library.static"; + }; + 8AE2D70319CC879900001B70 /* ANSDKMillennialMediaAdapter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AE2D73019CC879900001B70 /* Build configuration list for PBXNativeTarget "ANSDKMillennialMediaAdapter" */; + buildPhases = ( + 8AE2D70619CC879900001B70 /* Sources */, + 8AE2D72419CC879900001B70 /* Frameworks */, + 8AE2D72519CC879900001B70 /* Copy Files */, + 8AE2D72F19CC879900001B70 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AE2D7FC19CC897800001B70 /* PBXTargetDependency */, + ); + name = ANSDKMillennialMediaAdapter; + productName = AppNexusSDK; + productReference = 8AE2D73319CC879900001B70 /* libANSDKMillennialMediaAdapter.a */; + productType = "com.apple.product-type.library.static"; + }; + 8AE2D73419CC87B200001B70 /* ANSDKMoPubAdapter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AE2D76119CC87B200001B70 /* Build configuration list for PBXNativeTarget "ANSDKMoPubAdapter" */; + buildPhases = ( + 8AE2D73719CC87B200001B70 /* Sources */, + 8AE2D75519CC87B200001B70 /* Frameworks */, + 8AE2D75619CC87B200001B70 /* Copy Files */, + 8AE2D76019CC87B200001B70 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AE2D7FE19CC897B00001B70 /* PBXTargetDependency */, + ); + name = ANSDKMoPubAdapter; + productName = AppNexusSDK; + productReference = 8AE2D76419CC87B200001B70 /* libANSDKMoPubAdapter.a */; + productType = "com.apple.product-type.library.static"; + }; + 8AE2D76519CC87CC00001B70 /* ANSDKFacebookAdapter */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AE2D79219CC87CC00001B70 /* Build configuration list for PBXNativeTarget "ANSDKFacebookAdapter" */; + buildPhases = ( + 8AE2D76819CC87CC00001B70 /* Sources */, + 8AE2D78619CC87CC00001B70 /* Frameworks */, + 8AE2D78719CC87CC00001B70 /* Copy Files */, + 8AE2D79119CC87CC00001B70 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AE2D80019CC898000001B70 /* PBXTargetDependency */, + ); + name = ANSDKFacebookAdapter; + productName = AppNexusSDK; + productReference = 8AE2D79519CC87CC00001B70 /* libANSDKFacebookAdapter.a */; + productType = "com.apple.product-type.library.static"; + }; + 8AE2D84519CC9A6F00001B70 /* ANAdapterForGoogleAdMobSDK */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AE2D85019CC9A6F00001B70 /* Build configuration list for PBXNativeTarget "ANAdapterForGoogleAdMobSDK" */; + buildPhases = ( + 8AE2D84819CC9A6F00001B70 /* Sources */, + 8AE2D84B19CC9A6F00001B70 /* Frameworks */, + 8AE2D84C19CC9A6F00001B70 /* Copy Files */, + 8AE2D84F19CC9A6F00001B70 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AE2D84619CC9A6F00001B70 /* PBXTargetDependency */, + ); + name = ANAdapterForGoogleAdMobSDK; + productName = AppNexusSDK; + productReference = 8AE2D85319CC9A6F00001B70 /* libANAdapterForGoogleAdMobSDK.a */; + productType = "com.apple.product-type.library.static"; + }; + 8AE2D85519CC9B0F00001B70 /* ANAdapterForMoPubSDK */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AE2D85E19CC9B0F00001B70 /* Build configuration list for PBXNativeTarget "ANAdapterForMoPubSDK" */; + buildPhases = ( + 8AE2D85819CC9B0F00001B70 /* Sources */, + 8AE2D85919CC9B0F00001B70 /* Frameworks */, + 8AE2D85A19CC9B0F00001B70 /* Copy Files */, + 8AE2D85D19CC9B0F00001B70 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AE2D85619CC9B0F00001B70 /* PBXTargetDependency */, + ); + name = ANAdapterForMoPubSDK; + productName = AppNexusSDK; + productReference = 8AE2D86119CC9B0F00001B70 /* libANAdapterForMoPubSDK.a */; + productType = "com.apple.product-type.library.static"; + }; EC3E5CDB1843C6D50070315E /* ANSDK */ = { isa = PBXNativeTarget; buildConfigurationList = EC3E5CFF1843C6D60070315E /* Build configuration list for PBXNativeTarget "ANSDK" */; @@ -339,6 +1213,8 @@ EC3E5CD91843C6D50070315E /* Frameworks */, EC3E5CDA1843C6D50070315E /* Copy Files */, EC84778B18440F2200A8BC80 /* Resources */, + 8A6BE74519D5F2B500498F77 /* Headers */, + 8A6BE76819D5F34500498F77 /* Build Framework Script */, ); buildRules = ( ); @@ -375,6 +1251,11 @@ attributes = { LastUpgradeCheck = 0510; ORGANIZATIONNAME = AppNexus; + TargetAttributes = { + 8A6BE73919D5EEE500498F77 = { + CreatedOnToolsVersion = 6.0.1; + }; + }; }; buildConfigurationList = EC3E5CD71843C6D50070315E /* Build configuration list for PBXProject "ANSDK" */; compatibilityVersion = "Xcode 3.2"; @@ -390,11 +1271,76 @@ targets = ( EC3E5CDB1843C6D50070315E /* ANSDK */, EC48177A1845046A0066BBFE /* ANSDKResources */, + 8AE2D6A119CC874B00001B70 /* ANSDKGoogleAdMobAdapter */, + 8AE2D6D219CC878300001B70 /* ANSDKiAdAdapter */, + 8AE2D70319CC879900001B70 /* ANSDKMillennialMediaAdapter */, + 8AE2D73419CC87B200001B70 /* ANSDKMoPubAdapter */, + 8AE2D76519CC87CC00001B70 /* ANSDKFacebookAdapter */, + 8AE2D84519CC9A6F00001B70 /* ANAdapterForGoogleAdMobSDK */, + 8AE2D85519CC9B0F00001B70 /* ANAdapterForMoPubSDK */, + 8AD5153219D214CA002E53D6 /* ANSDKAmazonAdapter */, + 8A6BE73919D5EEE500498F77 /* BuildANSDKFramework */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 8AD5153C19D214CA002E53D6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6CD19CC874B00001B70 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6FE19CC878300001B70 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D72F19CC879900001B70 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D76019CC87B200001B70 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D79119CC87CC00001B70 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D84F19CC9A6F00001B70 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D85D19CC9B0F00001B70 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; EC4817791845046A0066BBFE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -411,10 +1357,10 @@ ECE4EB0C194B76960069D934 /* UIButtonBarArrowLeft@2x.png in Resources */, ECE4EB0D194B76960069D934 /* UIButtonBarArrowRight.png in Resources */, ECE4EB0E194B76960069D934 /* UIButtonBarArrowRight@2x.png in Resources */, - ECE4EB0F194B76960069D934 /* MRAID.bundle in Resources */, ECE4EB05194B76960069D934 /* anjam.js in Resources */, ECE4EB10194B76960069D934 /* sdkjs.js in Resources */, ECE4EB06194B76960069D934 /* errors.strings in Resources */, + 8A3EC17019B8FDCA0049CD29 /* ANMRAID.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -422,12 +1368,123 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8A3B378119D623C300CE24A5 /* ANSDKResources.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 8A6BE73D19D5EF1600498F77 /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\n# If we're already inside this script then die\nif [ -n \"$RW_MULTIPLATFORM_BUILD_IN_PROGRESS\" ]; then\nexit 0\nfi\nexport RW_MULTIPLATFORM_BUILD_IN_PROGRESS=1\n\nRW_FRAMEWORK_NAME=${PROJECT_NAME}\nRW_INPUT_STATIC_LIB=\"lib${PROJECT_NAME}.a\"\nRW_FRAMEWORK_LOCATION=\"${BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.framework\"\n\nfunction build_static_library {\n # Will rebuild the static library as specified\n # build_static_library sdk\n xcrun xcodebuild -project \"${PROJECT_FILE_PATH}\" \\\n -target \"${TARGET_NAME}\" \\\n -configuration \"${CONFIGURATION}\" \\\n -sdk \"${1}\" \\\n ONLY_ACTIVE_ARCH=NO \\\n BUILD_DIR=\"${BUILD_DIR}\" \\\n OBJROOT=\"${OBJROOT}\" \\\n BUILD_ROOT=\"${BUILD_ROOT}\" \\\n SYMROOT=\"${SYMROOT}\" $ACTION\n}\n\nfunction make_fat_library {\n # Will smash 2 static libs together\n # make_fat_library in1 in2 out\n xcrun lipo -create \"${1}\" \"${2}\" -output \"${3}\"\n}\n\n# 1 - Extract the platform (iphoneos/iphonesimulator) from the SDK name\nif [[ \"$SDK_NAME\" =~ ([A-Za-z]+) ]]; then\nRW_SDK_PLATFORM=${BASH_REMATCH[1]}\nelse\necho \"Could not find platform name from SDK_NAME: $SDK_NAME\"\nexit 1\nfi\n\n# 2 - Extract the version from the SDK\nif [[ \"$SDK_NAME\" =~ ([0-9]+.*$) ]]; then\nRW_SDK_VERSION=${BASH_REMATCH[1]}\nelse\necho \"Could not find sdk version from SDK_NAME: $SDK_NAME\"\nexit 1\nfi\n\n# 3 - Determine the other platform\nif [ \"$RW_SDK_PLATFORM\" == \"iphoneos\" ]; then\nRW_OTHER_PLATFORM=iphonesimulator\nelse\nRW_OTHER_PLATFORM=iphoneos\nfi\n\n# 4 - Find the build directory\nif [[ \"$BUILT_PRODUCTS_DIR\" =~ (.*)$RW_SDK_PLATFORM$ ]]; then\nRW_OTHER_BUILT_PRODUCTS_DIR=\"${BASH_REMATCH[1]}${RW_OTHER_PLATFORM}\"\nelse\necho \"Could not find other platform build directory.\"\nexit 1\nfi\n\n# Build the other platform.\nbuild_static_library \"${RW_OTHER_PLATFORM}${RW_SDK_VERSION}\"\n\n# If we're currently building for iphonesimulator, then need to rebuild\n# to ensure that we get both i386 and x86_64\nif [ \"$RW_SDK_PLATFORM\" == \"iphonesimulator\" ]; then\nbuild_static_library \"${SDK_NAME}\"\nfi\n\n# Join the 2 static libs into 1 and push into the .framework\nmake_fat_library \"${BUILT_PRODUCTS_DIR}/${RW_INPUT_STATIC_LIB}\" \\\n\"${RW_OTHER_BUILT_PRODUCTS_DIR}/${RW_INPUT_STATIC_LIB}\" \\\n\"${RW_FRAMEWORK_LOCATION}/Versions/A/${RW_FRAMEWORK_NAME}\"\n\n# Ensure that the framework is present in both platform's build directories\ncp -a \"${RW_FRAMEWORK_LOCATION}/Versions/A/${RW_FRAMEWORK_NAME}\" \\\n\"${RW_OTHER_BUILT_PRODUCTS_DIR}/${RW_FRAMEWORK_NAME}.framework/Versions/A/${RW_FRAMEWORK_NAME}\"\n\n# Copy the framework to the user's desktop\nditto \"${RW_FRAMEWORK_LOCATION}\" \"${PROJECT_DIR}/Products/${RW_FRAMEWORK_NAME}.framework\""; + showEnvVarsInLog = 0; + }; + 8A6BE76819D5F34500498F77 /* Build Framework Script */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 12; + files = ( + ); + inputPaths = ( + ); + name = "Build Framework Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#set -e\n\n#export FRAMEWORK_LOCN=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.framework\"\n\n#if [ -d ${FRAMEWORK_LOCN} ];\n#then\n# rm -rf ${FRAMEWORK_LOCN}\n#fi\n#\n# Create the path to the real Headers die\n#mkdir -p \"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n#\n# Create the required symlinks\n#/bin/ln -sfh A \"${FRAMEWORK_LOCN}/Versions/Current\"\n#/bin/ln -sfh Versions/Current/Headers \"${FRAMEWORK_LOCN}/Headers\"\n#/bin/ln -sfh \"Versions/Current/${PRODUCT_NAME}\" \\\n#\"${FRAMEWORK_LOCN}/${PRODUCT_NAME}\"\n#\n# Copy the public headers into the framework\n#/bin/cp -a \"${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/\" \\\n#\"${FRAMEWORK_LOCN}/Versions/A/Headers\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ + 8AD5153519D214CA002E53D6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AD5155E19D216E6002E53D6 /* ANAdAdapterBaseAmazon.m in Sources */, + 8AD5155F19D216E6002E53D6 /* ANAdAdapterInterstitialAmazon.m in Sources */, + 8AD5155D19D216E6002E53D6 /* ANAdAdapterBannerAmazon.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6A419CC874B00001B70 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AE2D7F019CC891B00001B70 /* ANAdAdapterBannerDFP.m in Sources */, + 8AE2D7EF19CC891B00001B70 /* ANAdAdapterBannerAdMob.m in Sources */, + 8AE2D7F219CC891B00001B70 /* ANAdAdapterInterstitialDFP.m in Sources */, + 8AE2D7F119CC891B00001B70 /* ANAdAdapterInterstitialAdMob.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D6D519CC878300001B70 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AE2D7E319CC88EF00001B70 /* ANAdAdapterInterstitialiAd.m in Sources */, + 8AE2D7E219CC88EF00001B70 /* ANAdAdapterBanneriAd.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D70619CC879900001B70 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AE2D7D719CC88AA00001B70 /* ANAdAdapterBannerMillennialMedia.m in Sources */, + 8AE2D7D819CC88AA00001B70 /* ANAdAdapterInterstitialMillennialMedia.m in Sources */, + 8AE2D7D919CC88AA00001B70 /* ANAdAdapterMillennialMediaBase.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D73719CC87B200001B70 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AE2D7C519CC885600001B70 /* ANAdAdapterBannerMoPub.m in Sources */, + 8AE2D7C719CC885600001B70 /* ANAdAdapterMoPubBase.m in Sources */, + 8AE2D7C619CC885600001B70 /* ANAdAdapterInterstitialMoPub.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D76819CC87CC00001B70 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AE2D79C19CC881D00001B70 /* ANAdAdapterBannerFacebook.m in Sources */, + 8AE2D79D19CC881D00001B70 /* ANAdAdapterInterstitialFacebook.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D84819CC9A6F00001B70 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AE2D86619CC9B3A00001B70 /* ANGADCustomBannerAd.m in Sources */, + 8AE2D86719CC9B3A00001B70 /* ANGADCustomInterstitialAd.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AE2D85819CC9B0F00001B70 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AE2D86F19CC9B7300001B70 /* ANMoPubMediationBanner.m in Sources */, + 8AE2D87019CC9B7300001B70 /* ANMoPubMediationInterstitial.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; EC3E5CD81843C6D50070315E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -454,6 +1511,7 @@ 8AD618DD1981C11F00AC0780 /* ANMRAIDViewController.m in Sources */, 8AD618D31981C11F00AC0780 /* ANClickOverlayView.m in Sources */, 8AD618DF1981C11F00AC0780 /* ANPBContainerView.m in Sources */, + 8A3EC16E19B8FD9A0049CD29 /* ANBannerAdView+ANContentViewTransitions.m in Sources */, ECE4EADD194B768A0069D934 /* UIWebView+ANCategory.m in Sources */, 8AD618E01981C11F00AC0780 /* ANReachability.m in Sources */, ECE4EADC194B768A0069D934 /* UIView+ANCategory.m in Sources */, @@ -473,6 +1531,51 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 8A6BE74419D5F19800498F77 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8A6BE74319D5F19800498F77 /* PBXContainerItemProxy */; + }; + 8AD5153319D214CA002E53D6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AD5153419D214CA002E53D6 /* PBXContainerItemProxy */; + }; + 8AE2D7F819CC897000001B70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AE2D7F719CC897000001B70 /* PBXContainerItemProxy */; + }; + 8AE2D7FA19CC897300001B70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AE2D7F919CC897300001B70 /* PBXContainerItemProxy */; + }; + 8AE2D7FC19CC897800001B70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AE2D7FB19CC897800001B70 /* PBXContainerItemProxy */; + }; + 8AE2D7FE19CC897B00001B70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AE2D7FD19CC897B00001B70 /* PBXContainerItemProxy */; + }; + 8AE2D80019CC898000001B70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AE2D7FF19CC898000001B70 /* PBXContainerItemProxy */; + }; + 8AE2D84619CC9A6F00001B70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AE2D84719CC9A6F00001B70 /* PBXContainerItemProxy */; + }; + 8AE2D85619CC9B0F00001B70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC3E5CDB1843C6D50070315E /* ANSDK */; + targetProxy = 8AE2D85719CC9B0F00001B70 /* PBXContainerItemProxy */; + }; EC4817951845049D0066BBFE /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = EC48177A1845046A0066BBFE /* ANSDKResources */; @@ -481,10 +1584,268 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 8A6BE73B19D5EEE500498F77 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 8A6BE73C19D5EEE500498F77 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 8AD5153E19D214CA002E53D6 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/Amazon/AmazonSDK"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ../mediation/mediatedviews/Amazon/Amazon.pch; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKAmazonAdapter; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AD5153F19D214CA002E53D6 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/Amazon/AmazonSDK"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ../mediation/mediatedviews/Amazon/Amazon.pch; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKAmazonAdapter; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AE2D6CF19CC874B00001B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/**", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKGoogleAdMobAdapter; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AE2D6D019CC874B00001B70 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/**", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + ); + LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKGoogleAdMobAdapter; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AE2D70019CC878300001B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKiAdAdapter; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AE2D70119CC878300001B70 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKiAdAdapter; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AE2D73119CC879900001B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKMillennialMediaAdapter; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AE2D73219CC879900001B70 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKMillennialMediaAdapter; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AE2D76219CC87B200001B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKMoPubAdapter; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AE2D76319CC87B200001B70 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKMoPubAdapter; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AE2D79319CC87CC00001B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/Facebook/FacebookSDK"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKFacebookAdapter; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AE2D79419CC87CC00001B70 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../mediation/mediatedviews/Facebook/FacebookSDK"; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANSDKFacebookAdapter; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AE2D85119CC9A6F00001B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/**", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANAdapterForGoogleAdMobSDK; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AE2D85219CC9A6F00001B70 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/**", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANAdapterForGoogleAdMobSDK; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AE2D85F19CC9B0F00001B70 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + LIBRARY_SEARCH_PATHS = ""; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANAdapterForMoPubSDK; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8AE2D86019CC9B0F00001B70 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/ANSDK.dst; + FRAMEWORK_SEARCH_PATHS = ""; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + LIBRARY_SEARCH_PATHS = ""; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = ANAdapterForMoPubSDK; + SKIP_INSTALL = YES; + }; + name = Release; + }; EC3E5CFD1843C6D60070315E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -515,9 +1876,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IBC_FLATTEN_NIBS = NO; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; + SKIP_INSTALL = YES; SYMROOT = build; VALID_ARCHS = "arm64 armv7 armv7s i386"; }; @@ -527,6 +1889,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD)", + armv7s, + ); CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -551,9 +1917,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IBC_FLATTEN_NIBS = NO; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; ONLY_ACTIVE_ARCH = NO; SDKROOT = iphoneos; + SKIP_INSTALL = YES; SYMROOT = build; VALIDATE_PRODUCT = YES; VALID_ARCHS = "arm64 armv7 armv7s i386"; @@ -566,7 +1933,9 @@ DSTROOT = /tmp/ANSDK.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; OTHER_LDFLAGS = "-ObjC"; + PRIVATE_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PrivateHeaders"; PRODUCT_NAME = ANSDK; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; SKIP_INSTALL = YES; }; name = Debug; @@ -577,7 +1946,9 @@ DSTROOT = /tmp/ANSDK.dst; GCC_PRECOMPILE_PREFIX_HEADER = YES; OTHER_LDFLAGS = "-ObjC"; + PRIVATE_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/PrivateHeaders"; PRODUCT_NAME = ANSDK; + PUBLIC_HEADERS_FOLDER_PATH = "$(CONTENTS_FOLDER_PATH)/Headers"; SKIP_INSTALL = YES; }; name = Release; @@ -597,7 +1968,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; - SYMROOT = ""; + SYMROOT = build; WRAPPER_EXTENSION = bundle; }; name = Debug; @@ -614,7 +1985,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.8; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; - SYMROOT = ""; + SYMROOT = build; WRAPPER_EXTENSION = bundle; }; name = Release; @@ -622,6 +1993,87 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 8A6BE73A19D5EEE500498F77 /* Build configuration list for PBXAggregateTarget "BuildANSDKFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8A6BE73B19D5EEE500498F77 /* Debug */, + 8A6BE73C19D5EEE500498F77 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AD5153D19D214CA002E53D6 /* Build configuration list for PBXNativeTarget "ANSDKAmazonAdapter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AD5153E19D214CA002E53D6 /* Debug */, + 8AD5153F19D214CA002E53D6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AE2D6CE19CC874B00001B70 /* Build configuration list for PBXNativeTarget "ANSDKGoogleAdMobAdapter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AE2D6CF19CC874B00001B70 /* Debug */, + 8AE2D6D019CC874B00001B70 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AE2D6FF19CC878300001B70 /* Build configuration list for PBXNativeTarget "ANSDKiAdAdapter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AE2D70019CC878300001B70 /* Debug */, + 8AE2D70119CC878300001B70 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AE2D73019CC879900001B70 /* Build configuration list for PBXNativeTarget "ANSDKMillennialMediaAdapter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AE2D73119CC879900001B70 /* Debug */, + 8AE2D73219CC879900001B70 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AE2D76119CC87B200001B70 /* Build configuration list for PBXNativeTarget "ANSDKMoPubAdapter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AE2D76219CC87B200001B70 /* Debug */, + 8AE2D76319CC87B200001B70 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AE2D79219CC87CC00001B70 /* Build configuration list for PBXNativeTarget "ANSDKFacebookAdapter" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AE2D79319CC87CC00001B70 /* Debug */, + 8AE2D79419CC87CC00001B70 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AE2D85019CC9A6F00001B70 /* Build configuration list for PBXNativeTarget "ANAdapterForGoogleAdMobSDK" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AE2D85119CC9A6F00001B70 /* Debug */, + 8AE2D85219CC9A6F00001B70 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AE2D85E19CC9B0F00001B70 /* Build configuration list for PBXNativeTarget "ANAdapterForMoPubSDK" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AE2D85F19CC9B0F00001B70 /* Debug */, + 8AE2D86019CC9B0F00001B70 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; EC3E5CD71843C6D50070315E /* Build configuration list for PBXProject "ANSDK" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/BinaryProjects/ANSDK.xcodeproj/xcshareddata/xcschemes/ANSDK.xcscheme b/BinaryProjects/ANSDK.xcodeproj/xcshareddata/xcschemes/ANSDK.xcscheme index 7f3c92b5e..57cce3a6c 100644 --- a/BinaryProjects/ANSDK.xcodeproj/xcshareddata/xcschemes/ANSDK.xcscheme +++ b/BinaryProjects/ANSDK.xcodeproj/xcshareddata/xcschemes/ANSDK.xcscheme @@ -49,6 +49,15 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> + + + + diff --git a/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/xcshareddata/xcschemes/ANAdapterForMoPubSDK.xcscheme b/BinaryProjects/ANSDK.xcodeproj/xcshareddata/xcschemes/ANSDKAmazonAdapter.xcscheme similarity index 63% rename from BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/xcshareddata/xcschemes/ANAdapterForMoPubSDK.xcscheme rename to BinaryProjects/ANSDK.xcodeproj/xcshareddata/xcschemes/ANSDKAmazonAdapter.xcscheme index b63016693..103e9934c 100644 --- a/BinaryProjects/ANAdapterForMoPubSDK.xcodeproj/xcshareddata/xcschemes/ANAdapterForMoPubSDK.xcscheme +++ b/BinaryProjects/ANSDK.xcodeproj/xcshareddata/xcschemes/ANSDKAmazonAdapter.xcscheme @@ -1,6 +1,6 @@ + BlueprintIdentifier = "8AD5153219D214CA002E53D6" + BuildableName = "libANSDKAmazonAdapter.a" + BlueprintName = "ANSDKAmazonAdapter" + ReferencedContainer = "container:ANSDK.xcodeproj"> @@ -39,6 +39,15 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" allowLocationSimulation = "YES"> + + + + @@ -48,6 +57,15 @@ useCustomWorkingDirectory = "NO" buildConfiguration = "Release" debugDocumentVersioning = "YES"> + + + + diff --git a/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/project.pbxproj b/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/project.pbxproj deleted file mode 100644 index 3740feab3..000000000 --- a/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/project.pbxproj +++ /dev/null @@ -1,297 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - ECE4EB5D194B8B250069D934 /* ANAdAdapterBannerFacebook.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EB59194B8B250069D934 /* ANAdAdapterBannerFacebook.m */; }; - ECE4EB5E194B8B250069D934 /* ANAdAdapterInterstitialFacebook.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EB5B194B8B250069D934 /* ANAdAdapterInterstitialFacebook.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - ECE4EB20194B79AC0069D934 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - ECE4EB22194B79AC0069D934 /* libANSDKFacebookAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKFacebookAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ECE4EB4C194B7B700069D934 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - ECE4EB4D194B7B700069D934 /* ANAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdView.h; sourceTree = ""; }; - ECE4EB4E194B7B700069D934 /* ANBannerAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBannerAdView.h; sourceTree = ""; }; - ECE4EB4F194B7B700069D934 /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - ECE4EB50194B7B700069D934 /* ANInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAd.h; sourceTree = ""; }; - ECE4EB51194B7B700069D934 /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - ECE4EB52194B7B700069D934 /* ANLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogManager.h; sourceTree = ""; }; - ECE4EB53194B7B700069D934 /* ANSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANSDKResources.bundle; sourceTree = ""; }; - ECE4EB54194B7B700069D934 /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - ECE4EB55194B7B700069D934 /* libANSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libANSDK.a; sourceTree = ""; }; - ECE4EB58194B8B250069D934 /* ANAdAdapterBannerFacebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerFacebook.h; sourceTree = ""; }; - ECE4EB59194B8B250069D934 /* ANAdAdapterBannerFacebook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerFacebook.m; sourceTree = ""; }; - ECE4EB5A194B8B250069D934 /* ANAdAdapterInterstitialFacebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialFacebook.h; sourceTree = ""; }; - ECE4EB5B194B8B250069D934 /* ANAdAdapterInterstitialFacebook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialFacebook.m; sourceTree = ""; }; - ECE4EB60194B90DE0069D934 /* ANBasicConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ECE4EB1F194B79AC0069D934 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - ECE4EB19194B79AC0069D934 = { - isa = PBXGroup; - children = ( - ECE4EB60194B90DE0069D934 /* ANBasicConfig.h */, - ECE4EB57194B8B250069D934 /* Facebook */, - ECE4EB4B194B7B700069D934 /* ANSDK */, - ECE4EB23194B79AC0069D934 /* Products */, - ); - sourceTree = ""; - }; - ECE4EB23194B79AC0069D934 /* Products */ = { - isa = PBXGroup; - children = ( - ECE4EB22194B79AC0069D934 /* libANSDKFacebookAdapter.a */, - ); - name = Products; - sourceTree = ""; - }; - ECE4EB4B194B7B700069D934 /* ANSDK */ = { - isa = PBXGroup; - children = ( - ECE4EB4C194B7B700069D934 /* ANAdProtocol.h */, - ECE4EB4D194B7B700069D934 /* ANAdView.h */, - ECE4EB4E194B7B700069D934 /* ANBannerAdView.h */, - ECE4EB4F194B7B700069D934 /* ANCustomAdapter.h */, - ECE4EB50194B7B700069D934 /* ANInterstitialAd.h */, - ECE4EB51194B7B700069D934 /* ANLocation.h */, - ECE4EB52194B7B700069D934 /* ANLogManager.h */, - ECE4EB53194B7B700069D934 /* ANSDKResources.bundle */, - ECE4EB54194B7B700069D934 /* ANTargetingParameters.h */, - ECE4EB55194B7B700069D934 /* libANSDK.a */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; - ECE4EB57194B8B250069D934 /* Facebook */ = { - isa = PBXGroup; - children = ( - ECE4EB58194B8B250069D934 /* ANAdAdapterBannerFacebook.h */, - ECE4EB59194B8B250069D934 /* ANAdAdapterBannerFacebook.m */, - ECE4EB5A194B8B250069D934 /* ANAdAdapterInterstitialFacebook.h */, - ECE4EB5B194B8B250069D934 /* ANAdAdapterInterstitialFacebook.m */, - ); - name = Facebook; - path = ../mediation/mediatedviews/Facebook; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - ECE4EB21194B79AC0069D934 /* ANSDKFacebookAdapter */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECE4EB45194B79AC0069D934 /* Build configuration list for PBXNativeTarget "ANSDKFacebookAdapter" */; - buildPhases = ( - ECE4EB1E194B79AC0069D934 /* Sources */, - ECE4EB1F194B79AC0069D934 /* Frameworks */, - ECE4EB20194B79AC0069D934 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANSDKFacebookAdapter; - productName = ANSDKFacebookAdapter; - productReference = ECE4EB22194B79AC0069D934 /* libANSDKFacebookAdapter.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ECE4EB1A194B79AC0069D934 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = ECE4EB1D194B79AC0069D934 /* Build configuration list for PBXProject "ANSDKFacebookAdapter" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = ECE4EB19194B79AC0069D934; - productRefGroup = ECE4EB23194B79AC0069D934 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ECE4EB21194B79AC0069D934 /* ANSDKFacebookAdapter */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - ECE4EB1E194B79AC0069D934 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECE4EB5D194B8B250069D934 /* ANAdAdapterBannerFacebook.m in Sources */, - ECE4EB5E194B8B250069D934 /* ANAdAdapterInterstitialFacebook.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - ECE4EB43194B79AC0069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LIBRARY_SEARCH_PATHS = ""; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECE4EB44194B79AC0069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LIBRARY_SEARCH_PATHS = ""; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ECE4EB46194B79AC0069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKFacebookAdapter.dst; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/../mediation/mediatedviews/Facebook", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - ECE4EB47194B79AC0069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKFacebookAdapter.dst; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/../mediation/mediatedviews/Facebook", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ECE4EB1D194B79AC0069D934 /* Build configuration list for PBXProject "ANSDKFacebookAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EB43194B79AC0069D934 /* Debug */, - ECE4EB44194B79AC0069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECE4EB45194B79AC0069D934 /* Build configuration list for PBXNativeTarget "ANSDKFacebookAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EB46194B79AC0069D934 /* Debug */, - ECE4EB47194B79AC0069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = ECE4EB1A194B79AC0069D934 /* Project object */; -} diff --git a/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index b9c83e6a1..000000000 --- a/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKFacebookAdapter.xcscheme b/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKFacebookAdapter.xcscheme deleted file mode 100644 index 54d22cb82..000000000 --- a/BinaryProjects/ANSDKFacebookAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKFacebookAdapter.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/project.pbxproj b/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/project.pbxproj deleted file mode 100644 index 3779be3e4..000000000 --- a/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/project.pbxproj +++ /dev/null @@ -1,405 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - ECFDED0F1950E4450043F777 /* ANAdAdapterBannerAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDECE51950E4450043F777 /* ANAdAdapterBannerAdMob.m */; }; - ECFDED101950E4450043F777 /* ANAdAdapterBannerDFP.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDECE71950E4450043F777 /* ANAdAdapterBannerDFP.m */; }; - ECFDED111950E4450043F777 /* ANAdAdapterInterstitialAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDECE91950E4450043F777 /* ANAdAdapterInterstitialAdMob.m */; }; - ECFDED121950E4450043F777 /* ANAdAdapterInterstitialDFP.m in Sources */ = {isa = PBXBuildFile; fileRef = ECFDECEB1950E4450043F777 /* ANAdAdapterInterstitialDFP.m */; }; - ECFDED651950E4F00043F777 /* ANSDKResources.bundle in Copy Files */ = {isa = PBXBuildFile; fileRef = ECFDECDF1950E3F70043F777 /* ANSDKResources.bundle */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - ECFDECAC1950E2870043F777 /* Copy Files */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ECFDED651950E4F00043F777 /* ANSDKResources.bundle in Copy Files */, - ); - name = "Copy Files"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 8AA18EBA19818D7100F937C4 /* DFPBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPBannerView.h; sourceTree = ""; }; - 8AA18EBB19818D7100F937C4 /* DFPExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPExtras.h; sourceTree = ""; }; - 8AA18EBC19818D7100F937C4 /* DFPInterstitial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPInterstitial.h; sourceTree = ""; }; - 8AA18EBD19818D7100F937C4 /* DFPSwipeableBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DFPSwipeableBannerView.h; sourceTree = ""; }; - 8AA18EBE19818D7100F937C4 /* GADAdSizeDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdSizeDelegate.h; sourceTree = ""; }; - 8AA18EBF19818D7100F937C4 /* GADAppEventDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAppEventDelegate.h; sourceTree = ""; }; - 8AA18EC019818D7100F937C4 /* GADSwipeableBannerViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADSwipeableBannerViewDelegate.h; sourceTree = ""; }; - 8AA18EC219818D7100F937C4 /* GADCustomEventBanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBanner.h; sourceTree = ""; }; - 8AA18EC319818D7100F937C4 /* GADCustomEventBannerDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBannerDelegate.h; sourceTree = ""; }; - 8AA18EC419818D7100F937C4 /* GADCustomEventExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventExtras.h; sourceTree = ""; }; - 8AA18EC519818D7100F937C4 /* GADCustomEventInterstitial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitial.h; sourceTree = ""; }; - 8AA18EC619818D7100F937C4 /* GADCustomEventInterstitialDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitialDelegate.h; sourceTree = ""; }; - 8AA18EC719818D7100F937C4 /* GADCustomEventRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADCustomEventRequest.h; sourceTree = ""; }; - 8AA18EC919818D7100F937C4 /* GADSearchBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADSearchBannerView.h; sourceTree = ""; }; - 8AA18ECA19818D7100F937C4 /* GADSearchRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADSearchRequest.h; sourceTree = ""; }; - 8AA18ECB19818D7100F937C4 /* GADAdMobExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdMobExtras.h; sourceTree = ""; }; - 8AA18ECC19818D7100F937C4 /* GADAdNetworkExtras.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdNetworkExtras.h; sourceTree = ""; }; - 8AA18ECD19818D7100F937C4 /* GADAdSize.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADAdSize.h; sourceTree = ""; }; - 8AA18ECE19818D7100F937C4 /* GADBannerView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADBannerView.h; sourceTree = ""; }; - 8AA18ECF19818D7100F937C4 /* GADBannerViewDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADBannerViewDelegate.h; sourceTree = ""; }; - 8AA18ED019818D7100F937C4 /* GADInAppPurchase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInAppPurchase.h; sourceTree = ""; }; - 8AA18ED119818D7100F937C4 /* GADInAppPurchaseDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInAppPurchaseDelegate.h; sourceTree = ""; }; - 8AA18ED219818D7100F937C4 /* GADInterstitial.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInterstitial.h; sourceTree = ""; }; - 8AA18ED319818D7100F937C4 /* GADInterstitialDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADInterstitialDelegate.h; sourceTree = ""; }; - 8AA18ED419818D7100F937C4 /* GADModules.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADModules.h; sourceTree = ""; }; - 8AA18ED519818D7100F937C4 /* GADRequest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADRequest.h; sourceTree = ""; }; - 8AA18ED619818D7100F937C4 /* GADRequestError.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GADRequestError.h; sourceTree = ""; }; - 8AA18ED719818D7100F937C4 /* libGoogleAdMobAds.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGoogleAdMobAds.a; sourceTree = ""; }; - 8AA18ED819818D7100F937C4 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; - ECFDECAE1950E2870043F777 /* libANSDKGoogleAdMobAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKGoogleAdMobAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ECFDECD81950E3F70043F777 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - ECFDECD91950E3F70043F777 /* ANAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdView.h; sourceTree = ""; }; - ECFDECDA1950E3F70043F777 /* ANBannerAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBannerAdView.h; sourceTree = ""; }; - ECFDECDB1950E3F70043F777 /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - ECFDECDC1950E3F70043F777 /* ANInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAd.h; sourceTree = ""; }; - ECFDECDD1950E3F70043F777 /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - ECFDECDE1950E3F70043F777 /* ANLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogManager.h; sourceTree = ""; }; - ECFDECDF1950E3F70043F777 /* ANSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANSDKResources.bundle; sourceTree = ""; }; - ECFDECE01950E3F70043F777 /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - ECFDECE11950E3F70043F777 /* libANSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libANSDK.a; sourceTree = ""; }; - ECFDECE41950E4450043F777 /* ANAdAdapterBannerAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerAdMob.h; sourceTree = ""; }; - ECFDECE51950E4450043F777 /* ANAdAdapterBannerAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerAdMob.m; sourceTree = ""; }; - ECFDECE61950E4450043F777 /* ANAdAdapterBannerDFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerDFP.h; sourceTree = ""; }; - ECFDECE71950E4450043F777 /* ANAdAdapterBannerDFP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerDFP.m; sourceTree = ""; }; - ECFDECE81950E4450043F777 /* ANAdAdapterInterstitialAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialAdMob.h; sourceTree = ""; }; - ECFDECE91950E4450043F777 /* ANAdAdapterInterstitialAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialAdMob.m; sourceTree = ""; }; - ECFDECEA1950E4450043F777 /* ANAdAdapterInterstitialDFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialDFP.h; sourceTree = ""; }; - ECFDECEB1950E4450043F777 /* ANAdAdapterInterstitialDFP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialDFP.m; sourceTree = ""; }; - ECFDED0E1950E4450043F777 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; - ECFDED141950E4700043F777 /* ANBasicConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ECFDECAB1950E2870043F777 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 8AA18EB719818D7100F937C4 /* GoogleAdMobSDK */ = { - isa = PBXGroup; - children = ( - 8AA18EB819818D7100F937C4 /* Add-ons */, - 8AA18ECB19818D7100F937C4 /* GADAdMobExtras.h */, - 8AA18ECC19818D7100F937C4 /* GADAdNetworkExtras.h */, - 8AA18ECD19818D7100F937C4 /* GADAdSize.h */, - 8AA18ECE19818D7100F937C4 /* GADBannerView.h */, - 8AA18ECF19818D7100F937C4 /* GADBannerViewDelegate.h */, - 8AA18ED019818D7100F937C4 /* GADInAppPurchase.h */, - 8AA18ED119818D7100F937C4 /* GADInAppPurchaseDelegate.h */, - 8AA18ED219818D7100F937C4 /* GADInterstitial.h */, - 8AA18ED319818D7100F937C4 /* GADInterstitialDelegate.h */, - 8AA18ED419818D7100F937C4 /* GADModules.h */, - 8AA18ED519818D7100F937C4 /* GADRequest.h */, - 8AA18ED619818D7100F937C4 /* GADRequestError.h */, - 8AA18ED719818D7100F937C4 /* libGoogleAdMobAds.a */, - 8AA18ED819818D7100F937C4 /* README.txt */, - ); - name = GoogleAdMobSDK; - path = ../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK; - sourceTree = ""; - }; - 8AA18EB819818D7100F937C4 /* Add-ons */ = { - isa = PBXGroup; - children = ( - 8AA18EB919818D7100F937C4 /* DoubleClick */, - 8AA18EC119818D7100F937C4 /* Mediation */, - 8AA18EC819818D7100F937C4 /* Search */, - ); - path = "Add-ons"; - sourceTree = ""; - }; - 8AA18EB919818D7100F937C4 /* DoubleClick */ = { - isa = PBXGroup; - children = ( - 8AA18EBA19818D7100F937C4 /* DFPBannerView.h */, - 8AA18EBB19818D7100F937C4 /* DFPExtras.h */, - 8AA18EBC19818D7100F937C4 /* DFPInterstitial.h */, - 8AA18EBD19818D7100F937C4 /* DFPSwipeableBannerView.h */, - 8AA18EBE19818D7100F937C4 /* GADAdSizeDelegate.h */, - 8AA18EBF19818D7100F937C4 /* GADAppEventDelegate.h */, - 8AA18EC019818D7100F937C4 /* GADSwipeableBannerViewDelegate.h */, - ); - path = DoubleClick; - sourceTree = ""; - }; - 8AA18EC119818D7100F937C4 /* Mediation */ = { - isa = PBXGroup; - children = ( - 8AA18EC219818D7100F937C4 /* GADCustomEventBanner.h */, - 8AA18EC319818D7100F937C4 /* GADCustomEventBannerDelegate.h */, - 8AA18EC419818D7100F937C4 /* GADCustomEventExtras.h */, - 8AA18EC519818D7100F937C4 /* GADCustomEventInterstitial.h */, - 8AA18EC619818D7100F937C4 /* GADCustomEventInterstitialDelegate.h */, - 8AA18EC719818D7100F937C4 /* GADCustomEventRequest.h */, - ); - path = Mediation; - sourceTree = ""; - }; - 8AA18EC819818D7100F937C4 /* Search */ = { - isa = PBXGroup; - children = ( - 8AA18EC919818D7100F937C4 /* GADSearchBannerView.h */, - 8AA18ECA19818D7100F937C4 /* GADSearchRequest.h */, - ); - path = Search; - sourceTree = ""; - }; - ECFDECA51950E2860043F777 = { - isa = PBXGroup; - children = ( - ECFDED141950E4700043F777 /* ANBasicConfig.h */, - ECFDECD71950E3F70043F777 /* ANSDK */, - ECFDECE31950E4450043F777 /* GoogleAdMob */, - 8AA18EB719818D7100F937C4 /* GoogleAdMobSDK */, - ECFDECAF1950E2870043F777 /* Products */, - ); - sourceTree = ""; - }; - ECFDECAF1950E2870043F777 /* Products */ = { - isa = PBXGroup; - children = ( - ECFDECAE1950E2870043F777 /* libANSDKGoogleAdMobAdapter.a */, - ); - name = Products; - sourceTree = ""; - }; - ECFDECD71950E3F70043F777 /* ANSDK */ = { - isa = PBXGroup; - children = ( - ECFDECD81950E3F70043F777 /* ANAdProtocol.h */, - ECFDECD91950E3F70043F777 /* ANAdView.h */, - ECFDECDA1950E3F70043F777 /* ANBannerAdView.h */, - ECFDECDB1950E3F70043F777 /* ANCustomAdapter.h */, - ECFDECDC1950E3F70043F777 /* ANInterstitialAd.h */, - ECFDECDD1950E3F70043F777 /* ANLocation.h */, - ECFDECDE1950E3F70043F777 /* ANLogManager.h */, - ECFDECDF1950E3F70043F777 /* ANSDKResources.bundle */, - ECFDECE01950E3F70043F777 /* ANTargetingParameters.h */, - ECFDECE11950E3F70043F777 /* libANSDK.a */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; - ECFDECE31950E4450043F777 /* GoogleAdMob */ = { - isa = PBXGroup; - children = ( - ECFDECE41950E4450043F777 /* ANAdAdapterBannerAdMob.h */, - ECFDECE51950E4450043F777 /* ANAdAdapterBannerAdMob.m */, - ECFDECE61950E4450043F777 /* ANAdAdapterBannerDFP.h */, - ECFDECE71950E4450043F777 /* ANAdAdapterBannerDFP.m */, - ECFDECE81950E4450043F777 /* ANAdAdapterInterstitialAdMob.h */, - ECFDECE91950E4450043F777 /* ANAdAdapterInterstitialAdMob.m */, - ECFDECEA1950E4450043F777 /* ANAdAdapterInterstitialDFP.h */, - ECFDECEB1950E4450043F777 /* ANAdAdapterInterstitialDFP.m */, - ECFDED0E1950E4450043F777 /* README.txt */, - ); - name = GoogleAdMob; - path = ../mediation/mediatedviews/GoogleAdMob; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - ECFDECAD1950E2870043F777 /* ANSDKGoogleAdMobAdapter */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECFDECD11950E2870043F777 /* Build configuration list for PBXNativeTarget "ANSDKGoogleAdMobAdapter" */; - buildPhases = ( - ECFDECAA1950E2870043F777 /* Sources */, - ECFDECAB1950E2870043F777 /* Frameworks */, - ECFDECAC1950E2870043F777 /* Copy Files */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANSDKGoogleAdMobAdapter; - productName = ANSDKGoogleAdMobAdapter; - productReference = ECFDECAE1950E2870043F777 /* libANSDKGoogleAdMobAdapter.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ECFDECA61950E2860043F777 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = ECFDECA91950E2860043F777 /* Build configuration list for PBXProject "ANSDKGoogleAdMobAdapter" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = ECFDECA51950E2860043F777; - productRefGroup = ECFDECAF1950E2870043F777 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ECFDECAD1950E2870043F777 /* ANSDKGoogleAdMobAdapter */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - ECFDECAA1950E2870043F777 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECFDED101950E4450043F777 /* ANAdAdapterBannerDFP.m in Sources */, - ECFDED0F1950E4450043F777 /* ANAdAdapterBannerAdMob.m in Sources */, - ECFDED121950E4450043F777 /* ANAdAdapterInterstitialDFP.m in Sources */, - ECFDED111950E4450043F777 /* ANAdAdapterInterstitialAdMob.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - ECFDECCF1950E2870043F777 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECFDECD01950E2870043F777 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ECFDECD21950E2870043F777 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKGoogleAdMobAdapter.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - ECFDECD31950E2870043F777 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKGoogleAdMobAdapter.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ECFDECA91950E2860043F777 /* Build configuration list for PBXProject "ANSDKGoogleAdMobAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECFDECCF1950E2870043F777 /* Debug */, - ECFDECD01950E2870043F777 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECFDECD11950E2870043F777 /* Build configuration list for PBXNativeTarget "ANSDKGoogleAdMobAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECFDECD21950E2870043F777 /* Debug */, - ECFDECD31950E2870043F777 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = ECFDECA61950E2860043F777 /* Project object */; -} diff --git a/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 7a8136e3c..000000000 --- a/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKGoogleAdMobAdapter.xcscheme b/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKGoogleAdMobAdapter.xcscheme deleted file mode 100644 index 53b97db8a..000000000 --- a/BinaryProjects/ANSDKGoogleAdMobAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKGoogleAdMobAdapter.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/project.pbxproj b/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/project.pbxproj deleted file mode 100644 index 633f69eef..000000000 --- a/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/project.pbxproj +++ /dev/null @@ -1,315 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - ECE4EC1B194B9F230069D934 /* ANAdAdapterBannerMillennialMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EC12194B9F230069D934 /* ANAdAdapterBannerMillennialMedia.m */; }; - ECE4EC1C194B9F230069D934 /* ANAdAdapterInterstitialMillennialMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EC14194B9F230069D934 /* ANAdAdapterInterstitialMillennialMedia.m */; }; - ECE4EC1D194B9F230069D934 /* ANAdAdapterMillennialMediaBase.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EC16194B9F230069D934 /* ANAdAdapterMillennialMediaBase.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - ECFDEC221950CD5E0043F777 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 7; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - ECE4EBDA194B951C0069D934 /* libANSDKMillennialMediaAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKMillennialMediaAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ECE4EC04194B9ED50069D934 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - ECE4EC05194B9ED50069D934 /* ANAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdView.h; sourceTree = ""; }; - ECE4EC06194B9ED50069D934 /* ANBannerAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBannerAdView.h; sourceTree = ""; }; - ECE4EC07194B9ED50069D934 /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - ECE4EC08194B9ED50069D934 /* ANInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAd.h; sourceTree = ""; }; - ECE4EC09194B9ED50069D934 /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - ECE4EC0A194B9ED50069D934 /* ANLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogManager.h; sourceTree = ""; }; - ECE4EC0B194B9ED50069D934 /* ANSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANSDKResources.bundle; sourceTree = ""; }; - ECE4EC0C194B9ED50069D934 /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - ECE4EC0D194B9ED50069D934 /* libANSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libANSDK.a; sourceTree = ""; }; - ECE4EC0F194B9EE80069D934 /* ANBasicConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; - ECE4EC11194B9F230069D934 /* ANAdAdapterBannerMillennialMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerMillennialMedia.h; sourceTree = ""; }; - ECE4EC12194B9F230069D934 /* ANAdAdapterBannerMillennialMedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerMillennialMedia.m; sourceTree = ""; }; - ECE4EC13194B9F230069D934 /* ANAdAdapterInterstitialMillennialMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialMillennialMedia.h; sourceTree = ""; }; - ECE4EC14194B9F230069D934 /* ANAdAdapterInterstitialMillennialMedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialMillennialMedia.m; sourceTree = ""; }; - ECE4EC15194B9F230069D934 /* ANAdAdapterMillennialMediaBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterMillennialMediaBase.h; sourceTree = ""; }; - ECE4EC16194B9F230069D934 /* ANAdAdapterMillennialMediaBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterMillennialMediaBase.m; sourceTree = ""; }; - ECE4EC18194B9F230069D934 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - ECE4EC19194B9F230069D934 /* LICENSE.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; - ECE4EC1A194B9F230069D934 /* MillennialMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MillennialMedia.framework; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ECE4EBD7194B951C0069D934 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - ECE4EBD1194B951C0069D934 = { - isa = PBXGroup; - children = ( - ECE4EC10194B9F230069D934 /* MillennialMedia */, - ECE4EC0F194B9EE80069D934 /* ANBasicConfig.h */, - ECE4EC03194B9ED50069D934 /* ANSDK */, - ECE4EBDB194B951C0069D934 /* Products */, - ); - sourceTree = ""; - }; - ECE4EBDB194B951C0069D934 /* Products */ = { - isa = PBXGroup; - children = ( - ECE4EBDA194B951C0069D934 /* libANSDKMillennialMediaAdapter.a */, - ); - name = Products; - sourceTree = ""; - }; - ECE4EC03194B9ED50069D934 /* ANSDK */ = { - isa = PBXGroup; - children = ( - ECE4EC04194B9ED50069D934 /* ANAdProtocol.h */, - ECE4EC05194B9ED50069D934 /* ANAdView.h */, - ECE4EC06194B9ED50069D934 /* ANBannerAdView.h */, - ECE4EC07194B9ED50069D934 /* ANCustomAdapter.h */, - ECE4EC08194B9ED50069D934 /* ANInterstitialAd.h */, - ECE4EC09194B9ED50069D934 /* ANLocation.h */, - ECE4EC0A194B9ED50069D934 /* ANLogManager.h */, - ECE4EC0B194B9ED50069D934 /* ANSDKResources.bundle */, - ECE4EC0C194B9ED50069D934 /* ANTargetingParameters.h */, - ECE4EC0D194B9ED50069D934 /* libANSDK.a */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; - ECE4EC10194B9F230069D934 /* MillennialMedia */ = { - isa = PBXGroup; - children = ( - ECE4EC11194B9F230069D934 /* ANAdAdapterBannerMillennialMedia.h */, - ECE4EC12194B9F230069D934 /* ANAdAdapterBannerMillennialMedia.m */, - ECE4EC13194B9F230069D934 /* ANAdAdapterInterstitialMillennialMedia.h */, - ECE4EC14194B9F230069D934 /* ANAdAdapterInterstitialMillennialMedia.m */, - ECE4EC15194B9F230069D934 /* ANAdAdapterMillennialMediaBase.h */, - ECE4EC16194B9F230069D934 /* ANAdAdapterMillennialMediaBase.m */, - ECE4EC17194B9F230069D934 /* MillennialMediaSDK */, - ); - name = MillennialMedia; - path = ../mediation/mediatedviews/MillennialMedia; - sourceTree = ""; - }; - ECE4EC17194B9F230069D934 /* MillennialMediaSDK */ = { - isa = PBXGroup; - children = ( - ECE4EC18194B9F230069D934 /* LICENSE */, - ECE4EC19194B9F230069D934 /* LICENSE.txt */, - ECE4EC1A194B9F230069D934 /* MillennialMedia.framework */, - ); - path = MillennialMediaSDK; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - ECE4EBD9194B951C0069D934 /* ANSDKMillennialMediaAdapter */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECE4EBFD194B951C0069D934 /* Build configuration list for PBXNativeTarget "ANSDKMillennialMediaAdapter" */; - buildPhases = ( - ECE4EBD6194B951C0069D934 /* Sources */, - ECE4EBD7194B951C0069D934 /* Frameworks */, - ECFDEC221950CD5E0043F777 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANSDKMillennialMediaAdapter; - productName = ANSDKMillennialMediaAdapter; - productReference = ECE4EBDA194B951C0069D934 /* libANSDKMillennialMediaAdapter.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ECE4EBD2194B951C0069D934 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = ECE4EBD5194B951C0069D934 /* Build configuration list for PBXProject "ANSDKMillennialMediaAdapter" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = ECE4EBD1194B951C0069D934; - productRefGroup = ECE4EBDB194B951C0069D934 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ECE4EBD9194B951C0069D934 /* ANSDKMillennialMediaAdapter */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - ECE4EBD6194B951C0069D934 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECE4EC1B194B9F230069D934 /* ANAdAdapterBannerMillennialMedia.m in Sources */, - ECE4EC1C194B9F230069D934 /* ANAdAdapterInterstitialMillennialMedia.m in Sources */, - ECE4EC1D194B9F230069D934 /* ANAdAdapterMillennialMediaBase.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - ECE4EBFB194B951C0069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECE4EBFC194B951C0069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ECE4EBFE194B951C0069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKMillennialMediaAdapter.dst; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - ECE4EBFF194B951C0069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKMillennialMediaAdapter.dst; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ECE4EBD5194B951C0069D934 /* Build configuration list for PBXProject "ANSDKMillennialMediaAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EBFB194B951C0069D934 /* Debug */, - ECE4EBFC194B951C0069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECE4EBFD194B951C0069D934 /* Build configuration list for PBXNativeTarget "ANSDKMillennialMediaAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EBFE194B951C0069D934 /* Debug */, - ECE4EBFF194B951C0069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = ECE4EBD2194B951C0069D934 /* Project object */; -} diff --git a/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index cc6676ffa..000000000 --- a/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKMillennialMediaAdapter.xcscheme b/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKMillennialMediaAdapter.xcscheme deleted file mode 100644 index 5ef022d09..000000000 --- a/BinaryProjects/ANSDKMillennialMediaAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKMillennialMediaAdapter.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/project.pbxproj b/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/project.pbxproj deleted file mode 100644 index 1d888d9e0..000000000 --- a/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/project.pbxproj +++ /dev/null @@ -1,307 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - ECE4EC6A194BA22A0069D934 /* ANAdAdapterBannerMoPub.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EC61194BA22A0069D934 /* ANAdAdapterBannerMoPub.m */; }; - ECE4EC6B194BA22A0069D934 /* ANAdAdapterInterstitialMoPub.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EC63194BA22A0069D934 /* ANAdAdapterInterstitialMoPub.m */; }; - ECE4EC6C194BA22A0069D934 /* ANAdAdapterMoPubBase.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4EC65194BA22A0069D934 /* ANAdAdapterMoPubBase.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - ECE4EC27194BA0440069D934 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - ECE4EC29194BA0440069D934 /* libANSDKMoPubAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKMoPubAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ECE4EC53194BA1C70069D934 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - ECE4EC54194BA1C70069D934 /* ANAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdView.h; sourceTree = ""; }; - ECE4EC55194BA1C80069D934 /* ANBannerAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBannerAdView.h; sourceTree = ""; }; - ECE4EC56194BA1C80069D934 /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - ECE4EC57194BA1C80069D934 /* ANInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAd.h; sourceTree = ""; }; - ECE4EC58194BA1C80069D934 /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - ECE4EC59194BA1C80069D934 /* ANLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogManager.h; sourceTree = ""; }; - ECE4EC5A194BA1C80069D934 /* ANSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANSDKResources.bundle; sourceTree = ""; }; - ECE4EC5B194BA1C80069D934 /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - ECE4EC5C194BA1C80069D934 /* libANSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libANSDK.a; sourceTree = ""; }; - ECE4EC5E194BA1DB0069D934 /* ANBasicConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; - ECE4EC60194BA22A0069D934 /* ANAdAdapterBannerMoPub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerMoPub.h; sourceTree = ""; }; - ECE4EC61194BA22A0069D934 /* ANAdAdapterBannerMoPub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerMoPub.m; sourceTree = ""; }; - ECE4EC62194BA22A0069D934 /* ANAdAdapterInterstitialMoPub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialMoPub.h; sourceTree = ""; }; - ECE4EC63194BA22A0069D934 /* ANAdAdapterInterstitialMoPub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialMoPub.m; sourceTree = ""; }; - ECE4EC64194BA22A0069D934 /* ANAdAdapterMoPubBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterMoPubBase.h; sourceTree = ""; }; - ECE4EC65194BA22A0069D934 /* ANAdAdapterMoPubBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterMoPubBase.m; sourceTree = ""; }; - ECE4EC67194BA22A0069D934 /* MPAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPAdView.h; sourceTree = ""; }; - ECE4EC68194BA22A0069D934 /* MPConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPConstants.h; sourceTree = ""; }; - ECE4EC69194BA22A0069D934 /* MPInterstitialAdController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MPInterstitialAdController.h; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ECE4EC26194BA0440069D934 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - ECE4EC20194BA0440069D934 = { - isa = PBXGroup; - children = ( - ECE4EC5F194BA22A0069D934 /* MoPub */, - ECE4EC5E194BA1DB0069D934 /* ANBasicConfig.h */, - ECE4EC52194BA1C70069D934 /* ANSDK */, - ECE4EC2A194BA0440069D934 /* Products */, - ); - sourceTree = ""; - }; - ECE4EC2A194BA0440069D934 /* Products */ = { - isa = PBXGroup; - children = ( - ECE4EC29194BA0440069D934 /* libANSDKMoPubAdapter.a */, - ); - name = Products; - sourceTree = ""; - }; - ECE4EC52194BA1C70069D934 /* ANSDK */ = { - isa = PBXGroup; - children = ( - ECE4EC53194BA1C70069D934 /* ANAdProtocol.h */, - ECE4EC54194BA1C70069D934 /* ANAdView.h */, - ECE4EC55194BA1C80069D934 /* ANBannerAdView.h */, - ECE4EC56194BA1C80069D934 /* ANCustomAdapter.h */, - ECE4EC57194BA1C80069D934 /* ANInterstitialAd.h */, - ECE4EC58194BA1C80069D934 /* ANLocation.h */, - ECE4EC59194BA1C80069D934 /* ANLogManager.h */, - ECE4EC5A194BA1C80069D934 /* ANSDKResources.bundle */, - ECE4EC5B194BA1C80069D934 /* ANTargetingParameters.h */, - ECE4EC5C194BA1C80069D934 /* libANSDK.a */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; - ECE4EC5F194BA22A0069D934 /* MoPub */ = { - isa = PBXGroup; - children = ( - ECE4EC60194BA22A0069D934 /* ANAdAdapterBannerMoPub.h */, - ECE4EC61194BA22A0069D934 /* ANAdAdapterBannerMoPub.m */, - ECE4EC62194BA22A0069D934 /* ANAdAdapterInterstitialMoPub.h */, - ECE4EC63194BA22A0069D934 /* ANAdAdapterInterstitialMoPub.m */, - ECE4EC64194BA22A0069D934 /* ANAdAdapterMoPubBase.h */, - ECE4EC65194BA22A0069D934 /* ANAdAdapterMoPubBase.m */, - ECE4EC66194BA22A0069D934 /* MoPubSDK */, - ); - name = MoPub; - path = ../mediation/mediatedviews/MoPub; - sourceTree = ""; - }; - ECE4EC66194BA22A0069D934 /* MoPubSDK */ = { - isa = PBXGroup; - children = ( - ECE4EC67194BA22A0069D934 /* MPAdView.h */, - ECE4EC68194BA22A0069D934 /* MPConstants.h */, - ECE4EC69194BA22A0069D934 /* MPInterstitialAdController.h */, - ); - path = MoPubSDK; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - ECE4EC28194BA0440069D934 /* ANSDKMoPubAdapter */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECE4EC4C194BA0450069D934 /* Build configuration list for PBXNativeTarget "ANSDKMoPubAdapter" */; - buildPhases = ( - ECE4EC25194BA0440069D934 /* Sources */, - ECE4EC26194BA0440069D934 /* Frameworks */, - ECE4EC27194BA0440069D934 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANSDKMoPubAdapter; - productName = ANSDKMoPubAdapter; - productReference = ECE4EC29194BA0440069D934 /* libANSDKMoPubAdapter.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ECE4EC21194BA0440069D934 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = ECE4EC24194BA0440069D934 /* Build configuration list for PBXProject "ANSDKMoPubAdapter" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = ECE4EC20194BA0440069D934; - productRefGroup = ECE4EC2A194BA0440069D934 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ECE4EC28194BA0440069D934 /* ANSDKMoPubAdapter */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - ECE4EC25194BA0440069D934 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECE4EC6A194BA22A0069D934 /* ANAdAdapterBannerMoPub.m in Sources */, - ECE4EC6C194BA22A0069D934 /* ANAdAdapterMoPubBase.m in Sources */, - ECE4EC6B194BA22A0069D934 /* ANAdAdapterInterstitialMoPub.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - ECE4EC4A194BA0450069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECE4EC4B194BA0450069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ECE4EC4D194BA0450069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKMoPubAdapter.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - ECE4EC4E194BA0450069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKMoPubAdapter.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ECE4EC24194BA0440069D934 /* Build configuration list for PBXProject "ANSDKMoPubAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EC4A194BA0450069D934 /* Debug */, - ECE4EC4B194BA0450069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECE4EC4C194BA0450069D934 /* Build configuration list for PBXNativeTarget "ANSDKMoPubAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EC4D194BA0450069D934 /* Debug */, - ECE4EC4E194BA0450069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = ECE4EC21194BA0440069D934 /* Project object */; -} diff --git a/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 28da7a438..000000000 --- a/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKMoPubAdapter.xcscheme b/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKMoPubAdapter.xcscheme deleted file mode 100644 index ddf5dd8b6..000000000 --- a/BinaryProjects/ANSDKMoPubAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKMoPubAdapter.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BinaryProjects/ANSDKiAdAdapter.xcodeproj/project.pbxproj b/BinaryProjects/ANSDKiAdAdapter.xcodeproj/project.pbxproj deleted file mode 100644 index fe6bd9f9f..000000000 --- a/BinaryProjects/ANSDKiAdAdapter.xcodeproj/project.pbxproj +++ /dev/null @@ -1,275 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - ECE4ECB1194BA3EB0069D934 /* ANAdAdapterBanneriAd.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4ECAE194BA3EB0069D934 /* ANAdAdapterBanneriAd.m */; }; - ECE4ECB2194BA3EB0069D934 /* ANAdAdapterInterstitialiAd.m in Sources */ = {isa = PBXBuildFile; fileRef = ECE4ECB0194BA3EB0069D934 /* ANAdAdapterInterstitialiAd.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - ECE4EC74194BA26F0069D934 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - EC0DF53F194F79030002F47C /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - EC0DF542194F79030002F47C /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - EC0DF544194F79030002F47C /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - EC0DF547194F79030002F47C /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - ECE4EC76194BA26F0069D934 /* libANSDKiAdAdapter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKiAdAdapter.a; sourceTree = BUILT_PRODUCTS_DIR; }; - ECE4ECAB194BA3DC0069D934 /* ANBasicConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; - ECE4ECAD194BA3EB0069D934 /* ANAdAdapterBanneriAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBanneriAd.h; sourceTree = ""; }; - ECE4ECAE194BA3EB0069D934 /* ANAdAdapterBanneriAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBanneriAd.m; sourceTree = ""; }; - ECE4ECAF194BA3EB0069D934 /* ANAdAdapterInterstitialiAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialiAd.h; sourceTree = ""; }; - ECE4ECB0194BA3EB0069D934 /* ANAdAdapterInterstitialiAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialiAd.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - ECE4EC73194BA26F0069D934 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - EC0DF53E194F79030002F47C /* ANSDK */ = { - isa = PBXGroup; - children = ( - EC0DF53F194F79030002F47C /* ANAdProtocol.h */, - EC0DF542194F79030002F47C /* ANCustomAdapter.h */, - EC0DF544194F79030002F47C /* ANLocation.h */, - EC0DF547194F79030002F47C /* ANTargetingParameters.h */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; - ECE4EC6D194BA26F0069D934 = { - isa = PBXGroup; - children = ( - ECE4ECAB194BA3DC0069D934 /* ANBasicConfig.h */, - EC0DF53E194F79030002F47C /* ANSDK */, - ECE4ECAC194BA3EB0069D934 /* iAd */, - ECE4EC77194BA26F0069D934 /* Products */, - ); - sourceTree = ""; - }; - ECE4EC77194BA26F0069D934 /* Products */ = { - isa = PBXGroup; - children = ( - ECE4EC76194BA26F0069D934 /* libANSDKiAdAdapter.a */, - ); - name = Products; - sourceTree = ""; - }; - ECE4ECAC194BA3EB0069D934 /* iAd */ = { - isa = PBXGroup; - children = ( - ECE4ECAD194BA3EB0069D934 /* ANAdAdapterBanneriAd.h */, - ECE4ECAE194BA3EB0069D934 /* ANAdAdapterBanneriAd.m */, - ECE4ECAF194BA3EB0069D934 /* ANAdAdapterInterstitialiAd.h */, - ECE4ECB0194BA3EB0069D934 /* ANAdAdapterInterstitialiAd.m */, - ); - name = iAd; - path = ../mediation/mediatedviews/iAd; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - ECE4EC75194BA26F0069D934 /* ANSDKiAdAdapter */ = { - isa = PBXNativeTarget; - buildConfigurationList = ECE4EC99194BA26F0069D934 /* Build configuration list for PBXNativeTarget "ANSDKiAdAdapter" */; - buildPhases = ( - ECE4EC72194BA26F0069D934 /* Sources */, - ECE4EC73194BA26F0069D934 /* Frameworks */, - ECE4EC74194BA26F0069D934 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANSDKiAdAdapter; - productName = ANSDKiAdAdapter; - productReference = ECE4EC76194BA26F0069D934 /* libANSDKiAdAdapter.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - ECE4EC6E194BA26F0069D934 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = ECE4EC71194BA26F0069D934 /* Build configuration list for PBXProject "ANSDKiAdAdapter" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = ECE4EC6D194BA26F0069D934; - productRefGroup = ECE4EC77194BA26F0069D934 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - ECE4EC75194BA26F0069D934 /* ANSDKiAdAdapter */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - ECE4EC72194BA26F0069D934 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECE4ECB2194BA3EB0069D934 /* ANAdAdapterInterstitialiAd.m in Sources */, - ECE4ECB1194BA3EB0069D934 /* ANAdAdapterBanneriAd.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - ECE4EC97194BA26F0069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - ECE4EC98194BA26F0069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - ECE4EC9A194BA26F0069D934 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKiAdAdapter.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - ECE4EC9B194BA26F0069D934 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKiAdAdapter.dst; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - ECE4EC71194BA26F0069D934 /* Build configuration list for PBXProject "ANSDKiAdAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EC97194BA26F0069D934 /* Debug */, - ECE4EC98194BA26F0069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - ECE4EC99194BA26F0069D934 /* Build configuration list for PBXNativeTarget "ANSDKiAdAdapter" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECE4EC9A194BA26F0069D934 /* Debug */, - ECE4EC9B194BA26F0069D934 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = ECE4EC6E194BA26F0069D934 /* Project object */; -} diff --git a/BinaryProjects/ANSDKiAdAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKiAdAdapter.xcscheme b/BinaryProjects/ANSDKiAdAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKiAdAdapter.xcscheme deleted file mode 100644 index 6765ea22e..000000000 --- a/BinaryProjects/ANSDKiAdAdapter.xcodeproj/xcshareddata/xcschemes/ANSDKiAdAdapter.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BinaryProjects/README.txt b/BinaryProjects/README.txt new file mode 100644 index 000000000..4145f3175 --- /dev/null +++ b/BinaryProjects/README.txt @@ -0,0 +1 @@ +Run ./buildANSDK.sh to build binary versions of the AppNexus SDK and various mediation adapters. The output binaries will be located in the /out folder. diff --git a/BinaryProjects/buildANSDK.sh b/BinaryProjects/buildANSDK.sh new file mode 100755 index 000000000..20eaa8e26 --- /dev/null +++ b/BinaryProjects/buildANSDK.sh @@ -0,0 +1,142 @@ +#!/bin/bash +# +# Script to build the AppNexus SDK and various mediation adapters +# +OUTDIR=`pwd`/out +OUTDIR_DEVICE=`pwd`/out_device +OUTDIR_SIMULATOR=`pwd`/out_simulator +LOGDIR=$OUTDIR/log +BUILDDIR=$OUTDIR/build + +schemes=( ANSDK ANSDKGoogleAdMobAdapter ANSDKFacebookAdapter ANSDKiAdAdapter ANSDKMillennialMediaAdapter ANSDKMoPubAdapter ANSDKAmazonAdapter ANAdapterForGoogleAdMobSDK ANAdapterForMoPubSDK ) + +rm -fr $OUTDIR > /dev/null 2>&1 +rm -fr $OUTDIR_DEVICE > /dev/null 2>&1 +rm -fr $OUTDIR_SIMULATOR > /dev/null 2>&1 +mkdir -p $LOGDIR + +function buildDevice { + echo "Building for device:" $1 + LOGFILE=$LOGDIR/$1.log + xcodebuild -project "ANSDK.xcodeproj" -scheme $1 -configuration "Release" -sdk "iphoneos" CONFIGURATION_BUILD_DIR=$OUTDIR SYMROOT=$BUILDDIR OBJROOT=$BUILDDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} + mkdir -p $OUTDIR/$1 + mv $OUTDIR/lib$1.a $OUTDIR/$1/lib$1.a +} + +function buildSim { + echo "Building for simulator:" $1 + LOGFILE=$LOGDIR/$1.log + xcodebuild -project "ANSDK.xcodeproj" -scheme $1 -configuration "Release" -sdk "iphonesimulator" CONFIGURATION_BUILD_DIR=$OUTDIR SYMROOT=$BUILDDIR OBJROOT=$BUILDDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} + mkdir -p $OUTDIR/$1 + mv $OUTDIR/lib$1.a $OUTDIR/$1/lib$1.a +} + +### device + +for i in ${schemes[@]} +do + buildDevice $i +done + +rm -rf $OUTDIR/Intermediates +rm -rf $BUILDDIR + +mv $OUTDIR $OUTDIR_DEVICE + +### simulator + +mkdir -p $LOGDIR + +for i in ${schemes[@]} +do + buildSim $i +done + +rm -rf $OUTDIR/Intermediates +rm -rf $BUILDDIR + +mv $OUTDIR $OUTDIR_SIMULATOR + +### combine +echo 'Combining architectures and copying header and resource files' + +for i in ${schemes[@]} +do + mkdir -p $OUTDIR/$i + lipo -create $OUTDIR_DEVICE/$i/lib$i.a $OUTDIR_SIMULATOR/$i/lib$i.a -output $OUTDIR/$i/lib$i.a + rm -rf $OUTDIR_DEVICE/$i/lib$i.a + cp -a $OUTDIR_DEVICE/$i $OUTDIR +done + + +rm -fr $OUTDIR_DEVICE > /dev/null 2>&1 +rm -fr $OUTDIR_SIMULATOR > /dev/null 2>&1 +rm -rf `pwd`/build + +##### +# Package and Zip +##### + +ANMEDDIR=$OUTDIR/ANAdaptersNetworksMediatedByAppNexus + +cd $OUTDIR +mkdir -p $ANMEDDIR +cp ANSDK*Adapter/libANSDK*Adapter.a $ANMEDDIR +rm ANSDK*Adapter/*.a +rmdir ANSDK*Adapter > /dev/null 2>&1 + +MEDANDIR=$OUTDIR/ANAdaptersNetworksMediatingAppNexus + +mkdir -p $MEDANDIR +cp ANAdapterFor*/libANAdapterFor*.a $MEDANDIR +rm ANAdapterFor*/*.a +rmdir ANAdapterFor* > /dev/null 2>&1 + +touch README.txt +echo -e " +The AppNexus Mobile Advertising SDK for iOS +=========================================== + +The ANSDK folder contains the AppNexus mobile advertising SDK. Documentation is available on our wiki (https://wiki.appnexus.com/display/sdk/Mobile+SDKs). + +The ANAdaptersNetworksMediatedByAppNexus folder contains adapters which allow the AppNexus SDK to serve mediated ads from third-party SDKs. For each network you would like the SDK to mediate, include the adapter in your project as well as the corresponding third-party SDK. + +The ANAdaptersNetworksMediatingAppNexus folder contains adapters which allow third-party SDKs to mediate AppNexus. Include an adapter in your project for each SDK which should call AppNexus as part of its mediation waterfall. + +Please note that mediation requires external setup as well. Documentation is available on our wiki (https://wiki.appnexus.com/display/sdk/Mediate+with+iOS). + +For any questions directly pertaining to the SDK, please visit our Google group (https://groups.google.com/forum/#!forum/appnexussdk). For other inquiries, please reach out to your AppNexus representative. + +All The Best, + +Your AppNexus Team + +" >> README.txt + +function packageSDK { + if [[ $i == ANSDK* ]] && [[ $i == *Adapter ]]; + then + tmp=${i#ANSDK} + className=${tmp%Adapter} + if [ "$className" == "iAd" ]; + then + return + fi + SDKDIR=$OUTDIR/../../mediation/mediatedviews/${className}/${className}SDK + if [ -d "$SDKDIR" ]; + then + echo "Packaging ${className} SDK" + cp -r $SDKDIR $2 + else + echo "Warning: ${className} SDK not found" + fi + fi +} + +external=$OUTDIR/externalSDKs +mkdir -p $external + +for i in ${schemes[@]} +do + packageSDK $i $external +done \ No newline at end of file diff --git a/BinaryProjects/buildsdk.sh b/BinaryProjects/buildsdk.sh deleted file mode 100755 index de16d7921..000000000 --- a/BinaryProjects/buildsdk.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash -# -# Simple script to built the AppNexus Advertising SDK binary packages -# -OUTDIR=`pwd`/out -OUTDIR_DEVICE=`pwd`/out_device -OUTDIR_SIMULATOR=`pwd`/out_simulator -LOGDIR=$OUTDIR/log -BUILDDIR=$OUTDIR/build - -projects=( ANSDK ANSDKGoogleAdMobAdapter ANSDKFacebookAdapter ANSDKiAdAdapter ANSDKMillennialMediaAdapter ANSDKMoPubAdapter ANAdapterForGoogleAdMobSDK ANAdapterForMoPubSDK ) - -rm -fr $OUTDIR > /dev/null 2>&1 -rm -fr $OUTDIR_DEVICE > /dev/null 2>&1 -rm -fr $OUTDIR_SIMULATOR > /dev/null 2>&1 -mkdir -p $LOGDIR - -function buildDevice { - echo "Building for device:" $1 - LOGFILE=$LOGDIR/$1.log - xcodebuild -project $1.xcodeproj/ -scheme $1 -configuration 'Release' -sdk iphoneos7.1 CONFIGURATION_BUILD_DIR=$OUTDIR SYMROOT=$BUILDDIR OBJROOT=$BUILDDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} - mkdir -p $OUTDIR/$1 - mv $OUTDIR/lib$1.a $OUTDIR/$1/lib$1.a -} - -function buildSim { - echo "Building for simulator:" $1 - LOGFILE=$LOGDIR/$1.log - xcodebuild -project $1.xcodeproj/ -scheme $1 -configuration 'Release' -sdk "iphonesimulator" CONFIGURATION_BUILD_DIR=$OUTDIR SYMROOT=$BUILDDIR OBJROOT=$BUILDDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} - mkdir -p $OUTDIR/$1 - mv $OUTDIR/lib$1.a $OUTDIR/$1/lib$1.a -} - -### device - -for i in ${projects[@]} -do - buildDevice $i -done - -rm -rf $OUTDIR/Intermediates -rm -rf $BUILDDIR - -mv $OUTDIR $OUTDIR_DEVICE - -### simulator - -mkdir -p $LOGDIR - -for i in ${projects[@]} -do - buildSim $i -done - -rm -rf $OUTDIR/Intermediates -rm -rf $BUILDDIR - -mv $OUTDIR $OUTDIR_SIMULATOR - -### combine -echo 'Combining architectures and copying header and resource files' - -for i in ${projects[@]} -do - mkdir -p $OUTDIR/$i - lipo -create $OUTDIR_DEVICE/$i/lib$i.a $OUTDIR_SIMULATOR/$i/lib$i.a -output $OUTDIR/$i/lib$i.a - rm -rf $OUTDIR_DEVICE/$i/lib$i.a - cp -a $OUTDIR_DEVICE/$i $OUTDIR -done - - -rm -fr $OUTDIR_DEVICE > /dev/null 2>&1 -rm -fr $OUTDIR_SIMULATOR > /dev/null 2>&1 -rm -rf `pwd`/build - -##### -# Package and Zip -##### - -MEDDIR=$OUTDIR/ANMediationAdapters - -cd $OUTDIR -mkdir -p $MEDDIR -cp ANSDK*Adapter/libANSDK*Adapter.a $MEDDIR -rm -rf ANSDK*Adapter - -touch README.txt -echo -e " -The AppNexus Mobile Advertising SDK for iOS -=========================================== - -Include ANSDK.zip in your project in order to receive AppNexus ads. - -The ANMediationAdapters folder contains the adapters that enable the AppNexus SDK to mediate supported third-party networks. - -Include ANAdapterForGoogleAdMobSDK.zip in order to allow the GoogleAdMob SDK to mediate the AppNexus SDK. - -Include ANAdapterForMoPubSDK.zip in order to allow the MoPub SDK to mediate the AppNexus SDK. - -Documentation is available on our wiki: https://wiki.appnexus.com/display/sdk/Mobile+SDKs. - -" >> README.txt - -zip -r ANSDK.zip ANSDK ANMediationAdapters README.txt -zip -r ANAdapterForGoogleAdMobSDK.zip ANAdapterForGoogleAdMobSDK README.txt -zip -r ANAdapterForMoPubSDK.zip ANAdapterForMoPubSDK README.txt diff --git a/BinaryProjects/externalbundle.sh b/BinaryProjects/externalbundle.sh deleted file mode 100755 index acd8422e8..000000000 --- a/BinaryProjects/externalbundle.sh +++ /dev/null @@ -1,66 +0,0 @@ -########## -# RUN `buildsdk.sh` FIRST! -########## - -##### -# This is a build script to build the external bundle -# Bundle Includes: -# -# AN SDK -# -# AN Mediation Adapters for: -# # GoogleAdMob -# # iAd -# # MillennialMedia -# -# External SDKs for: -# # GoogleAdMob SDK -# # MillennialMedia SDK -# -# Not Included: -# # Facebook Adapter + SDK -# # MoPub Adapter + SDK -# # iAd.framework -# -##### - -ROOTDIR=`pwd`/.. -OUTDIR=`pwd`/out -MEDDIR=$OUTDIR/ANMediationAdapters -EXTDIR=$ROOTDIR/mediation/mediatedviews -GOOGLESDK=$EXTDIR/GoogleAdMob/GoogleAdMobSDK -MMSDK=$EXTDIR/MillennialMedia/MillennialMediaSDK - -BUNDIR=$OUTDIR/ANSDKExternalBundle -BUNEXTDIR=$BUNDIR/ANExternalNetworks -BUNGOOGLEDIR=$BUNEXTDIR/GoogleAdMob -BUNMMDIR=$BUNEXTDIR/MillennialMedia - -#cleanup -rm -rf $BUNDIR - -mkdir -p $BUNGOOGLEDIR -mkdir -p $BUNMMDIR - -# Include Google and MM SDKs. -cp $GOOGLESDK/libGoogleAdMobAds.a $BUNGOOGLEDIR -cp $GOOGLESDK/README.txt $BUNGOOGLEDIR - -cp -r $MMSDK/MillennialMedia.framework $BUNMMDIR -cp $MMSDK/LICENSE.txt $BUNMMDIR - -# Grab all adapters -cp -r $MEDDIR $BUNDIR - -# Exclude FB + MP -rm -rf $BUNDIR/ANMediationAdapters/libANSDKFacebookAdapter.a -rm -rf $BUNDIR/ANMediationAdapters/libANSDKMoPubAdapter.a - -# Base AN SDK -cp -r $OUTDIR/ANSDK $BUNDIR - -# Zip it up -cd $OUTDIR -zip -r ANSDKExternalBundle.zip ANSDKExternalBundle - - diff --git a/BinaryProjects/old/ANSDKFull.xcodeproj/project.pbxproj b/BinaryProjects/old/ANSDKFull.xcodeproj/project.pbxproj deleted file mode 100755 index e8087c853..000000000 --- a/BinaryProjects/old/ANSDKFull.xcodeproj/project.pbxproj +++ /dev/null @@ -1,515 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 8A011F9219882CDD00D192C4 /* README.txt in Resources */ = {isa = PBXBuildFile; fileRef = 8A011F8B19882CDD00D192C4 /* README.txt */; }; - 8A98874D198830FF00C5C8A9 /* libGoogleAdMobAds.a in Resources */ = {isa = PBXBuildFile; fileRef = 8A011F8A19882CDD00D192C4 /* libGoogleAdMobAds.a */; }; - 8A98874E1988320C00C5C8A9 /* libGoogleAdMobAds.a in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A011F8A19882CDD00D192C4 /* libGoogleAdMobAds.a */; }; - 8A98876A19884CEE00C5C8A9 /* MillennialMedia.framework in Copy Files */ = {isa = PBXBuildFile; fileRef = 8A98876819884CD400C5C8A9 /* MillennialMedia.framework */; }; - EC3905FD1866948A0017959C /* ANTargetingParameters.h in Copy Files */ = {isa = PBXBuildFile; fileRef = EC3905FC1866947D0017959C /* ANTargetingParameters.h */; }; - EC3E5E0D1843ECF30070315E /* ANAdAdapterBannerAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3E5DE31843ECF20070315E /* ANAdAdapterBannerAdMob.m */; }; - EC3E5E0E1843ECF30070315E /* ANAdAdapterInterstitialAdMob.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3E5DE51843ECF20070315E /* ANAdAdapterInterstitialAdMob.m */; }; - EC3E5E0F1843ECF30070315E /* ANAdAdapterBanneriAd.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3E5DE81843ECF20070315E /* ANAdAdapterBanneriAd.m */; }; - EC3E5E101843ECF30070315E /* ANAdAdapterInterstitialiAd.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3E5DEA1843ECF20070315E /* ANAdAdapterInterstitialiAd.m */; }; - EC3E5E131843ECF30070315E /* ANAdAdapterBannerMillennialMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3E5E081843ECF30070315E /* ANAdAdapterBannerMillennialMedia.m */; }; - EC3E5E141843ECF30070315E /* ANAdAdapterInterstitialMillennialMedia.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3E5E0A1843ECF30070315E /* ANAdAdapterInterstitialMillennialMedia.m */; }; - EC3E5E151843ECF30070315E /* ANAdAdapterMillennialMediaBase.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3E5E0C1843ECF30070315E /* ANAdAdapterMillennialMediaBase.m */; }; - EC6AAED31885F52800CD2FDC /* ANAdAdapterBannerDFP.m in Sources */ = {isa = PBXBuildFile; fileRef = EC6AAECE1885F34900CD2FDC /* ANAdAdapterBannerDFP.m */; }; - EC6AAED41885F52800CD2FDC /* ANAdAdapterInterstitialDFP.m in Sources */ = {isa = PBXBuildFile; fileRef = EC6AAED01885F34900CD2FDC /* ANAdAdapterInterstitialDFP.m */; }; - EC7AB0881888814300C27B1E /* ANLogManager.h in Copy Files */ = {isa = PBXBuildFile; fileRef = EC7AB0871888813300C27B1E /* ANLogManager.h */; }; - ECF23E7618452AE100A94DE8 /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ECF23E7518452AE100A94DE8 /* libANSDK.a */; }; - ECF23E7718452AEF00A94DE8 /* ANAdProtocol.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECF23E6D18452ACD00A94DE8 /* ANAdProtocol.h */; }; - ECF23E7818452AEF00A94DE8 /* ANAdView.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECF23E6E18452ACD00A94DE8 /* ANAdView.h */; }; - ECF23E7918452AEF00A94DE8 /* ANBannerAdView.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECF23E6F18452ACD00A94DE8 /* ANBannerAdView.h */; }; - ECF23E7A18452AEF00A94DE8 /* ANCustomAdapter.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECF23E7018452ACD00A94DE8 /* ANCustomAdapter.h */; }; - ECF23E7B18452AEF00A94DE8 /* ANInterstitialAd.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECF23E7118452ACD00A94DE8 /* ANInterstitialAd.h */; }; - ECF23E7C18452AEF00A94DE8 /* ANLocation.h in Copy Files */ = {isa = PBXBuildFile; fileRef = ECF23E7218452ACD00A94DE8 /* ANLocation.h */; }; - ECF23E7D18452AEF00A94DE8 /* ANSDKResources.bundle in Copy Files */ = {isa = PBXBuildFile; fileRef = ECF23E7318452ACD00A94DE8 /* ANSDKResources.bundle */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - EC3E5DAE1843EB3E0070315E /* Copy Files */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - 8A98874E1988320C00C5C8A9 /* libGoogleAdMobAds.a in Copy Files */, - EC7AB0881888814300C27B1E /* ANLogManager.h in Copy Files */, - EC3905FD1866948A0017959C /* ANTargetingParameters.h in Copy Files */, - ECF23E7718452AEF00A94DE8 /* ANAdProtocol.h in Copy Files */, - ECF23E7818452AEF00A94DE8 /* ANAdView.h in Copy Files */, - ECF23E7918452AEF00A94DE8 /* ANBannerAdView.h in Copy Files */, - ECF23E7A18452AEF00A94DE8 /* ANCustomAdapter.h in Copy Files */, - ECF23E7B18452AEF00A94DE8 /* ANInterstitialAd.h in Copy Files */, - ECF23E7C18452AEF00A94DE8 /* ANLocation.h in Copy Files */, - ECF23E7D18452AEF00A94DE8 /* ANSDKResources.bundle in Copy Files */, - 8A98876A19884CEE00C5C8A9 /* MillennialMedia.framework in Copy Files */, - ); - name = "Copy Files"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 8A011F6D19882CDD00D192C4 /* DFPBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DFPBannerView.h; sourceTree = ""; }; - 8A011F6E19882CDD00D192C4 /* DFPExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DFPExtras.h; sourceTree = ""; }; - 8A011F6F19882CDD00D192C4 /* DFPInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DFPInterstitial.h; sourceTree = ""; }; - 8A011F7019882CDD00D192C4 /* DFPSwipeableBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DFPSwipeableBannerView.h; sourceTree = ""; }; - 8A011F7119882CDD00D192C4 /* GADAdSizeDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdSizeDelegate.h; sourceTree = ""; }; - 8A011F7219882CDD00D192C4 /* GADAppEventDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAppEventDelegate.h; sourceTree = ""; }; - 8A011F7319882CDD00D192C4 /* GADSwipeableBannerViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADSwipeableBannerViewDelegate.h; sourceTree = ""; }; - 8A011F7519882CDD00D192C4 /* GADCustomEventBanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBanner.h; sourceTree = ""; }; - 8A011F7619882CDD00D192C4 /* GADCustomEventBannerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventBannerDelegate.h; sourceTree = ""; }; - 8A011F7719882CDD00D192C4 /* GADCustomEventExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventExtras.h; sourceTree = ""; }; - 8A011F7819882CDD00D192C4 /* GADCustomEventInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitial.h; sourceTree = ""; }; - 8A011F7919882CDD00D192C4 /* GADCustomEventInterstitialDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventInterstitialDelegate.h; sourceTree = ""; }; - 8A011F7A19882CDD00D192C4 /* GADCustomEventRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADCustomEventRequest.h; sourceTree = ""; }; - 8A011F7C19882CDD00D192C4 /* GADSearchBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADSearchBannerView.h; sourceTree = ""; }; - 8A011F7D19882CDD00D192C4 /* GADSearchRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADSearchRequest.h; sourceTree = ""; }; - 8A011F7E19882CDD00D192C4 /* GADAdMobExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdMobExtras.h; sourceTree = ""; }; - 8A011F7F19882CDD00D192C4 /* GADAdNetworkExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdNetworkExtras.h; sourceTree = ""; }; - 8A011F8019882CDD00D192C4 /* GADAdSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADAdSize.h; sourceTree = ""; }; - 8A011F8119882CDD00D192C4 /* GADBannerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADBannerView.h; sourceTree = ""; }; - 8A011F8219882CDD00D192C4 /* GADBannerViewDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADBannerViewDelegate.h; sourceTree = ""; }; - 8A011F8319882CDD00D192C4 /* GADInAppPurchase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADInAppPurchase.h; sourceTree = ""; }; - 8A011F8419882CDD00D192C4 /* GADInAppPurchaseDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADInAppPurchaseDelegate.h; sourceTree = ""; }; - 8A011F8519882CDD00D192C4 /* GADInterstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADInterstitial.h; sourceTree = ""; }; - 8A011F8619882CDD00D192C4 /* GADInterstitialDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADInterstitialDelegate.h; sourceTree = ""; }; - 8A011F8719882CDD00D192C4 /* GADModules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADModules.h; sourceTree = ""; }; - 8A011F8819882CDD00D192C4 /* GADRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADRequest.h; sourceTree = ""; }; - 8A011F8919882CDD00D192C4 /* GADRequestError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GADRequestError.h; sourceTree = ""; }; - 8A011F8A19882CDD00D192C4 /* libGoogleAdMobAds.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libGoogleAdMobAds.a; sourceTree = ""; }; - 8A011F8B19882CDD00D192C4 /* README.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README.txt; sourceTree = ""; }; - 8A98876819884CD400C5C8A9 /* MillennialMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MillennialMedia.framework; path = ../../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework; sourceTree = ""; }; - 8A9C610C19195928008CF74C /* ANBasicConfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ANBasicConfig.h; path = ../../../sdk/internal/ANBasicConfig.h; sourceTree = ""; }; - EC3905FC1866947D0017959C /* ANTargetingParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTargetingParameters.h; sourceTree = ""; }; - EC3E5DB01843EB3E0070315E /* libANSDKFull.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libANSDKFull.a; sourceTree = BUILT_PRODUCTS_DIR; }; - EC3E5DE21843ECF20070315E /* ANAdAdapterBannerAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerAdMob.h; sourceTree = ""; }; - EC3E5DE31843ECF20070315E /* ANAdAdapterBannerAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerAdMob.m; sourceTree = ""; }; - EC3E5DE41843ECF20070315E /* ANAdAdapterInterstitialAdMob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialAdMob.h; sourceTree = ""; }; - EC3E5DE51843ECF20070315E /* ANAdAdapterInterstitialAdMob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialAdMob.m; sourceTree = ""; }; - EC3E5DE71843ECF20070315E /* ANAdAdapterBanneriAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBanneriAd.h; sourceTree = ""; }; - EC3E5DE81843ECF20070315E /* ANAdAdapterBanneriAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBanneriAd.m; sourceTree = ""; }; - EC3E5DE91843ECF20070315E /* ANAdAdapterInterstitialiAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialiAd.h; sourceTree = ""; }; - EC3E5DEA1843ECF20070315E /* ANAdAdapterInterstitialiAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialiAd.m; sourceTree = ""; }; - EC3E5E071843ECF30070315E /* ANAdAdapterBannerMillennialMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerMillennialMedia.h; sourceTree = ""; }; - EC3E5E081843ECF30070315E /* ANAdAdapterBannerMillennialMedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerMillennialMedia.m; sourceTree = ""; }; - EC3E5E091843ECF30070315E /* ANAdAdapterInterstitialMillennialMedia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialMillennialMedia.h; sourceTree = ""; }; - EC3E5E0A1843ECF30070315E /* ANAdAdapterInterstitialMillennialMedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialMillennialMedia.m; sourceTree = ""; }; - EC3E5E0B1843ECF30070315E /* ANAdAdapterMillennialMediaBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterMillennialMediaBase.h; sourceTree = ""; }; - EC3E5E0C1843ECF30070315E /* ANAdAdapterMillennialMediaBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterMillennialMediaBase.m; sourceTree = ""; }; - EC6AAECD1885F34900CD2FDC /* ANAdAdapterBannerDFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerDFP.h; sourceTree = ""; }; - EC6AAECE1885F34900CD2FDC /* ANAdAdapterBannerDFP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerDFP.m; sourceTree = ""; }; - EC6AAECF1885F34900CD2FDC /* ANAdAdapterInterstitialDFP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterInterstitialDFP.h; sourceTree = ""; }; - EC6AAED01885F34900CD2FDC /* ANAdAdapterInterstitialDFP.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterInterstitialDFP.m; sourceTree = ""; }; - EC7AB0871888813300C27B1E /* ANLogManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLogManager.h; sourceTree = ""; }; - ECF23E6D18452ACD00A94DE8 /* ANAdProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdProtocol.h; sourceTree = ""; }; - ECF23E6E18452ACD00A94DE8 /* ANAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdView.h; sourceTree = ""; }; - ECF23E6F18452ACD00A94DE8 /* ANBannerAdView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBannerAdView.h; sourceTree = ""; }; - ECF23E7018452ACD00A94DE8 /* ANCustomAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANCustomAdapter.h; sourceTree = ""; }; - ECF23E7118452ACD00A94DE8 /* ANInterstitialAd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAd.h; sourceTree = ""; }; - ECF23E7218452ACD00A94DE8 /* ANLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLocation.h; sourceTree = ""; }; - ECF23E7318452ACD00A94DE8 /* ANSDKResources.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANSDKResources.bundle; sourceTree = ""; }; - ECF23E7518452AE100A94DE8 /* libANSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libANSDK.a; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - EC3E5DAD1843EB3E0070315E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ECF23E7618452AE100A94DE8 /* libANSDK.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 8A011F6A19882CDD00D192C4 /* GoogleAdMobSDK */ = { - isa = PBXGroup; - children = ( - 8A011F6B19882CDD00D192C4 /* Add-ons */, - 8A011F7E19882CDD00D192C4 /* GADAdMobExtras.h */, - 8A011F7F19882CDD00D192C4 /* GADAdNetworkExtras.h */, - 8A011F8019882CDD00D192C4 /* GADAdSize.h */, - 8A011F8119882CDD00D192C4 /* GADBannerView.h */, - 8A011F8219882CDD00D192C4 /* GADBannerViewDelegate.h */, - 8A011F8319882CDD00D192C4 /* GADInAppPurchase.h */, - 8A011F8419882CDD00D192C4 /* GADInAppPurchaseDelegate.h */, - 8A011F8519882CDD00D192C4 /* GADInterstitial.h */, - 8A011F8619882CDD00D192C4 /* GADInterstitialDelegate.h */, - 8A011F8719882CDD00D192C4 /* GADModules.h */, - 8A011F8819882CDD00D192C4 /* GADRequest.h */, - 8A011F8919882CDD00D192C4 /* GADRequestError.h */, - 8A011F8A19882CDD00D192C4 /* libGoogleAdMobAds.a */, - 8A011F8B19882CDD00D192C4 /* README.txt */, - ); - name = GoogleAdMobSDK; - path = ../../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK; - sourceTree = ""; - }; - 8A011F6B19882CDD00D192C4 /* Add-ons */ = { - isa = PBXGroup; - children = ( - 8A011F6C19882CDD00D192C4 /* DoubleClick */, - 8A011F7419882CDD00D192C4 /* Mediation */, - 8A011F7B19882CDD00D192C4 /* Search */, - ); - path = "Add-ons"; - sourceTree = ""; - }; - 8A011F6C19882CDD00D192C4 /* DoubleClick */ = { - isa = PBXGroup; - children = ( - 8A011F6D19882CDD00D192C4 /* DFPBannerView.h */, - 8A011F6E19882CDD00D192C4 /* DFPExtras.h */, - 8A011F6F19882CDD00D192C4 /* DFPInterstitial.h */, - 8A011F7019882CDD00D192C4 /* DFPSwipeableBannerView.h */, - 8A011F7119882CDD00D192C4 /* GADAdSizeDelegate.h */, - 8A011F7219882CDD00D192C4 /* GADAppEventDelegate.h */, - 8A011F7319882CDD00D192C4 /* GADSwipeableBannerViewDelegate.h */, - ); - path = DoubleClick; - sourceTree = ""; - }; - 8A011F7419882CDD00D192C4 /* Mediation */ = { - isa = PBXGroup; - children = ( - 8A011F7519882CDD00D192C4 /* GADCustomEventBanner.h */, - 8A011F7619882CDD00D192C4 /* GADCustomEventBannerDelegate.h */, - 8A011F7719882CDD00D192C4 /* GADCustomEventExtras.h */, - 8A011F7819882CDD00D192C4 /* GADCustomEventInterstitial.h */, - 8A011F7919882CDD00D192C4 /* GADCustomEventInterstitialDelegate.h */, - 8A011F7A19882CDD00D192C4 /* GADCustomEventRequest.h */, - ); - path = Mediation; - sourceTree = ""; - }; - 8A011F7B19882CDD00D192C4 /* Search */ = { - isa = PBXGroup; - children = ( - 8A011F7C19882CDD00D192C4 /* GADSearchBannerView.h */, - 8A011F7D19882CDD00D192C4 /* GADSearchRequest.h */, - ); - path = Search; - sourceTree = ""; - }; - EC3E5DA71843EB3E0070315E = { - isa = PBXGroup; - children = ( - EC3E5DE11843ECF20070315E /* AdMob */, - ECF23E6C18452ACD00A94DE8 /* ANSDK */, - EC6AAECC1885F34900CD2FDC /* DFP */, - EC3E5DB21843EB3E0070315E /* Frameworks */, - EC3E5DE61843ECF20070315E /* iAd */, - EC3E5E061843ECF30070315E /* MillennialMedia */, - EC3E5DB11843EB3E0070315E /* Products */, - ); - sourceTree = ""; - }; - EC3E5DB11843EB3E0070315E /* Products */ = { - isa = PBXGroup; - children = ( - EC3E5DB01843EB3E0070315E /* libANSDKFull.a */, - ); - name = Products; - sourceTree = ""; - }; - EC3E5DB21843EB3E0070315E /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8A011F6A19882CDD00D192C4 /* GoogleAdMobSDK */, - 8A98876819884CD400C5C8A9 /* MillennialMedia.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - EC3E5DE11843ECF20070315E /* AdMob */ = { - isa = PBXGroup; - children = ( - 8A9C610C19195928008CF74C /* ANBasicConfig.h */, - EC3E5DE21843ECF20070315E /* ANAdAdapterBannerAdMob.h */, - EC3E5DE31843ECF20070315E /* ANAdAdapterBannerAdMob.m */, - EC3E5DE41843ECF20070315E /* ANAdAdapterInterstitialAdMob.h */, - EC3E5DE51843ECF20070315E /* ANAdAdapterInterstitialAdMob.m */, - ); - name = AdMob; - path = ../../mediation/mediatedviews/GoogleAdMob; - sourceTree = ""; - }; - EC3E5DE61843ECF20070315E /* iAd */ = { - isa = PBXGroup; - children = ( - EC3E5DE71843ECF20070315E /* ANAdAdapterBanneriAd.h */, - EC3E5DE81843ECF20070315E /* ANAdAdapterBanneriAd.m */, - EC3E5DE91843ECF20070315E /* ANAdAdapterInterstitialiAd.h */, - EC3E5DEA1843ECF20070315E /* ANAdAdapterInterstitialiAd.m */, - ); - name = iAd; - path = ../../mediation/mediatedviews/iAd; - sourceTree = ""; - }; - EC3E5E061843ECF30070315E /* MillennialMedia */ = { - isa = PBXGroup; - children = ( - EC3E5E071843ECF30070315E /* ANAdAdapterBannerMillennialMedia.h */, - EC3E5E081843ECF30070315E /* ANAdAdapterBannerMillennialMedia.m */, - EC3E5E091843ECF30070315E /* ANAdAdapterInterstitialMillennialMedia.h */, - EC3E5E0A1843ECF30070315E /* ANAdAdapterInterstitialMillennialMedia.m */, - EC3E5E0B1843ECF30070315E /* ANAdAdapterMillennialMediaBase.h */, - EC3E5E0C1843ECF30070315E /* ANAdAdapterMillennialMediaBase.m */, - ); - name = MillennialMedia; - path = ../../mediation/mediatedviews/MillennialMedia; - sourceTree = ""; - }; - EC6AAECC1885F34900CD2FDC /* DFP */ = { - isa = PBXGroup; - children = ( - EC6AAECD1885F34900CD2FDC /* ANAdAdapterBannerDFP.h */, - EC6AAECE1885F34900CD2FDC /* ANAdAdapterBannerDFP.m */, - EC6AAECF1885F34900CD2FDC /* ANAdAdapterInterstitialDFP.h */, - EC6AAED01885F34900CD2FDC /* ANAdAdapterInterstitialDFP.m */, - ); - name = DFP; - path = ../../mediation/mediatedviews/GoogleAdMob; - sourceTree = ""; - }; - ECF23E6C18452ACD00A94DE8 /* ANSDK */ = { - isa = PBXGroup; - children = ( - ECF23E7518452AE100A94DE8 /* libANSDK.a */, - ECF23E6D18452ACD00A94DE8 /* ANAdProtocol.h */, - ECF23E6E18452ACD00A94DE8 /* ANAdView.h */, - ECF23E6F18452ACD00A94DE8 /* ANBannerAdView.h */, - ECF23E7018452ACD00A94DE8 /* ANCustomAdapter.h */, - ECF23E7118452ACD00A94DE8 /* ANInterstitialAd.h */, - ECF23E7218452ACD00A94DE8 /* ANLocation.h */, - EC7AB0871888813300C27B1E /* ANLogManager.h */, - EC3905FC1866947D0017959C /* ANTargetingParameters.h */, - ECF23E7318452ACD00A94DE8 /* ANSDKResources.bundle */, - ); - name = ANSDK; - path = out/ANSDK; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - EC3E5DAF1843EB3E0070315E /* ANSDKFull */ = { - isa = PBXNativeTarget; - buildConfigurationList = EC3E5DD31843EB3E0070315E /* Build configuration list for PBXNativeTarget "ANSDKFull" */; - buildPhases = ( - EC3E5DAC1843EB3E0070315E /* Sources */, - EC3E5DAD1843EB3E0070315E /* Frameworks */, - EC3E5DAE1843EB3E0070315E /* Copy Files */, - EC8477B91844191500A8BC80 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ANSDKFull; - productName = ANSDK; - productReference = EC3E5DB01843EB3E0070315E /* libANSDKFull.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - EC3E5DA81843EB3E0070315E /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0510; - ORGANIZATIONNAME = AppNexus; - }; - buildConfigurationList = EC3E5DAB1843EB3E0070315E /* Build configuration list for PBXProject "ANSDKFull" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = EC3E5DA71843EB3E0070315E; - productRefGroup = EC3E5DB11843EB3E0070315E /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - EC3E5DAF1843EB3E0070315E /* ANSDKFull */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - EC8477B91844191500A8BC80 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8A98874D198830FF00C5C8A9 /* libGoogleAdMobAds.a in Resources */, - 8A011F9219882CDD00D192C4 /* README.txt in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - EC3E5DAC1843EB3E0070315E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EC3E5E0D1843ECF30070315E /* ANAdAdapterBannerAdMob.m in Sources */, - EC3E5E0E1843ECF30070315E /* ANAdAdapterInterstitialAdMob.m in Sources */, - EC6AAED31885F52800CD2FDC /* ANAdAdapterBannerDFP.m in Sources */, - EC6AAED41885F52800CD2FDC /* ANAdAdapterInterstitialDFP.m in Sources */, - EC3E5E0F1843ECF30070315E /* ANAdAdapterBanneriAd.m in Sources */, - EC3E5E131843ECF30070315E /* ANAdAdapterBannerMillennialMedia.m in Sources */, - EC3E5E141843ECF30070315E /* ANAdAdapterInterstitialMillennialMedia.m in Sources */, - EC3E5E101843ECF30070315E /* ANAdAdapterInterstitialiAd.m in Sources */, - EC3E5E151843ECF30070315E /* ANAdAdapterMillennialMediaBase.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - EC3E5DD11843EB3E0070315E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - EC3E5DD21843EB3E0070315E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_NS_ASSERTIONS = NO; - FRAMEWORK_SEARCH_PATHS = ""; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - EC3E5DD41843EB3E0070315E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKFull.dst; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/../../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = ANSDKFull; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - EC3E5DD51843EB3E0070315E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DSTROOT = /tmp/ANSDKFull.dst; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/../../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = ""; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/out/ANSDK", - ); - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = ANSDKFull; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - EC3E5DAB1843EB3E0070315E /* Build configuration list for PBXProject "ANSDKFull" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EC3E5DD11843EB3E0070315E /* Debug */, - EC3E5DD21843EB3E0070315E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EC3E5DD31843EB3E0070315E /* Build configuration list for PBXNativeTarget "ANSDKFull" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EC3E5DD41843EB3E0070315E /* Debug */, - EC3E5DD51843EB3E0070315E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = EC3E5DA81843EB3E0070315E /* Project object */; -} diff --git a/BinaryProjects/old/ANSDKFull.xcodeproj/xcshareddata/xcschemes/ANSDKFull.xcscheme b/BinaryProjects/old/ANSDKFull.xcodeproj/xcshareddata/xcschemes/ANSDKFull.xcscheme deleted file mode 100755 index d381964b3..000000000 --- a/BinaryProjects/old/ANSDKFull.xcodeproj/xcshareddata/xcschemes/ANSDKFull.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BinaryProjects/old/buildsdk.sh b/BinaryProjects/old/buildsdk.sh deleted file mode 100755 index 60da2c185..000000000 --- a/BinaryProjects/old/buildsdk.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/bin/bash -# -# Simple script to built the AppNexus Advertising SDK binary packages -# -OUTDIR=`pwd`/out -OUTDIR_DEVICE=`pwd`/out_device -OUTDIR_SIMULATOR=`pwd`/out_simulator -LOGDIR=$OUTDIR/log -BUILDDIR=$OUTDIR/build - -rm -fr $OUTDIR > /dev/null 2>&1 -rm -fr $OUTDIR_DEVICE > /dev/null 2>&1 -rm -fr $OUTDIR_SIMULATOR > /dev/null 2>&1 -mkdir -p $LOGDIR - -### device - -echo "Started building of AN SDK" -LOGFILE=$LOGDIR/ANSDK.log -xcodebuild -project '../ANSDK.xcodeproj/' -scheme 'ANSDK' -configuration 'Release' -sdk iphoneos7.1 CONFIGURATION_BUILD_DIR=$OUTDIR SYMROOT=$BUILDDIR OBJROOT=$BUILDDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} -mv $OUTDIR/libANSDK.a $OUTDIR/ANSDK/libANSDK.a - -echo "Started building of Full AN SDK" -LOGFILE=$LOGDIR/ANSDKFull.log -xcodebuild -project 'ANSDKFull.xcodeproj/' -scheme 'ANSDKFull' -configuration 'Release' -sdk iphoneos7.1 CONFIGURATION_BUILD_DIR=$OUTDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} -mv $OUTDIR/libANSDKFull.a $OUTDIR/ANSDKFull/libANSDKFull.a - -rm -rf $OUTDIR/Intermediates -rm -rf $BUILDDIR - -mv $OUTDIR $OUTDIR_DEVICE - -### simulator - -mkdir -p $LOGDIR - -echo "Started building of AN SDK" -LOGFILE=$LOGDIR/ANSDK.log -xcodebuild -project '../ANSDK.xcodeproj/' -scheme 'ANSDK' -configuration 'Release' -sdk "iphonesimulator" CONFIGURATION_BUILD_DIR=$OUTDIR SYMROOT=$BUILDDIR OBJROOT=$BUILDDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} -mv $OUTDIR/libANSDK.a $OUTDIR/ANSDK/libANSDK.a - -echo "Started building of Full AN SDK" -LOGFILE=$LOGDIR/ANSDKFull.log -xcodebuild -project 'ANSDKFull.xcodeproj/' -scheme 'ANSDKFull' -configuration 'Release' -sdk "iphonesimulator" CONFIGURATION_BUILD_DIR=$OUTDIR > $LOGFILE 2>&1 || { echo "Error in build check log $LOGFILE"; exit;} -mv $OUTDIR/libANSDKFull.a $OUTDIR/ANSDKFull/libANSDKFull.a - -rm -rf $OUTDIR/Intermediates -rm -rf $BUILDDIR - -mv $OUTDIR $OUTDIR_SIMULATOR - -### combine - -mkdir -p $OUTDIR/ANSDK -mkdir -p $OUTDIR/ANSDKFull - -echo "Combining architectures into one" -lipo -create $OUTDIR_DEVICE/ANSDK/libANSDK.a $OUTDIR_SIMULATOR/ANSDK/libANSDK.a -output $OUTDIR/ANSDK/libANSDK.a -lipo -create $OUTDIR_DEVICE/ANSDKFull/libANSDKFull.a $OUTDIR_SIMULATOR/ANSDKFull/libANSDKFull.a -output $OUTDIR/ANSDKFull/libANSDKFull.a - -rm -rf $OUTDIR_DEVICE/ANSDK/libANSDK.a -rm -rf $OUTDIR_DEVICE/ANSDKFull/libANSDKFull.a - -echo "Copy header and resource files" -cp -a $OUTDIR_DEVICE/ANSDK $OUTDIR -cp -a $OUTDIR_DEVICE/ANSDKFull $OUTDIR - -rm -fr $OUTDIR_DEVICE > /dev/null 2>&1 -rm -fr $OUTDIR_SIMULATOR > /dev/null 2>&1 - -cd $OUTDIR - -echo "Zipping up Full AN SDK" -zip -r ANSDKFull.zip ANSDKFull \ No newline at end of file diff --git a/examples/SimpleBanner.xcodeproj/project.pbxproj b/examples/SimpleBanner.xcodeproj/project.pbxproj new file mode 100644 index 000000000..ffe65ff72 --- /dev/null +++ b/examples/SimpleBanner.xcodeproj/project.pbxproj @@ -0,0 +1,764 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 8AED80CD19DDA81C002F5D9F /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8AED80AC19DDA7C6002F5D9F /* ANSDKResources.bundle */; }; + 8AED80CE19DDA89D002F5D9F /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AED80AA19DDA7C6002F5D9F /* libANSDK.a */; }; + FF2FD7AD19706A5D002CAD63 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7AC19706A5D002CAD63 /* Foundation.framework */; }; + FF2FD7AF19706A5D002CAD63 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7AE19706A5D002CAD63 /* CoreGraphics.framework */; }; + FF2FD7B119706A5D002CAD63 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7B019706A5D002CAD63 /* UIKit.framework */; }; + FF2FD7B719706A5D002CAD63 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = FF2FD7B519706A5D002CAD63 /* InfoPlist.strings */; }; + FF2FD7B919706A5D002CAD63 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = FF2FD7B819706A5D002CAD63 /* main.m */; }; + FF2FD7BD19706A5D002CAD63 /* SimpleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = FF2FD7BC19706A5D002CAD63 /* SimpleAppDelegate.m */; }; + FF2FD7C019706A5D002CAD63 /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FF2FD7BE19706A5D002CAD63 /* Main_iPhone.storyboard */; }; + FF2FD7C319706A5D002CAD63 /* Main_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FF2FD7C119706A5D002CAD63 /* Main_iPad.storyboard */; }; + FF2FD7C619706A5D002CAD63 /* SimpleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FF2FD7C519706A5D002CAD63 /* SimpleViewController.m */; }; + FF2FD7C819706A5D002CAD63 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FF2FD7C719706A5D002CAD63 /* Images.xcassets */; }; + FF2FD7CF19706A5D002CAD63 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7CE19706A5D002CAD63 /* XCTest.framework */; }; + FF2FD7D019706A5D002CAD63 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7AC19706A5D002CAD63 /* Foundation.framework */; }; + FF2FD7D119706A5D002CAD63 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7B019706A5D002CAD63 /* UIKit.framework */; }; + FF2FD7D919706A5E002CAD63 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = FF2FD7D719706A5E002CAD63 /* InfoPlist.strings */; }; + FF2FD7DB19706A5E002CAD63 /* SimpleBannerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = FF2FD7DA19706A5E002CAD63 /* SimpleBannerTests.m */; }; + FF2FD7F219706AD2002CAD63 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7F119706AD2002CAD63 /* AdSupport.framework */; }; + FF2FD7F419706AD9002CAD63 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7F319706AD9002CAD63 /* AudioToolbox.framework */; }; + FF2FD7F619706ADE002CAD63 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7F519706ADE002CAD63 /* AVFoundation.framework */; }; + FF2FD7F819706AE7002CAD63 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7F719706AE7002CAD63 /* CFNetwork.framework */; }; + FF2FD7FA19706AF6002CAD63 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7F919706AF5002CAD63 /* CoreTelephony.framework */; }; + FF2FD7FC19706AFC002CAD63 /* EventKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7FB19706AFC002CAD63 /* EventKit.framework */; }; + FF2FD7FE19706B10002CAD63 /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7FD19706B10002CAD63 /* iAd.framework */; }; + FF2FD80019706B18002CAD63 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD7FF19706B18002CAD63 /* MediaPlayer.framework */; }; + FF2FD80219706B28002CAD63 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80119706B28002CAD63 /* MessageUI.framework */; }; + FF2FD80419706B30002CAD63 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80319706B30002CAD63 /* MobileCoreServices.framework */; }; + FF2FD80619706B38002CAD63 /* PassKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80519706B38002CAD63 /* PassKit.framework */; }; + FF2FD80819706B48002CAD63 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80719706B48002CAD63 /* QuartzCore.framework */; }; + FF2FD80A19706B50002CAD63 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80919706B50002CAD63 /* Security.framework */; }; + FF2FD80C19706B57002CAD63 /* Social.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80B19706B57002CAD63 /* Social.framework */; }; + FF2FD80E19706B61002CAD63 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80D19706B61002CAD63 /* StoreKit.framework */; }; + FF2FD81019706B69002CAD63 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FF2FD80F19706B69002CAD63 /* SystemConfiguration.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 8AED80A919DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EC3E5CDC1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AED80AB19DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EC48177B1845046A0066BBFE; + remoteInfo = ANSDKResources; + }; + 8AED80AD19DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D6D119CC874B00001B70; + remoteInfo = ANSDKGoogleAdMobAdapter; + }; + 8AED80AF19DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D70219CC878300001B70; + remoteInfo = ANSDKiAdAdapter; + }; + 8AED80B119DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D73319CC879900001B70; + remoteInfo = ANSDKMillennialMediaAdapter; + }; + 8AED80B319DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D76419CC87B200001B70; + remoteInfo = ANSDKMoPubAdapter; + }; + 8AED80B519DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D79519CC87CC00001B70; + remoteInfo = ANSDKFacebookAdapter; + }; + 8AED80B719DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D85319CC9A6F00001B70; + remoteInfo = ANAdapterForGoogleAdMobSDK; + }; + 8AED80B919DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D86119CC9B0F00001B70; + remoteInfo = ANAdapterForMoPubSDK; + }; + 8AED80BB19DDA7C6002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AD5154019D214CA002E53D6; + remoteInfo = ANSDKAmazonAdapter; + }; + 8AED80BE19DDA801002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AED80C019DDA801002F5D9F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC48177A1845046A0066BBFE; + remoteInfo = ANSDKResources; + }; + FF2FD7D219706A5E002CAD63 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = FF2FD7A119706A5D002CAD63 /* Project object */; + proxyType = 1; + remoteGlobalIDString = FF2FD7A819706A5D002CAD63; + remoteInfo = SimpleBanner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ANSDK.xcodeproj; path = ../BinaryProjects/ANSDK.xcodeproj; sourceTree = ""; }; + FF2FD7A919706A5D002CAD63 /* SimpleBanner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SimpleBanner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + FF2FD7AC19706A5D002CAD63 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + FF2FD7AE19706A5D002CAD63 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + FF2FD7B019706A5D002CAD63 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + FF2FD7B419706A5D002CAD63 /* SimpleBanner-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SimpleBanner-Info.plist"; sourceTree = ""; }; + FF2FD7B619706A5D002CAD63 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + FF2FD7B819706A5D002CAD63 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + FF2FD7BA19706A5D002CAD63 /* SimpleBanner-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SimpleBanner-Prefix.pch"; sourceTree = ""; }; + FF2FD7BB19706A5D002CAD63 /* SimpleAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimpleAppDelegate.h; sourceTree = ""; }; + FF2FD7BC19706A5D002CAD63 /* SimpleAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SimpleAppDelegate.m; sourceTree = ""; }; + FF2FD7BF19706A5D002CAD63 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPhone.storyboard; sourceTree = ""; }; + FF2FD7C219706A5D002CAD63 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPad.storyboard; sourceTree = ""; }; + FF2FD7C419706A5D002CAD63 /* SimpleViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimpleViewController.h; sourceTree = ""; }; + FF2FD7C519706A5D002CAD63 /* SimpleViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SimpleViewController.m; sourceTree = ""; }; + FF2FD7C719706A5D002CAD63 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + FF2FD7CD19706A5D002CAD63 /* SimpleBannerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimpleBannerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + FF2FD7CE19706A5D002CAD63 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + FF2FD7D619706A5E002CAD63 /* SimpleBannerTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SimpleBannerTests-Info.plist"; sourceTree = ""; }; + FF2FD7D819706A5E002CAD63 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + FF2FD7DA19706A5E002CAD63 /* SimpleBannerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SimpleBannerTests.m; sourceTree = ""; }; + FF2FD7F119706AD2002CAD63 /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; + FF2FD7F319706AD9002CAD63 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + FF2FD7F519706ADE002CAD63 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + FF2FD7F719706AE7002CAD63 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; + FF2FD7F919706AF5002CAD63 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; + FF2FD7FB19706AFC002CAD63 /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; }; + FF2FD7FD19706B10002CAD63 /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; + FF2FD7FF19706B18002CAD63 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; + FF2FD80119706B28002CAD63 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; + FF2FD80319706B30002CAD63 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + FF2FD80519706B38002CAD63 /* PassKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PassKit.framework; path = System/Library/Frameworks/PassKit.framework; sourceTree = SDKROOT; }; + FF2FD80719706B48002CAD63 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + FF2FD80919706B50002CAD63 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + FF2FD80B19706B57002CAD63 /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; + FF2FD80D19706B61002CAD63 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; + FF2FD80F19706B69002CAD63 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + FF2FD7A619706A5D002CAD63 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FF2FD7B119706A5D002CAD63 /* UIKit.framework in Frameworks */, + FF2FD81019706B69002CAD63 /* SystemConfiguration.framework in Frameworks */, + FF2FD80E19706B61002CAD63 /* StoreKit.framework in Frameworks */, + FF2FD80C19706B57002CAD63 /* Social.framework in Frameworks */, + FF2FD80A19706B50002CAD63 /* Security.framework in Frameworks */, + FF2FD80819706B48002CAD63 /* QuartzCore.framework in Frameworks */, + FF2FD80619706B38002CAD63 /* PassKit.framework in Frameworks */, + FF2FD80419706B30002CAD63 /* MobileCoreServices.framework in Frameworks */, + FF2FD80219706B28002CAD63 /* MessageUI.framework in Frameworks */, + FF2FD80019706B18002CAD63 /* MediaPlayer.framework in Frameworks */, + FF2FD7FE19706B10002CAD63 /* iAd.framework in Frameworks */, + FF2FD7FC19706AFC002CAD63 /* EventKit.framework in Frameworks */, + FF2FD7FA19706AF6002CAD63 /* CoreTelephony.framework in Frameworks */, + FF2FD7AF19706A5D002CAD63 /* CoreGraphics.framework in Frameworks */, + FF2FD7F819706AE7002CAD63 /* CFNetwork.framework in Frameworks */, + FF2FD7F619706ADE002CAD63 /* AVFoundation.framework in Frameworks */, + FF2FD7F419706AD9002CAD63 /* AudioToolbox.framework in Frameworks */, + FF2FD7F219706AD2002CAD63 /* AdSupport.framework in Frameworks */, + FF2FD7AD19706A5D002CAD63 /* Foundation.framework in Frameworks */, + 8AED80CE19DDA89D002F5D9F /* libANSDK.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FF2FD7CA19706A5D002CAD63 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FF2FD7CF19706A5D002CAD63 /* XCTest.framework in Frameworks */, + FF2FD7D119706A5D002CAD63 /* UIKit.framework in Frameworks */, + FF2FD7D019706A5D002CAD63 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8AED809C19DDA7C6002F5D9F /* Products */ = { + isa = PBXGroup; + children = ( + 8AED80AA19DDA7C6002F5D9F /* libANSDK.a */, + 8AED80AC19DDA7C6002F5D9F /* ANSDKResources.bundle */, + 8AED80AE19DDA7C6002F5D9F /* libANSDKGoogleAdMobAdapter.a */, + 8AED80B019DDA7C6002F5D9F /* libANSDKiAdAdapter.a */, + 8AED80B219DDA7C6002F5D9F /* libANSDKMillennialMediaAdapter.a */, + 8AED80B419DDA7C6002F5D9F /* libANSDKMoPubAdapter.a */, + 8AED80B619DDA7C6002F5D9F /* libANSDKFacebookAdapter.a */, + 8AED80B819DDA7C6002F5D9F /* libANAdapterForGoogleAdMobSDK.a */, + 8AED80BA19DDA7C6002F5D9F /* libANAdapterForMoPubSDK.a */, + 8AED80BC19DDA7C6002F5D9F /* libANSDKAmazonAdapter.a */, + ); + name = Products; + sourceTree = ""; + }; + FF2FD7A019706A5D002CAD63 = { + isa = PBXGroup; + children = ( + 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */, + FF2FD7B219706A5D002CAD63 /* SimpleBanner */, + FF2FD7D419706A5E002CAD63 /* SimpleBannerTests */, + FF2FD7AB19706A5D002CAD63 /* Frameworks */, + FF2FD7AA19706A5D002CAD63 /* Products */, + ); + sourceTree = ""; + }; + FF2FD7AA19706A5D002CAD63 /* Products */ = { + isa = PBXGroup; + children = ( + FF2FD7A919706A5D002CAD63 /* SimpleBanner.app */, + FF2FD7CD19706A5D002CAD63 /* SimpleBannerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + FF2FD7AB19706A5D002CAD63 /* Frameworks */ = { + isa = PBXGroup; + children = ( + FF2FD80F19706B69002CAD63 /* SystemConfiguration.framework */, + FF2FD80D19706B61002CAD63 /* StoreKit.framework */, + FF2FD80B19706B57002CAD63 /* Social.framework */, + FF2FD80919706B50002CAD63 /* Security.framework */, + FF2FD80719706B48002CAD63 /* QuartzCore.framework */, + FF2FD80519706B38002CAD63 /* PassKit.framework */, + FF2FD80319706B30002CAD63 /* MobileCoreServices.framework */, + FF2FD80119706B28002CAD63 /* MessageUI.framework */, + FF2FD7FF19706B18002CAD63 /* MediaPlayer.framework */, + FF2FD7FD19706B10002CAD63 /* iAd.framework */, + FF2FD7FB19706AFC002CAD63 /* EventKit.framework */, + FF2FD7F919706AF5002CAD63 /* CoreTelephony.framework */, + FF2FD7F719706AE7002CAD63 /* CFNetwork.framework */, + FF2FD7F519706ADE002CAD63 /* AVFoundation.framework */, + FF2FD7F319706AD9002CAD63 /* AudioToolbox.framework */, + FF2FD7F119706AD2002CAD63 /* AdSupport.framework */, + FF2FD7AC19706A5D002CAD63 /* Foundation.framework */, + FF2FD7AE19706A5D002CAD63 /* CoreGraphics.framework */, + FF2FD7B019706A5D002CAD63 /* UIKit.framework */, + FF2FD7CE19706A5D002CAD63 /* XCTest.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + FF2FD7B219706A5D002CAD63 /* SimpleBanner */ = { + isa = PBXGroup; + children = ( + FF2FD7BB19706A5D002CAD63 /* SimpleAppDelegate.h */, + FF2FD7BC19706A5D002CAD63 /* SimpleAppDelegate.m */, + FF2FD7BE19706A5D002CAD63 /* Main_iPhone.storyboard */, + FF2FD7C119706A5D002CAD63 /* Main_iPad.storyboard */, + FF2FD7C419706A5D002CAD63 /* SimpleViewController.h */, + FF2FD7C519706A5D002CAD63 /* SimpleViewController.m */, + FF2FD7C719706A5D002CAD63 /* Images.xcassets */, + FF2FD7B319706A5D002CAD63 /* Supporting Files */, + ); + path = SimpleBanner; + sourceTree = ""; + }; + FF2FD7B319706A5D002CAD63 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + FF2FD7B419706A5D002CAD63 /* SimpleBanner-Info.plist */, + FF2FD7B519706A5D002CAD63 /* InfoPlist.strings */, + FF2FD7B819706A5D002CAD63 /* main.m */, + FF2FD7BA19706A5D002CAD63 /* SimpleBanner-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + FF2FD7D419706A5E002CAD63 /* SimpleBannerTests */ = { + isa = PBXGroup; + children = ( + FF2FD7DA19706A5E002CAD63 /* SimpleBannerTests.m */, + FF2FD7D519706A5E002CAD63 /* Supporting Files */, + ); + path = SimpleBannerTests; + sourceTree = ""; + }; + FF2FD7D519706A5E002CAD63 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + FF2FD7D619706A5E002CAD63 /* SimpleBannerTests-Info.plist */, + FF2FD7D719706A5E002CAD63 /* InfoPlist.strings */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + FF2FD7A819706A5D002CAD63 /* SimpleBanner */ = { + isa = PBXNativeTarget; + buildConfigurationList = FF2FD7DE19706A5E002CAD63 /* Build configuration list for PBXNativeTarget "SimpleBanner" */; + buildPhases = ( + FF2FD7A519706A5D002CAD63 /* Sources */, + FF2FD7A619706A5D002CAD63 /* Frameworks */, + FF2FD7A719706A5D002CAD63 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AED80BF19DDA801002F5D9F /* PBXTargetDependency */, + 8AED80C119DDA801002F5D9F /* PBXTargetDependency */, + ); + name = SimpleBanner; + productName = SimpleBanner; + productReference = FF2FD7A919706A5D002CAD63 /* SimpleBanner.app */; + productType = "com.apple.product-type.application"; + }; + FF2FD7CC19706A5D002CAD63 /* SimpleBannerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = FF2FD7E119706A5E002CAD63 /* Build configuration list for PBXNativeTarget "SimpleBannerTests" */; + buildPhases = ( + FF2FD7C919706A5D002CAD63 /* Sources */, + FF2FD7CA19706A5D002CAD63 /* Frameworks */, + FF2FD7CB19706A5D002CAD63 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + FF2FD7D319706A5E002CAD63 /* PBXTargetDependency */, + ); + name = SimpleBannerTests; + productName = SimpleBannerTests; + productReference = FF2FD7CD19706A5D002CAD63 /* SimpleBannerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + FF2FD7A119706A5D002CAD63 /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = Simple; + LastUpgradeCheck = 0510; + ORGANIZATIONNAME = AppNexus; + TargetAttributes = { + FF2FD7CC19706A5D002CAD63 = { + TestTargetID = FF2FD7A819706A5D002CAD63; + }; + }; + }; + buildConfigurationList = FF2FD7A419706A5D002CAD63 /* Build configuration list for PBXProject "SimpleBanner" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = FF2FD7A019706A5D002CAD63; + productRefGroup = FF2FD7AA19706A5D002CAD63 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 8AED809C19DDA7C6002F5D9F /* Products */; + ProjectRef = 8AED809B19DDA7C6002F5D9F /* ANSDK.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + FF2FD7A819706A5D002CAD63 /* SimpleBanner */, + FF2FD7CC19706A5D002CAD63 /* SimpleBannerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 8AED80AA19DDA7C6002F5D9F /* libANSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDK.a; + remoteRef = 8AED80A919DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80AC19DDA7C6002F5D9F /* ANSDKResources.bundle */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = ANSDKResources.bundle; + remoteRef = 8AED80AB19DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80AE19DDA7C6002F5D9F /* libANSDKGoogleAdMobAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKGoogleAdMobAdapter.a; + remoteRef = 8AED80AD19DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80B019DDA7C6002F5D9F /* libANSDKiAdAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKiAdAdapter.a; + remoteRef = 8AED80AF19DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80B219DDA7C6002F5D9F /* libANSDKMillennialMediaAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKMillennialMediaAdapter.a; + remoteRef = 8AED80B119DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80B419DDA7C6002F5D9F /* libANSDKMoPubAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKMoPubAdapter.a; + remoteRef = 8AED80B319DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80B619DDA7C6002F5D9F /* libANSDKFacebookAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKFacebookAdapter.a; + remoteRef = 8AED80B519DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80B819DDA7C6002F5D9F /* libANAdapterForGoogleAdMobSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANAdapterForGoogleAdMobSDK.a; + remoteRef = 8AED80B719DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80BA19DDA7C6002F5D9F /* libANAdapterForMoPubSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANAdapterForMoPubSDK.a; + remoteRef = 8AED80B919DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AED80BC19DDA7C6002F5D9F /* libANSDKAmazonAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKAmazonAdapter.a; + remoteRef = 8AED80BB19DDA7C6002F5D9F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + FF2FD7A719706A5D002CAD63 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FF2FD7C319706A5D002CAD63 /* Main_iPad.storyboard in Resources */, + FF2FD7C819706A5D002CAD63 /* Images.xcassets in Resources */, + FF2FD7C019706A5D002CAD63 /* Main_iPhone.storyboard in Resources */, + FF2FD7B719706A5D002CAD63 /* InfoPlist.strings in Resources */, + 8AED80CD19DDA81C002F5D9F /* ANSDKResources.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FF2FD7CB19706A5D002CAD63 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FF2FD7D919706A5E002CAD63 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + FF2FD7A519706A5D002CAD63 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FF2FD7BD19706A5D002CAD63 /* SimpleAppDelegate.m in Sources */, + FF2FD7C619706A5D002CAD63 /* SimpleViewController.m in Sources */, + FF2FD7B919706A5D002CAD63 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FF2FD7C919706A5D002CAD63 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FF2FD7DB19706A5E002CAD63 /* SimpleBannerTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 8AED80BF19DDA801002F5D9F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDK; + targetProxy = 8AED80BE19DDA801002F5D9F /* PBXContainerItemProxy */; + }; + 8AED80C119DDA801002F5D9F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKResources; + targetProxy = 8AED80C019DDA801002F5D9F /* PBXContainerItemProxy */; + }; + FF2FD7D319706A5E002CAD63 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FF2FD7A819706A5D002CAD63 /* SimpleBanner */; + targetProxy = FF2FD7D219706A5E002CAD63 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + FF2FD7B519706A5D002CAD63 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + FF2FD7B619706A5D002CAD63 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + FF2FD7BE19706A5D002CAD63 /* Main_iPhone.storyboard */ = { + isa = PBXVariantGroup; + children = ( + FF2FD7BF19706A5D002CAD63 /* Base */, + ); + name = Main_iPhone.storyboard; + sourceTree = ""; + }; + FF2FD7C119706A5D002CAD63 /* Main_iPad.storyboard */ = { + isa = PBXVariantGroup; + children = ( + FF2FD7C219706A5D002CAD63 /* Base */, + ); + name = Main_iPad.storyboard; + sourceTree = ""; + }; + FF2FD7D719706A5E002CAD63 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + FF2FD7D819706A5E002CAD63 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + FF2FD7DC19706A5E002CAD63 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + FF2FD7DD19706A5E002CAD63 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + FF2FD7DF19706A5E002CAD63 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SimpleBanner/SimpleBanner-Prefix.pch"; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../sdk/**", + ); + INFOPLIST_FILE = "SimpleBanner/SimpleBanner-Info.plist"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + FF2FD7E019706A5E002CAD63 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SimpleBanner/SimpleBanner-Prefix.pch"; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, + "$(PROJECT_DIR)/../sdk/**", + ); + INFOPLIST_FILE = "SimpleBanner/SimpleBanner-Info.plist"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + FF2FD7E219706A5E002CAD63 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SimpleBanner.app/SimpleBanner"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SimpleBanner/SimpleBanner-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = "SimpleBannerTests/SimpleBannerTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + FF2FD7E319706A5E002CAD63 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SimpleBanner.app/SimpleBanner"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SimpleBanner/SimpleBanner-Prefix.pch"; + INFOPLIST_FILE = "SimpleBannerTests/SimpleBannerTests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUNDLE_LOADER)"; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + FF2FD7A419706A5D002CAD63 /* Build configuration list for PBXProject "SimpleBanner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FF2FD7DC19706A5E002CAD63 /* Debug */, + FF2FD7DD19706A5E002CAD63 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FF2FD7DE19706A5E002CAD63 /* Build configuration list for PBXNativeTarget "SimpleBanner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FF2FD7DF19706A5E002CAD63 /* Debug */, + FF2FD7E019706A5E002CAD63 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FF2FD7E119706A5E002CAD63 /* Build configuration list for PBXNativeTarget "SimpleBannerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FF2FD7E219706A5E002CAD63 /* Debug */, + FF2FD7E319706A5E002CAD63 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = FF2FD7A119706A5D002CAD63 /* Project object */; +} diff --git a/BinaryProjects/ANSDKiAdAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/examples/SimpleBanner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 68% rename from BinaryProjects/ANSDKiAdAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to examples/SimpleBanner.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 44cddd4e7..69370ff52 100644 --- a/BinaryProjects/ANSDKiAdAdapter.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/examples/SimpleBanner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:SimpleBanner.xcodeproj"> diff --git a/examples/SimpleBanner/Base.lproj/Main_iPad.storyboard b/examples/SimpleBanner/Base.lproj/Main_iPad.storyboard new file mode 100644 index 000000000..3e6a3f3b3 --- /dev/null +++ b/examples/SimpleBanner/Base.lproj/Main_iPad.storyboard @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/SimpleBanner/Base.lproj/Main_iPhone.storyboard b/examples/SimpleBanner/Base.lproj/Main_iPhone.storyboard new file mode 100644 index 000000000..d22fca273 --- /dev/null +++ b/examples/SimpleBanner/Base.lproj/Main_iPhone.storyboard @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/SimpleBanner/Images.xcassets/AppIcon.appiconset/Contents.json b/examples/SimpleBanner/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..91bf9c14a --- /dev/null +++ b/examples/SimpleBanner/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,53 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/SimpleBanner/Images.xcassets/LaunchImage.launchimage/Contents.json b/examples/SimpleBanner/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 000000000..6f870a462 --- /dev/null +++ b/examples/SimpleBanner/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,51 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "subtype" : "retina4", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "1x" + }, + { + "orientation" : "portrait", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "landscape", + "idiom" : "ipad", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/examples/SimpleBanner/SimpleAppDelegate.h b/examples/SimpleBanner/SimpleAppDelegate.h new file mode 100644 index 000000000..2d6f37f76 --- /dev/null +++ b/examples/SimpleBanner/SimpleAppDelegate.h @@ -0,0 +1,22 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface SimpleAppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/examples/SimpleBanner/SimpleAppDelegate.m b/examples/SimpleBanner/SimpleAppDelegate.m new file mode 100644 index 000000000..78cc09e6b --- /dev/null +++ b/examples/SimpleBanner/SimpleAppDelegate.m @@ -0,0 +1,54 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + + +#import "SimpleAppDelegate.h" + +@implementation SimpleAppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/examples/SimpleBanner/SimpleBanner-Info.plist b/examples/SimpleBanner/SimpleBanner-Info.plist new file mode 100644 index 000000000..5a85da819 --- /dev/null +++ b/examples/SimpleBanner/SimpleBanner-Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + AN.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIMainStoryboardFile + Main_iPhone + UIMainStoryboardFile~ipad + Main_iPad + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/examples/SimpleBanner/SimpleBanner-Prefix.pch b/examples/SimpleBanner/SimpleBanner-Prefix.pch new file mode 100644 index 000000000..82a2bb450 --- /dev/null +++ b/examples/SimpleBanner/SimpleBanner-Prefix.pch @@ -0,0 +1,16 @@ +// +// Prefix header +// +// The contents of this file are implicitly included at the beginning of every source file. +// + +#import + +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif diff --git a/examples/SimpleBanner/SimpleViewController.h b/examples/SimpleBanner/SimpleViewController.h new file mode 100644 index 000000000..11e12d82f --- /dev/null +++ b/examples/SimpleBanner/SimpleViewController.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface SimpleViewController : UIViewController + +@end diff --git a/examples/SimpleBanner/SimpleViewController.m b/examples/SimpleBanner/SimpleViewController.m new file mode 100644 index 000000000..438a6186c --- /dev/null +++ b/examples/SimpleBanner/SimpleViewController.m @@ -0,0 +1,105 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "SimpleViewController.h" +#import "ANBannerAdView.h" +#import "ANLogManager.h" +#import +#import "ANLocation.h" + +@interface SimpleViewController () + +@property (nonatomic, readwrite, strong) CLLocationManager *locationManager; +@property (nonatomic, readwrite, strong) ANBannerAdView *banner; + +@end + +@implementation SimpleViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + int adWidth = 300; + int adHeight = 250; + NSString *adID = @"1326299"; + + // We want to center our ad on the screen. + CGRect screenRect = [[UIScreen mainScreen] bounds]; + CGFloat originX = (screenRect.size.width / 2) - (adWidth / 2); + CGFloat originY = (screenRect.size.height / 2) - (adHeight / 2); + + // Needed for when we create our ad view. + CGRect rect = CGRectMake(originX, originY, adWidth, adHeight); + CGSize size = CGSizeMake(adWidth, adHeight); + + // Make a banner ad view. + ANBannerAdView *banner = [ANBannerAdView adViewWithFrame:rect placementId:adID adSize:size]; + banner.rootViewController = self; + banner.delegate = self; + [self.view addSubview:banner]; + + // Since this example is for testing, we'll turn on PSAs and verbose logging. + banner.shouldServePublicServiceAnnouncements = true; + [ANLogManager setANLogLevel:ANLogLevelDebug]; + + // Load an ad. + [banner loadAd]; + + [self locationSetup]; // If you want to pass location... + self.banner = banner; +} + +- (void)locationSetup { + self.locationManager = [[CLLocationManager alloc] init]; + self.locationManager.delegate = self; + [self.locationManager startUpdatingLocation]; +} + +// We implement the delegate method from the `CLLocationManagerDelegate` protocol. This allows +// us to update the banner's location whenever the device's location is updated. +- (void)locationManager:(CLLocationManager *)manager + didUpdateLocations:(NSArray *)locations { + CLLocation* location = [locations lastObject]; + self.banner.location = [ANLocation getLocationWithLatitude:location.coordinate.latitude + longitude:location.coordinate.longitude + timestamp:location.timestamp + horizontalAccuracy:location.horizontalAccuracy]; +} + +- (void)adDidReceiveAd:(id)ad { + NSLog(@"Ad did receive ad"); +} + + +- (void)adDidClose:(id)ad { + NSLog(@"Ad did close"); +} + +- (void)adWasClicked:(id)ad { + NSLog(@"Ad was clicked"); +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error { + NSLog(@"Ad failed to load: %@", error); +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/tests/TestClasses/en.lproj/InfoPlist.strings b/examples/SimpleBanner/en.lproj/InfoPlist.strings similarity index 100% rename from tests/TestClasses/en.lproj/InfoPlist.strings rename to examples/SimpleBanner/en.lproj/InfoPlist.strings diff --git a/examples/SimpleBanner/main.m b/examples/SimpleBanner/main.m new file mode 100644 index 000000000..2855f1331 --- /dev/null +++ b/examples/SimpleBanner/main.m @@ -0,0 +1,25 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +#import "SimpleAppDelegate.h" + +int main(int argc, char * argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([SimpleAppDelegate class])); + } +} diff --git a/examples/SimpleBannerTests/SimpleBannerTests-Info.plist b/examples/SimpleBannerTests/SimpleBannerTests-Info.plist new file mode 100644 index 000000000..07ceafa6b --- /dev/null +++ b/examples/SimpleBannerTests/SimpleBannerTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + AN.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/examples/SimpleBannerTests/SimpleBannerTests.m b/examples/SimpleBannerTests/SimpleBannerTests.m new file mode 100644 index 000000000..1f7be6432 --- /dev/null +++ b/examples/SimpleBannerTests/SimpleBannerTests.m @@ -0,0 +1,34 @@ +// +// SimpleBannerTests.m +// SimpleBannerTests +// +// Created by Richard Loveland on 7/11/14. +// Copyright (c) 2014 AppNexus. All rights reserved. +// + +#import + +@interface SimpleBannerTests : XCTestCase + +@end + +@implementation SimpleBannerTests + +- (void)setUp +{ + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown +{ + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample +{ + XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__); +} + +@end diff --git a/examples/SimpleBannerTests/en.lproj/InfoPlist.strings b/examples/SimpleBannerTests/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..477b28ff8 --- /dev/null +++ b/examples/SimpleBannerTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/mediation/mediatedviews/Amazon/ANAdAdapterBannerAmazon.h b/mediation/mediatedviews/Amazon/ANAdAdapterBannerAmazon.h new file mode 100644 index 000000000..433fc226d --- /dev/null +++ b/mediation/mediatedviews/Amazon/ANAdAdapterBannerAmazon.h @@ -0,0 +1,21 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANAdAdapterBaseAmazon.h" + +@interface ANAdAdapterBannerAmazon : ANAdAdapterBaseAmazon + +@end \ No newline at end of file diff --git a/mediation/mediatedviews/Amazon/ANAdAdapterBannerAmazon.m b/mediation/mediatedviews/Amazon/ANAdAdapterBannerAmazon.m new file mode 100644 index 000000000..c9c459583 --- /dev/null +++ b/mediation/mediatedviews/Amazon/ANAdAdapterBannerAmazon.m @@ -0,0 +1,79 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "ANAdAdapterBannerAmazon.h" + +@interface ANAdAdapterBannerAmazon () +@property (nonatomic, weak) UIViewController *rootViewController; +@property (nonatomic) AmazonAdView *adView; +@end + +@implementation ANAdAdapterBannerAmazon + + +@synthesize delegate = _delegate; + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + NSLog(@"Requesting Amazon banner with size: %@", NSStringFromCGSize(size)); + AmazonAdView *adView = [AmazonAdView amazonAdViewWithAdSize:size]; + adView.delegate = self; + self.rootViewController = rootViewController; + [adView loadAd:[self adOptionsForTargetingParameters:targetingParameters]]; + self.adView = adView; +} + +- (UIViewController *)viewControllerForPresentingModalView { + return self.rootViewController; +} + +- (void)adViewDidLoad:(AmazonAdView *)view { + NSLog(@"Amazon banner did load"); + [self.delegate didLoadBannerAd:view]; +} + +- (void)adViewDidFailToLoad:(AmazonAdView *)view + withError:(AmazonAdError *)error { + NSLog(@"Amazon banner did fail to load"); + [self handleAmazonError:error]; +} + +- (void)adViewWillExpand:(AmazonAdView *)view { + NSLog(@"Amazon banner will expand"); + [self.delegate willPresentAd]; + [self.delegate didPresentAd]; +} + +- (void)adViewDidCollapse:(AmazonAdView *)view { + NSLog(@"Amazon banner will collapse"); + [self.delegate willCloseAd]; + [self.delegate didCloseAd]; +} + +- (void)adViewWillResize:(AmazonAdView *)view toFrame:(CGRect)frame { + NSLog(@"Amazon view will resize to frame: %@", NSStringFromCGRect(frame)); + // Do nothing. +} + +- (BOOL)willHandleAdViewResize:(AmazonAdView *)view toFrame:(CGRect)frame { + return NO; +} + +@end diff --git a/mediation/mediatedviews/Amazon/ANAdAdapterBaseAmazon.h b/mediation/mediatedviews/Amazon/ANAdAdapterBaseAmazon.h new file mode 100644 index 000000000..da948bfd4 --- /dev/null +++ b/mediation/mediatedviews/Amazon/ANAdAdapterBaseAmazon.h @@ -0,0 +1,32 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import +#import +#import "ANCustomAdapter.h" + +/** + The Amazon app key should be set before ads are loaded. All invocations of the Amazon mediation adapters + will fail to return an ad if the key is not set. + */ +@interface ANAdAdapterBaseAmazon : NSObject + ++ (void)setAmazonAppKey:(NSString *)appKey; +- (AmazonAdOptions *)adOptionsForTargetingParameters:(ANTargetingParameters *)targetingParameters; +- (void)handleAmazonError:(AmazonAdError *)amazonError; + +@end \ No newline at end of file diff --git a/mediation/mediatedviews/Amazon/ANAdAdapterBaseAmazon.m b/mediation/mediatedviews/Amazon/ANAdAdapterBaseAmazon.m new file mode 100644 index 000000000..cb2eed7c9 --- /dev/null +++ b/mediation/mediatedviews/Amazon/ANAdAdapterBaseAmazon.m @@ -0,0 +1,85 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANAdAdapterBaseAmazon.h" + +static NSString *const kANAdAdapterBaseAmazonAgeKey = @"age"; + +static NSString *const kANAdAdapterBaseAmazonGenderKey = @"gender"; +static NSString *const kANAdAdapterBaseAmazonGenderMaleValue = @"m"; +static NSString *const kANAdAdapterBaseAmazonGenderFemaleValue = @"f"; + +@implementation ANAdAdapterBaseAmazon + +@synthesize delegate = _delegate; + ++ (void)setAmazonAppKey:(NSString *)appKey { + [[AmazonAdRegistration sharedRegistration] setAppKey:appKey]; +} + +- (AmazonAdOptions *)adOptionsForTargetingParameters:(ANTargetingParameters *)targetingParameters { + AmazonAdOptions *options = [AmazonAdOptions options]; + [targetingParameters.customKeywords enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + [options setAdvancedOption:[obj description] + forKey:[key description]]; + }]; + if (targetingParameters.location) { + options.usesGeoLocation = YES; + } + switch (targetingParameters.gender) { + case MALE: + [options setAdvancedOption:kANAdAdapterBaseAmazonGenderMaleValue + forKey:kANAdAdapterBaseAmazonGenderKey]; + break; + case FEMALE: + [options setAdvancedOption:kANAdAdapterBaseAmazonGenderFemaleValue + forKey:kANAdAdapterBaseAmazonGenderKey]; + break; + default: + break; + } + [options setAdvancedOption:targetingParameters.age + forKey:kANAdAdapterBaseAmazonAgeKey]; + return options; +} + +- (void)handleAmazonError:(AmazonAdError *)amazonError { + NSLog(@"Received error from Amazon with description: %@", amazonError.description); + ANAdResponseCode responseCode = ANAdResponseInternalError; + switch (amazonError.errorCode) { + case AmazonAdErrorRequest: + responseCode = ANAdResponseInvalidRequest; + break; + case AmazonAdErrorNoFill: + responseCode = ANAdResponseUnableToFill; + break; + case AmazonAdErrorInternalServer: + responseCode = ANAdResponseInternalError; + break; + case AmazonAdErrorNetworkConnection: + responseCode = ANAdResponseNetworkError; + break; + case AmazonAdErrorReserved: + responseCode = ANAdResponseInternalError; + break; + default: + break; + } + + [self.delegate didFailToLoadAd:responseCode]; +} + +@end \ No newline at end of file diff --git a/mediation/mediatedviews/Amazon/ANAdAdapterInterstitialAmazon.h b/mediation/mediatedviews/Amazon/ANAdAdapterInterstitialAmazon.h new file mode 100644 index 000000000..86b1eb697 --- /dev/null +++ b/mediation/mediatedviews/Amazon/ANAdAdapterInterstitialAmazon.h @@ -0,0 +1,21 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANAdAdapterBaseAmazon.h" + +@interface ANAdAdapterInterstitialAmazon : ANAdAdapterBaseAmazon + +@end \ No newline at end of file diff --git a/mediation/mediatedviews/Amazon/ANAdAdapterInterstitialAmazon.m b/mediation/mediatedviews/Amazon/ANAdAdapterInterstitialAmazon.m new file mode 100644 index 000000000..a69a69b87 --- /dev/null +++ b/mediation/mediatedviews/Amazon/ANAdAdapterInterstitialAmazon.m @@ -0,0 +1,71 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterInterstitialAmazon.h" + +@interface ANAdAdapterInterstitialAmazon () +@property (nonatomic) AmazonAdInterstitial *amazonInterstitial; +@end + +@implementation ANAdAdapterInterstitialAmazon + +- (void)requestInterstitialAdWithParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + NSLog(@"Requesting Amazon interstitial"); + AmazonAdInterstitial *amazonInterstitial = [AmazonAdInterstitial amazonAdInterstitial]; + amazonInterstitial.delegate = self; + [amazonInterstitial load:[self adOptionsForTargetingParameters:targetingParameters]]; + self.amazonInterstitial = amazonInterstitial; +} + +- (void)presentFromViewController:(UIViewController *)viewController { + [self.amazonInterstitial presentFromViewController:viewController]; +} + +- (BOOL)isReady { + return YES; +} + +- (void)interstitialDidLoad:(AmazonAdInterstitial *)interstitial { + NSLog(@"Amazon interstitial did load"); + [self.delegate didLoadInterstitialAd:self]; +} + +- (void)interstitialDidFailToLoad:(AmazonAdInterstitial *)interstitial + withError:(AmazonAdError *)error { + NSLog(@"Amazon interstitial did fail to load"); + [self handleAmazonError:error]; +} + +- (void)interstitialWillPresent:(AmazonAdInterstitial *)interstitial { + // Do nothing. +} + +- (void)interstitialDidPresent:(AmazonAdInterstitial *)interstitial { + // Do nothing. +} + +- (void)interstitialWillDismiss:(AmazonAdInterstitial *)interstitial { + NSLog(@"Amazon interstitial will dismiss"); + [self.delegate willCloseAd]; +} + +- (void)interstitialDidDismiss:(AmazonAdInterstitial *)interstitial { + NSLog(@"Amazon interstitial did dismiss"); + [self.delegate didCloseAd]; +} + +@end diff --git a/mediation/mediatedviews/Amazon/Amazon.pch b/mediation/mediatedviews/Amazon/Amazon.pch new file mode 100644 index 000000000..16bd0173d --- /dev/null +++ b/mediation/mediatedviews/Amazon/Amazon.pch @@ -0,0 +1,23 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#ifndef ANSDK_Amazon_pch +#define ANSDK_Amazon_pch + +// Amazon SDK does not import necessary framework UIKit, assumes presence of prefix header file which imports it automatically for all classes. + +#include + +#endif diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/AmazonAd b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/AmazonAd new file mode 120000 index 000000000..e374a9cb2 --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/AmazonAd @@ -0,0 +1 @@ +Versions/Current/AmazonAd \ No newline at end of file diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Headers b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Headers new file mode 120000 index 000000000..a177d2a6b --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/AmazonAd b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/AmazonAd new file mode 100644 index 000000000..e7d9b94ae Binary files /dev/null and b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/AmazonAd differ diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdError.h b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdError.h new file mode 100644 index 000000000..8f6326641 --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdError.h @@ -0,0 +1,23 @@ +// +// AmazonAdError.h +// AmazonMobileAdsSDK +// +// Copyright (c) 2012-2014 Amazon.com. All rights reserved. +// + +#import + +typedef enum { + AmazonAdErrorRequest, // Invalid Request. Example : "An invalid request was sent". + AmazonAdErrorNoFill, // No ad returned from the server. Example : "Ad not found". + AmazonAdErrorInternalServer, // Internal server error. Example : "Failed to load configuration". + AmazonAdErrorNetworkConnection, // Network Connection error + AmazonAdErrorReserved +} AmazonAdErrorCode; + +@interface AmazonAdError : NSObject + +@property (nonatomic, readonly) AmazonAdErrorCode errorCode; +@property (nonatomic, strong, readonly) NSString *errorDescription; + +@end diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdInterstitial.h b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdInterstitial.h new file mode 100644 index 000000000..872cd945d --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdInterstitial.h @@ -0,0 +1,61 @@ +// +// AmazonAdInterstitial.h +// AmazonMobileAdsSDK +// +// Created by Guo, Wei on 5/27/14. +// Copyright (c) 2014 Amazon.com. All rights reserved. +// + +#import + +@class AmazonAdError; +@class AmazonAdOptions; +@protocol AmazonAdInterstitialDelegate; + +@interface AmazonAdInterstitial : NSObject + +// Delegate to receive interstitial callbacks +@property (nonatomic, weak) id delegate; + +// True if this interstitial instance is ready to present on screen +@property (readonly) BOOL isReady; + +// True if any interstitial is currently presented on screen +@property (readonly) BOOL isShowing; + +// Create and instantiate an interstitial ++ (instancetype)amazonAdInterstitial; + +// Load an interstitial +- (void)load:(AmazonAdOptions *)options; + +// Present an interstitial on screen +- (void)presentFromViewController:(UIViewController *)viewController; + +@end + +@protocol AmazonAdInterstitialDelegate +@optional + +// Sent when load has succeeded and the interstitial isReady for display at the appropriate moment. +- (void)interstitialDidLoad:(AmazonAdInterstitial *)interstitial; + +// Sent when load has failed, typically because of network failure, an application configuration error or lack of interstitial inventory +- (void)interstitialDidFailToLoad:(AmazonAdInterstitial *)interstitial withError:(AmazonAdError *)error; + +// Sent immediately before interstitial is presented on the screen. At this point you should pause any animations, timers or other +// activities that assume user interaction and save app state. User may press Home or touch links to other apps like iTunes within the +// interstitial, leaving your app. +- (void)interstitialWillPresent:(AmazonAdInterstitial *)interstitial; + +// Sent when interstitial has been presented on the screen. +- (void)interstitialDidPresent:(AmazonAdInterstitial *)interstitial; + +// Sent immediately before interstitial leaves the screen, restoring your app and your view controller used for presentAdFromViewController:. +// At this point you should restart any foreground activities paused as part of interstitialWillPresent:. +- (void)interstitialWillDismiss:(AmazonAdInterstitial *)interstitial; + +// Sent when the user has dismissed interstitial and it has left the screen. +- (void)interstitialDidDismiss:(AmazonAdInterstitial *)interstitial; + +@end diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdOptions.h b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdOptions.h new file mode 100644 index 000000000..3128836b1 --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdOptions.h @@ -0,0 +1,36 @@ +// +// AmazonAdOptions.h +// AmazonMobileAdsSDK +// +// Copyright (c) 2012-2014 Amazon.com. All rights reserved. +// + +#import + +// Standard Amazon Ad Sizes for phones. +extern const CGSize AmazonAdSize_320x50; +extern const CGSize AmazonAdSize_300x50; +extern const CGSize AmazonAdSize_300x250; + +// Standard Amazon Ad Sizes for tablets. +extern const CGSize AmazonAdSize_728x90; +extern const CGSize AmazonAdSize_1024x50; + +@interface AmazonAdOptions : NSObject + +// Set the isTestRequest to YES, during development/integration only. This option is turned off by default. +@property (nonatomic) BOOL isTestRequest; +// If your application is enabled to read lat/long, you can configure this option to receive geo targetted ads. +// This option is turned off by default. +@property (nonatomic) BOOL usesGeoLocation; +// This will set the timeout of the request for the ad +// the min for this value is 5 seconds and the max is 60 seconds +// the default value is 10 seconds +@property (nonatomic) NSTimeInterval timeout; + +// Gets an instance of options to use. ++ (instancetype)options; +- (void)setAdvancedOption:(NSString *)value forKey:(NSString *)key; +- (NSDictionary *)advancedOptions; + +@end diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdRegistration.h b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdRegistration.h new file mode 100644 index 000000000..dd5675a1f --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdRegistration.h @@ -0,0 +1,33 @@ +// +// AmazonAdRegistration.h +// AmazonMobileAdsSDK +// +// Copyright (c) 2012-2014 Amazon.com. All rights reserved. +// + +#import + +@interface AmazonAdRegistration : NSObject + ++ (instancetype)sharedRegistration; + +// Set the applicationId provided by the Amazon Appstore. +- (void)setAppKey:(NSString *)appKey; + +// Enable/Disable logging. Logging is turned off by default. +- (void)setLogging:(BOOL)isEnabled; + +// The current Ad SDK version. +- (NSString *)sdkVersion; + +// Register your app to track app downloads from mobile ad campaigns. +// To add app download conversion tracking to your app, invoke the +// setApplicationId and the registerApp from your applicationDelegate's +// applicationDidBecomeActive protocol method. +// +// Note: Calling loadAd automatically registers your app. +// Only call this method if you are not using the Amazon Ads SDK to +// display Ads, but to track app downloads from mobile ads campaigns. +- (void)registerApp; + +@end diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdView.h b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdView.h new file mode 100644 index 000000000..b64d39fb2 --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/A/Headers/AmazonAdView.h @@ -0,0 +1,68 @@ +// +// AmazonAdView.h +// AmazonMobileAdsSDK +// +// Copyright (c) 2012-2014 Amazon.com. All rights reserved. +// + +#import + + +@class AmazonAdError; +@class AmazonAdOptions; +@protocol AmazonAdViewDelegate; + +@interface AmazonAdView : UIView + +@property (nonatomic, unsafe_unretained) id delegate; + +// Create an Ad view and instantiate it using one of the standard AdSize options specified in AmazonAdOptions ++ (instancetype)amazonAdViewWithAdSize:(CGSize)adSize; + +// Instantiate using one of the standard AdSize options specified in AmazonAdOptions. +- (instancetype)initWithAdSize:(CGSize)adSize; + +// Loads an Ad in this view +- (void)loadAd:(AmazonAdOptions *)options; + +// Returns YES if the Ad in this view is expanded +- (BOOL)isAdExpanded; + +@end + +@protocol AmazonAdViewDelegate + +@required + +/* + * The ad view relies on this method to determine which view controller will be + * used for presenting/dismissing modal views, such as the browser view presented + * when a user clicks on an ad. + */ +- (UIViewController *)viewControllerForPresentingModalView; + +@optional + +/* + * These callbacks are triggered when the ad view is about to present/dismiss a + * modal view. If your application may be disrupted by these actions, you can + * use these notifications to handle them. + */ +- (void)adViewWillExpand:(AmazonAdView *)view; +- (void)adViewDidCollapse:(AmazonAdView *)view; + + +/* + * These callbacks are related to the mraid resize function which changes the size and potentially location of this view. The frame parameter's origin specifies how the top-right corner of the view should move (e.g. x = 0 and y = -50 would represent moving the top-right corner up 50 pixels. The size represents the soon-to-be size of the ad view. + * willHandleAdViewResize allows the app to handle resizing and moving any views containing this one. When it returns true the SDK will only change the size of the ad view and it is the responsibility of the app to make sure the location of the view is correct according to the frame parameter's origin. When it returns false, the SDK will modify the origin of the ad view which may result it going out of bounds of any parent views. + */ +- (void)adViewWillResize:(AmazonAdView *)view toFrame:(CGRect)frame; +- (BOOL)willHandleAdViewResize:(AmazonAdView *)view toFrame:(CGRect)frame; + +/* + * These callbacks notify you whether the ad view (un)successfully loaded an ad. + */ +- (void)adViewDidFailToLoad:(AmazonAdView *)view withError:(AmazonAdError *)error; +- (void)adViewDidLoad:(AmazonAdView *)view; + +@end diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/Current b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/Current new file mode 120000 index 000000000..8c7e5a667 --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/mediation/mediatedviews/Amazon/AmazonSDK/NOTICE-AMAZON.txt b/mediation/mediatedviews/Amazon/AmazonSDK/NOTICE-AMAZON.txt new file mode 100644 index 000000000..14b227804 --- /dev/null +++ b/mediation/mediatedviews/Amazon/AmazonSDK/NOTICE-AMAZON.txt @@ -0,0 +1,37 @@ +The MobileAds SDK uses MoPub iOS SDK, Copyright (c) 2011 MoPub Inc., all rights reserved, under the BSD 3-Clause license, which reads as follows: + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of MoPub nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +The MobileAds SDK uses TouchJSON, Copyright (c) 2011 Jonathan Wight, all rights reserved, under the BSD 2-Clause license, which reads as follows: + +Redistribution and use in source and binary forms, with or withoutmodification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice,this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +Neither the name of the Jonathan Wight nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +The MobileAds SDK uses SBJson, Copyright (c) 2007-2011 Stig Brautaset, all rights reserved, under the BSD 3-Clause license, which reads as follows: + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/mediation/mediatedviews/Facebook/ANAdAdapterBannerFacebook.m b/mediation/mediatedviews/Facebook/ANAdAdapterBannerFacebook.m index 6158645ef..021c74210 100644 --- a/mediation/mediatedviews/Facebook/ANAdAdapterBannerFacebook.m +++ b/mediation/mediatedviews/Facebook/ANAdAdapterBannerFacebook.m @@ -54,6 +54,13 @@ - (void)adViewDidLoad:(FBAdView *)adView { - (void)adViewDidClick:(FBAdView *)adView { [self.delegate adWasClicked]; + [self.delegate willPresentAd]; + [self.delegate didPresentAd]; +} + +- (void)adViewDidFinishHandlingClick:(FBAdView *)adView { + [self.delegate willCloseAd]; + [self.delegate didCloseAd]; } @end \ No newline at end of file diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/FBAudienceNetwork b/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/FBAudienceNetwork deleted file mode 100644 index e6fa2229a..000000000 Binary files a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/FBAudienceNetwork and /dev/null differ diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/FBAudienceNetwork b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/FBAudienceNetwork similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/FBAudienceNetwork rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/FBAudienceNetwork diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Headers b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Headers similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Headers rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Headers diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Resources b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Resources similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Resources rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Resources diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdImage.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdImage.h similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdImage.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdImage.h diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdSettings.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdSettings.h similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdSettings.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdSettings.h diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAdView.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdView.h similarity index 67% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAdView.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdView.h index 70926635c..fd2884a7f 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAdView.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdView.h @@ -30,10 +30,22 @@ typedef struct FBAdSize { } FBAdSize; /*! - @abstract Represents the banner ad size. + @abstract Represents the fixed banner ad size - 320pt by 50pt. */ extern FBAdSize const kFBAdSize320x50; +/*! + @abstract Represents the flexible banner ad size, where banner width depends on + its container width, and banner height is fixed as 50pt. + */ +extern FBAdSize const kFBAdSizeHeight50Banner; + +/*! + @abstract Represents the flexible banner ad size, where banner width depends on + its container width, and banner height is fixed as 90pt. + */ +extern FBAdSize const kFBAdSizeHeight90Banner; + /*! @abstract Represents the interstitial ad size. */ @@ -53,7 +65,7 @@ extern FBAdSize const kFBAdSizeInterstital; This is a method to initialize an FBAdView matching the given placement id. @param placementID The id of the ad placement. You can create your placement id from Facebook developers page. - @param adSize The size of the ad; for example, kFBAdSize320x50. + @param adSize The size of the ad; for example, kFBAdSizeHeight50Banner or kFBAdSizeHeight90Banner. @param rootViewController The view controller that will be used to present the ad and the app store view. */ - (instancetype)initWithPlacementID:(NSString *)placementID @@ -71,6 +83,22 @@ extern FBAdSize const kFBAdSizeInterstital; */ - (void)loadAd; +/*! + @method + + @abstract + This is a method to disable auto refresh for the FBAdView instance + + @discussion By default, we read the refresh interval from the placement setting in your Facebook + developers page. Once you call this method, the auto refresh will be disabled for this FBAdView + instance, and you cannot re-enable the refresh for this instance. A new created FBAdView will still + use the default behavior. + + This method is designed for ad network mediation. We still recommend you to set the placement + refresh interval as 'None' if you're using one of the ad network mediation. + */ +- (void)disableAutoRefresh; + /*! @property @abstract Typed access to the id of the ad placement. @@ -141,5 +169,26 @@ extern FBAdSize const kFBAdSizeInterstital; */ - (void)adView:(FBAdView *)adView didFailWithError:(NSError *)error; +/*! + @method + + @abstract + Sent immediately before the impression of an FBAdView object will be logged. + + @param adView An FBAdView object sending the message. + */ +- (void)adViewWillLogImpression:(FBAdView *)adView; + +/*! + @method + + @abstract + Asks the delegate for a view controller to present modal content, such as the in-app + browser that can appear when an ad is clicked. + + @return A view controller that is used to present modal content. + */ +- (UIViewController *)viewControllerForPresentingModalView; + @end diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAudienceNetwork.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAudienceNetwork.h similarity index 95% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAudienceNetwork.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAudienceNetwork.h index 6584b241d..4b0ac845a 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAudienceNetwork.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAudienceNetwork.h @@ -20,4 +20,4 @@ #import "FBNativeAd.h" #import "FBAdImage.h" -#define FB_AD_SDK_VERSION @"3.15.1" +#define FB_AD_SDK_VERSION @"3.18.2" diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBInterstitialAd.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBInterstitialAd.h similarity index 94% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBInterstitialAd.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBInterstitialAd.h index 3677eb684..e9c146ee0 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBInterstitialAd.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBInterstitialAd.h @@ -145,4 +145,13 @@ */ - (void)interstitialAd:(FBInterstitialAd *)interstitialAd didFailWithError:(NSError *)error; +/*! + @method + + @abstract + Sent immediately before the impression of an FBInterstitialAd object will be logged. + + @param interstitialAd An FBInterstitialAd object sending the message. + */ +- (void)interstitialAdWillLogImpression:(FBInterstitialAd *)interstitialAd; @end diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBNativeAd.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBNativeAd.h similarity index 96% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBNativeAd.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBNativeAd.h index 1ee5bb557..cb6326f02 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBNativeAd.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBNativeAd.h @@ -167,6 +167,8 @@ typedef void (^FBNativeAdCompletionHandler)(FBNativeAd *nativeAd); */ @protocol FBNativeAdDelegate +@optional + /*! @method @@ -176,6 +178,17 @@ typedef void (^FBNativeAdCompletionHandler)(FBNativeAd *nativeAd); @param nativeAd An FBNativeAd object sending the message. */ - (void)nativeAdDidLoad:(FBNativeAd *)nativeAd; + +/*! + @method + + @abstract + Sent immediately before the impression of an FBNativeAd object will be logged. + + @param nativeAd An FBNativeAd object sending the message. + */ +- (void)nativeAdWillLogImpression:(FBNativeAd *)nativeAd; + /*! @method diff --git a/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/FBAudienceNetwork b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/FBAudienceNetwork new file mode 100644 index 000000000..3b0feac8d Binary files /dev/null and b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/FBAudienceNetwork differ diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAdImage.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAdImage.h similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAdImage.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAdImage.h diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAdSettings.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAdSettings.h similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAdSettings.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAdSettings.h diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdView.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAdView.h similarity index 67% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdView.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAdView.h index 70926635c..fd2884a7f 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBAdView.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAdView.h @@ -30,10 +30,22 @@ typedef struct FBAdSize { } FBAdSize; /*! - @abstract Represents the banner ad size. + @abstract Represents the fixed banner ad size - 320pt by 50pt. */ extern FBAdSize const kFBAdSize320x50; +/*! + @abstract Represents the flexible banner ad size, where banner width depends on + its container width, and banner height is fixed as 50pt. + */ +extern FBAdSize const kFBAdSizeHeight50Banner; + +/*! + @abstract Represents the flexible banner ad size, where banner width depends on + its container width, and banner height is fixed as 90pt. + */ +extern FBAdSize const kFBAdSizeHeight90Banner; + /*! @abstract Represents the interstitial ad size. */ @@ -53,7 +65,7 @@ extern FBAdSize const kFBAdSizeInterstital; This is a method to initialize an FBAdView matching the given placement id. @param placementID The id of the ad placement. You can create your placement id from Facebook developers page. - @param adSize The size of the ad; for example, kFBAdSize320x50. + @param adSize The size of the ad; for example, kFBAdSizeHeight50Banner or kFBAdSizeHeight90Banner. @param rootViewController The view controller that will be used to present the ad and the app store view. */ - (instancetype)initWithPlacementID:(NSString *)placementID @@ -71,6 +83,22 @@ extern FBAdSize const kFBAdSizeInterstital; */ - (void)loadAd; +/*! + @method + + @abstract + This is a method to disable auto refresh for the FBAdView instance + + @discussion By default, we read the refresh interval from the placement setting in your Facebook + developers page. Once you call this method, the auto refresh will be disabled for this FBAdView + instance, and you cannot re-enable the refresh for this instance. A new created FBAdView will still + use the default behavior. + + This method is designed for ad network mediation. We still recommend you to set the placement + refresh interval as 'None' if you're using one of the ad network mediation. + */ +- (void)disableAutoRefresh; + /*! @property @abstract Typed access to the id of the ad placement. @@ -141,5 +169,26 @@ extern FBAdSize const kFBAdSizeInterstital; */ - (void)adView:(FBAdView *)adView didFailWithError:(NSError *)error; +/*! + @method + + @abstract + Sent immediately before the impression of an FBAdView object will be logged. + + @param adView An FBAdView object sending the message. + */ +- (void)adViewWillLogImpression:(FBAdView *)adView; + +/*! + @method + + @abstract + Asks the delegate for a view controller to present modal content, such as the in-app + browser that can appear when an ad is clicked. + + @return A view controller that is used to present modal content. + */ +- (UIViewController *)viewControllerForPresentingModalView; + @end diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAudienceNetwork.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAudienceNetwork.h similarity index 95% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAudienceNetwork.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAudienceNetwork.h index 6584b241d..4b0ac845a 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBAudienceNetwork.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBAudienceNetwork.h @@ -20,4 +20,4 @@ #import "FBNativeAd.h" #import "FBAdImage.h" -#define FB_AD_SDK_VERSION @"3.15.1" +#define FB_AD_SDK_VERSION @"3.18.2" diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBInterstitialAd.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBInterstitialAd.h similarity index 94% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBInterstitialAd.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBInterstitialAd.h index 3677eb684..e9c146ee0 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/DeprecatedHeaders/FBInterstitialAd.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBInterstitialAd.h @@ -145,4 +145,13 @@ */ - (void)interstitialAd:(FBInterstitialAd *)interstitialAd didFailWithError:(NSError *)error; +/*! + @method + + @abstract + Sent immediately before the impression of an FBInterstitialAd object will be logged. + + @param interstitialAd An FBInterstitialAd object sending the message. + */ +- (void)interstitialAdWillLogImpression:(FBInterstitialAd *)interstitialAd; @end diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBNativeAd.h b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBNativeAd.h similarity index 96% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBNativeAd.h rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBNativeAd.h index 1ee5bb557..cb6326f02 100644 --- a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/A/Headers/FBNativeAd.h +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Headers/FBNativeAd.h @@ -167,6 +167,8 @@ typedef void (^FBNativeAdCompletionHandler)(FBNativeAd *nativeAd); */ @protocol FBNativeAdDelegate +@optional + /*! @method @@ -176,6 +178,17 @@ typedef void (^FBNativeAdCompletionHandler)(FBNativeAd *nativeAd); @param nativeAd An FBNativeAd object sending the message. */ - (void)nativeAdDidLoad:(FBNativeAd *)nativeAd; + +/*! + @method + + @abstract + Sent immediately before the impression of an FBNativeAd object will be logged. + + @param nativeAd An FBNativeAd object sending the message. + */ +- (void)nativeAdWillLogImpression:(FBNativeAd *)nativeAd; + /*! @method diff --git a/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Resources/.gitignore b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Resources/.gitignore new file mode 100644 index 000000000..86d0cb272 --- /dev/null +++ b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/A/Resources/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore \ No newline at end of file diff --git a/mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/Current b/mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/Current similarity index 100% rename from mediation/mediatedviews/Facebook/FBAudienceNetwork.framework/Versions/Current rename to mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework/Versions/Current diff --git a/mediation/mediatedviews/Facebook/FacebookSDK/LICENSE-FACEBOOK.txt b/mediation/mediatedviews/Facebook/FacebookSDK/LICENSE-FACEBOOK.txt new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/mediation/mediatedviews/Facebook/FacebookSDK/LICENSE-FACEBOOK.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerAdMob.m b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerAdMob.m index 704503690..9696f0cd7 100644 --- a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerAdMob.m +++ b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerAdMob.m @@ -170,6 +170,12 @@ - (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestErro case kGADErrorMediationInvalidAdSize: code = ANAdResponseInvalidRequest; break; + case kGADErrorInternalError: + code = ANAdResponseInternalError; + break; + case kGADErrorInvalidArgument: + code = ANAdResponseInvalidRequest; + break; default: code = ANAdResponseInternalError; break; diff --git a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerDFP.m b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerDFP.m index 63f3c810f..401babf02 100644 --- a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerDFP.m +++ b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterBannerDFP.m @@ -65,13 +65,8 @@ - (void)requestBannerAdWithSize:(CGSize)size gadAdSize = GADAdSizeFromCGSize(size); } - if (ssparam.isSwipable) { - self.dfpBanner = [[DFPSwipeableBannerView alloc] initWithAdSize:gadAdSize]; - } else{ - self.dfpBanner = [[DFPBannerView alloc] initWithAdSize:gadAdSize]; - } - GADRequest* request = [self createRequestFromTargetingParameters:targetingParameters]; + self.dfpBanner = [[DFPBannerView alloc] initWithAdSize:gadAdSize]; self.dfpBanner.adUnitID = idString; self.dfpBanner.rootViewController = rootViewController; self.dfpBanner.delegate = self; @@ -185,6 +180,12 @@ - (void)adView:(GADBannerView *)view didFailToReceiveAdWithError:(GADRequestErro case kGADErrorMediationInvalidAdSize: code = ANAdResponseInvalidRequest; break; + case kGADErrorInternalError: + code = ANAdResponseInternalError; + break; + case kGADErrorInvalidArgument: + code = ANAdResponseInvalidRequest; + break; default: code = ANAdResponseInternalError; break; diff --git a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialAdMob.m b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialAdMob.m index c3da96be7..853665d3d 100644 --- a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialAdMob.m +++ b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialAdMob.m @@ -134,6 +134,12 @@ - (void)interstitial:(GADInterstitial *)ad didFailToReceiveAdWithError:(GADReque case kGADErrorMediationInvalidAdSize: code = ANAdResponseInvalidRequest; break; + case kGADErrorInternalError: + code = ANAdResponseInternalError; + break; + case kGADErrorInvalidArgument: + code = ANAdResponseInvalidRequest; + break; default: code = ANAdResponseInternalError; break; diff --git a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialDFP.m b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialDFP.m index b8bd281f0..58b2afac5 100644 --- a/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialDFP.m +++ b/mediation/mediatedviews/GoogleAdMob/ANAdAdapterInterstitialDFP.m @@ -142,6 +142,12 @@ - (void)interstitial:(GADInterstitial *)ad didFailToReceiveAdWithError:(GADReque case kGADErrorMediationInvalidAdSize: code = ANAdResponseInvalidRequest; break; + case kGADErrorInternalError: + code = ANAdResponseInternalError; + break; + case kGADErrorInvalidArgument: + code = ANAdResponseInvalidRequest; + break; default: code = ANAdResponseInternalError; break; diff --git a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADBannerView.h b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADBannerView.h index 2a94fe2bf..4b6757625 100644 --- a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADBannerView.h +++ b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADBannerView.h @@ -113,14 +113,15 @@ #pragma mark Mediation -/// The underlying ad view of the mediated ad network. You may use this to find out the actual -/// size of the ad and adjust GADBannerView to fit the underlying ad view. -@property(nonatomic, readonly, weak) UIView *mediatedAdView; - /// The ad network class name that fetched the current ad. Returns nil while the latest ad request /// is in progress or if the latest ad request failed. For both standard and mediated Google AdMob /// ads, this method returns @"GADMAdapterGoogleAdMobAds". For ads fetched via mediation custom /// events, this method returns @"GADMAdapterCustomEvents". @property(nonatomic, readonly, weak) NSString *adNetworkClassName; +/// The underlying ad view of the mediated ad network. You may use this to find out the actual +/// size of the ad and adjust GADBannerView to fit the underlying ad view. +@property(nonatomic, readonly, weak) UIView *mediatedAdView + __attribute__((deprecated("Use adNetworkClassName."))); + @end diff --git a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADInterstitial.h b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADInterstitial.h index caa36d1ee..211a7c60d 100644 --- a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADInterstitial.h +++ b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADInterstitial.h @@ -49,15 +49,6 @@ /// presentFromViewController. - (void)loadRequest:(GADRequest *)request; -#pragma mark Request at Application Launch - -/// The |window| will be shown with the |image| displayed until either the |request| interstitial is -/// shown or a timeout occurs. The delegate will receive an interstitialDidDismissScreen: callback -/// to indicate that your app should continue when the interstitial has finished. -- (void)loadAndDisplayRequest:(GADRequest *)request - usingWindow:(UIWindow *)window - initialImage:(UIImage *)image __attribute__((deprecated(" use loadRequest:."))); - #pragma mark Post-Request /// Returns YES if the interstitial is ready to be displayed. The delegate's diff --git a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADModules.h b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADModules.h index b1818a107..c19e11994 100644 --- a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADModules.h +++ b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADModules.h @@ -14,6 +14,8 @@ @import AVFoundation; @import CoreGraphics; @import CoreTelephony; +@import EventKit; +@import EventKitUI; @import Foundation; @import MessageUI; @import StoreKit; diff --git a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequest.h b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequest.h index abc08497b..bf11028f3 100644 --- a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequest.h +++ b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequest.h @@ -26,7 +26,7 @@ typedef NS_ENUM(NSInteger, GADGender) { @interface GADRequest : NSObject /// Creates an autoreleased GADRequest. -+ (GADRequest *)request; ++ (instancetype)request; #pragma mark Additional Parameters For Ad Networks diff --git a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequestError.h b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequestError.h index 3c2530eff..6dcb06d70 100644 --- a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequestError.h +++ b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GADRequestError.h @@ -49,7 +49,16 @@ typedef NS_ENUM(NSInteger, GADErrorCode) { kGADErrorMediationNoFill, /// Attempting to pass an invalid ad size to an adapter. - kGADErrorMediationInvalidAdSize + kGADErrorMediationInvalidAdSize, + + /// Internal error. + kGADErrorInternalError, + + /// Invalid argument error. + kGADErrorInvalidArgument, + + /// Received invalid response. + kGADErrorReceivedInvalidResponse }; /// Represents the error generated due to invalid request parameters. diff --git a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/README.txt b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GoogleAdMobSDKReadme.txt similarity index 100% rename from mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/README.txt rename to mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/GoogleAdMobSDKReadme.txt diff --git a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/libGoogleAdMobAds.a b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/libGoogleAdMobAds.a index 0f61d4381..1199b0751 100644 Binary files a/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/libGoogleAdMobAds.a and b/mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/libGoogleAdMobAds.a differ diff --git a/mediation/mediatedviews/GoogleAdMob/README.txt b/mediation/mediatedviews/GoogleAdMob/README.txt deleted file mode 100644 index cf9a08577..000000000 --- a/mediation/mediatedviews/GoogleAdMob/README.txt +++ /dev/null @@ -1,3 +0,0 @@ -Update 7/24/14 -AdMob SDK Version 6.10.0 - diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/LICENSE b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/LICENSE deleted file mode 100644 index ec638e457..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/LICENSE +++ /dev/null @@ -1,76 +0,0 @@ -AppNexus iOS Mobile Advertising SDK (the "AppNexus SDK") -Copyright 2013 to 2014 AppNexus Inc. All rights reserved. - -The AppNexus SDK is licensed under the terms of the Apache License Version 2.0, as set forth in its entirety in the License file accompanying the AppNexus SDK. - - -All content located in the MillennialMedia.framework folder in the AppNexus SDK (all such content, the "Millennial SDK" or "SDK") was developed by Millennial Media Inc. and the use of which is subject to the Millennial Mobile Application SDK License Agreement set forth below: - - -MOBILE APPLICATION SDK LICENSE AGREEMENT PLEASE READ THIS CAREFULLY. IF YOU DO NOT AGREE TO THESE TERMS, YOU ARE NOT AUTHORIZED TO DOWNLOAD OR USE THIS SDK. - -THIS MOBILE APPLICATION SDK LICENSE AGREEMENT (THIS "AGREEMENT") IS A LEGAL AGREEMENT BETWEEN MILLENNIAL MEDIA, INC. ("MILLENNIAL MEDIA" OR "WE") AND YOU INDIVIDUALLY IF YOU ARE AGREEING TO IT IN YOUR PERSONAL CAPACITY, OR IF YOU ARE AUTHORIZED TO DOWNLOAD THE SDK ON BEHALF OF YOUR COMPANY OR ORGANIZATION, BETWEEN THE ENTITY FOR WHOSE BENEFIT YOU ACT ("YOU"). MILLENNIAL MEDIA OWNS AND OPERATES THE MMEDIA WEBSITE (THE "SITE") AND THE MMEDIA MOBILE PLATFORM SERVICE (THE "SERVICE"). - - -BY DOWNLOADING, INSTALLING, ACTIVATING OR USING THE SDK, YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS AGREEMENT. IF YOU HAVE ANY QUESTIONS OR CONCERNS ABOUT THE TERMS OF THIS AGREEMENT, PLEASE CONTACT US AT DEVELOPER@MILLENNIALMEDIA.COM. - - -This Agreement governs your access to, and use of, (a) the object code version of the provided software and associated application programming interface for use with mobile applications, as well as any related materials, including installation tools, sample code, source code, software libraries and documentation and any error corrections, updates, or new releases that we elect, in our sole discretion, to make available to you (all such materials, collectively, the "SDK") and (b) the Site and Service. You acknowledge that the SDK may include third party software and may enable services provided by third parties. - -1. License. Subject to the terms and conditions of this Agreement, Millennial Media hereby grants you a non-exclusive, non-transferable, non-sublicenseable, royalty-free right and license to copy and use the SDK solely for the purpose of performance pursuant to your mobile advertising agreement with Millennial Media, in accordance with the documentation (the "Purpose"). You acknowledge and agree that you have no rights to any upgrades, modifications, enhancements or revisions that Millennial Media may make to the SDK. You agree that we have no obligation to provide any support or engineering assistance of any sort unless we otherwise agree in writing. You acknowledge that we and our suppliers retain all right, title and interest in and to the original, and any copies, of the SDK and to the services enabled by the SDK. - -2. Restrictions. You may not use the SDK to: (i) design or develop anything other than a mobile application consistent with the Purpose; (ii) make any more copies of the SDK than are reasonably necessary for your authorized use thereof; (iii) modify, create derivative works of, reverse engineer, reverse compile, or disassemble the SDK or any portion thereof; (iv) distribute, publish, sell, transfer, assign, lease, rent, lend, or sublicense either in whole or part the SDK to any third party except as may specifically be permitted in Section 3 herein; (v) redistribute any component of the SDK except as set forth in Section 3 herein, or (vi) remove or otherwise obfuscate any proprietary notices or labels from the SDK. You may not use the SDK except in accordance with applicable laws and regulations, nor may you export the SDK from and outside the United States of America except as permitted under the applicable laws and regulations of the United Sates of America. You may not use the SDK to defraud any third party or to distribute obscene or other unlawful materials or information. - -You may not use any of the services enabled by the SDK, or enable use of such services, to: (a) submit any automated or recorded requests unless otherwise approved in writing by Millennial Media and its suppliers; (b) be used for commercial purposes; (c) access such services with software or means other than as specified in the SDK; (d) copy, reproduce, distribute, or in any other manner duplicate such services, in whole or in part; (e) sell, lease, license, sublicense, distribute, assign, transfer or otherwise grant any rights in the SDK, in whole or in part; (f) modify, port, translate, or create derivative works of the SDK or such services; (g) decompile, disassemble, reverse engineer or otherwise attempt to derive, reconstruct, identify or discover any source code, underlying ideas, or algorithms, of the SDK or such services by any means; (h) be used for purposes of comparison with or benchmarking against products or services made available by third parties; or (i) cause any part of the SDK to be placed in the public domain. - -Third-party trademarks, trade names, product names and logos (the "Trademarks") contained in or used by the SDK or services enabled by the SDK are the trademarks or registered trademarks of their respective owners, and the use of such Trademarks shall inure to the benefit of the trademark owner. The use of such Trademarks is intended to denote interoperability and does not constitute: (i) an affiliation by Millennial Media and its suppliers with the user of the Trademarks, or (ii) an endorsement or approval by Company and its suppliers. - -3. End Users and Mediators. You may distribute those components of the SDK that are expressly identified in the documentation as intended for distribution, solely as integrated in your application. If any component of the SDK is distributed with your application, then you will ensure that any end-user obtaining access to such application will be subject to an end-user license agreement containing terms at least as protective of Millennial Media and the SDK as the terms set forth in this Agreement. - -If Millennial Media has authorized you (in writing) to distribute the SDK to others (i.e., you are a "mediator"): (a) you may distribute the SDK, solely as incorporated into your software development kit that you distribute to developers, and (b) you will ensure that any person to whom it is distributed is subject to a license agreement containing terms at least as protective of Millennial Media and the SDK as the terms set forth in this Agreement (including the requirements in this Section 3). - -4. Copyright Notice. You must include all copyright and other proprietary rights notices that accompany the SDK in any copies that you produce. - -5. Proprietary Rights. Subject always to our ownership of the SDK, you will be the sole and exclusive owner of any software application developed using the SDK, excluding the SDK and any portions thereof. - -6. Feedback. In the event that you provide us any ideas, thoughts, criticisms, suggested improvements or other feedback related to the Site or the Services, (collectively "Feedback"), you agree we may use the Feedback to modify our products and services and that you will not be due any compensation, including any royalty related to the product or service that incorporates your Feedback. You grant to us a worldwide, royalty-free, fully paid, perpetual, irrevocable license to use, reproduce, modify, translate, distribute, perform, display, import, sell, offer for sale, make, have made and otherwise exploit the Feedback in any form, media, or technology, whether now known or hereafter developed, and to allow others to do the same. - -7. General Rules of Conduct. You agree not to use the SDK in a manner that: (a) Conducts or promotes any illegal activities; -(b) Uploads, distributes, posts, transmits or otherwise makes available, content or information that is unlawful, harmful, threatening, abusive, harassing, defamatory, vulgar, obscene, libelous, invasive of another's privacy, hateful, harmful to minors in any way, or racially, ethnically or otherwise objectionable; - -(c) Uses the SDK in any manner which interferes with the performance or functionality of the APIs or the Millennial Media services; (d) Loads or transmits any form of virus, worm, Trojan horse, or other malicious code; -(e) Promotes or advertises any item, good or service that (i) violates any applicable federal, state, or local law or regulation, or (ii) violates the terms of service of any website upon which the content is viewed; (f) Uses the SDK to generate unsolicited email advertisements or spam; or -(g) Uses any automatic, electronic or manual process to access, search or harvest information from an individual. - -8. Ownership. You understand and acknowledge that the software, code, proprietary methods and systems that make up the SDK are: (i) copyrighted by us and/or our licensors under United States and international copyright laws; (ii) subject to other intellectual property and proprietary rights and laws; and (iii) owned by us or our licensors. You must abide by all copyright notices, information, or restrictions contained in or attached to the SDK. If you are a U.S. Government end user, any of the components that constitute the SDK and its related documentation is a "commercial item" as that term is defined at 48 C.F.R. 2.101, consisting of "commercial computer software" and "commercial computer software documentation" as such terms are used in 48 C.F.R. 12.212. Consistent with 48 C.F.R. 12.212 and 48 C.F.R. -227.7202-1 through 227.7202-4, all U.S. Government end users acquire the SDK and any documentation provided with the SDK with only those rights set forth in this Agreement. - -9. Confidential Information. You will safeguard, protect, respect, and maintain as confidential the SDK, the underlying computer code to which you may obtain or receive access, and the functional or technical design, logic, or other internal routines or workings of the SDK, which are considered confidential and proprietary to Millennial Media. You agree not to reproduce, disseminate, sell, distribute or commercially exploit any such confidential information of Millennial Media in any manner. These non-disclosure obligations shall survive termination or expiration of this Agreement. - -10. Geographical Restrictions. We make no representation that all of the SDK is appropriate or available for use in locations outside the United States or all territories within the United States. If you choose to use the SDK, you do so on your own initiative and are responsible for compliance with local laws. - -11. Modification of the SDK. We reserve the right to modify or discontinue the SDK with or without notice to you. We will not be liable to you or any third party should we exercise our right to modify or discontinue the SDK. If you object to any such changes, your sole recourse will be to cease use of the SDK. YOU AGREE THAT WE WILL NOT BE LIABLE TO YOU OR ANY OTHER PARTY FOR ANY TERMINATION OF YOUR ACCESS TO THE SDK. - -12. Termination. You acknowledge and agree that we, at our sole discretion, may terminate your use of the SDK without prior notice for any reason at any time. You agree that we shall not be liable to You or any third party for termination of your access to the SDK. In the event of any termination, you will immediately cease use of the SDK. - -13. DISCLAIMERS. THE SDK AS WELL AS ALL SERVICES, SOFTWARE, MATERIALS, AND TECHNOLOGY PROVIDED IN CONNECTION WITH THIS AGREEMENT, ARE PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS WITHOUT ANY WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY LAW, MILLENNIAL MEDIA, OUR OFFICERS, DIRECTORS, AGENTS, SUPPLIERS, AND EMPLOYEES EXPRESSLY DISCLAIM ALL REPRESENTATIONS AND WARRANTIES, WHETHER EXPRESS OR IMPLIED, ORAL OR WRITTEN, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ACCURACY, TITLE, QUIET ENJOYMENT, UN-INTERRUPTION, AND/OR SYSTEM INTEGRATION. MILLENNIAL MEDIA, OUR OFFICERS, DIRECTORS, AGENTS, SUPPLIERS, AND EMPLOYEES MAKE NO WARRANTY ABOUT THE ACCURACY, RELIABILITY, COMPLETENESS, QUALITY, OR TIMELINESS OF THE SDK, OR THAT PROBLEMS WITH THE FOREGOING WILL BE CORRECTED, OR THAT THE SDK ARE FREE OF VIRUSES AND OTHER HARMFUL COMPONENTS, OR THAT THEY WILL BE UNINTERRUPTED OR ERROR FREE. - -14. LIMITATIONS OF LIABILITY AND CONTENT. YOU ACKNOWLEDGE AND AGREE THAT WE ARE ONLY WILLING TO PROVIDE ACCESS TO THE SDK IF YOU AGREE TO CERTAIN LIMITATIONS OF LIABILITY TO YOU AND TO THIRD PARTIES. IN NO EVENT WILL MILLENNIAL MEDIA, ITS PARENT, AFFILIATES, OFFICERS, DIRECTORS, AGENTS, SUPPLIERS OR EMPLOYEES BE LIABLE TO YOU OR ANY THIRD PARTY FOR ANY INDIRECT, INCIDENTAL, SPECIAL AND CONSEQUENTIAL DAMAGES OR LIKE DAMAGES, INCLUDING, LOST PROFITS, GOODWILL, LOST OPPORTUNITIES AND INTANGIBLE LOSSES, ARISING IN CONNECTION WITH THE SDK OR THESE TERMS, INCLUDING, FOR EXAMPLE AND CLARITY ONLY, DAMAGES RESULTING FROM LOST DATA, LOST EMPLOYMENT OPPORTUNITIES, OR BUSINESS INTERRUPTIONS, OR RESULTING FROM THE USE OR ACCESS TO, OR THE INABILITY TO USE OR TO USE THE SDK. THESE LIMITATIONS OF LIABILITY APPLY REGARDLESS OF THE NATURE OF ANY CLAIM, WHETHER BASED ON WARRANTY, CONTRACT, TORT, OR ANY OTHER LEGAL OR EQUITABLE THEORY, AND WHETHER OR NOT MILLENNIAL MEDIA IS ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -15. EXCLUSIVE REMEDY. YOU AGREE THAT YOUR SOLE AND EXCLUSIVE REMEDY FOR ANY CLAIMS ARISING IN CONNECTION WITH ANY VIOLATION BY US OF THIS AGREEMENT IS TO DISCONTINUE USING THE SDK. IN THE EVENT THAT A COURT DETERMINES THAT THE PRECEDING SENTENCE IS UNENFORCEABLE, OUR AGGREGATE LIABILITY FOR ALL CLAIMS ARISING IN CONNECTION WITH ANY VIOLATION OF THESE TERMS WILL NOT EXCEED ONE HUNDRED DOLLARS (U.S. $100.00). Some jurisdictions do not allow the exclusion of certain warranties or the limitation or exclusion of liability for certain types of damages. Accordingly, some of the above limitations and disclaimers may not apply to you. To the extent that we may not, as a matter of applicable law, disclaim any warranty or limit our liabilities, the scope and duration of such warranty and the extent of our liability will be the minimum permitted under such applicable law. - -16. FORCE MAJUERE. WITHOUT LIMITING THE FOREGOING, UNDER NO CIRCUMSTANCES WILL WE OR OUR SUPPLIERS BE HELD LIABLE FOR ANY DELAY OR FAILURE IN PERFORMANCE RESULTING DIRECTLY OR INDIRECTLY FROM ACTS OF NATURE, FORCES, OR CAUSES BEYOND OUR REASONABLE CONTROL, INCLUDING, WITHOUT LIMITATION, INTERNET FAILURES, COMPUTER EQUIPMENT FAILURES, TELECOMMUNICATION EQUIPMENT FAILURES, OTHER EQUIPMENT FAILURES, ELECTRICAL POWER FAILURES, STRIKES, LABOR DISPUTES, RIOTS, INSURRECTIONS, CIVIL DISTURBANCES, SHORTAGES OF LABOR OR MATERIALS, FIRES, FLOODS, STORMS, EXPLOSIONS, ACTS OF GOD, WAR, GOVERNMENTAL ACTIONS, ORDERS OF DOMESTIC OR FOREIGN COURTS OR TRIBUNALS, OR NON-PERFORMANCE OF THIRD PARTIES. - -17. Indemnification. You agree to indemnify, defend and hold harmless Millennial Media, our officers, directors, co-branders and other partners, employees, consultants and agents, from and against any and all third-party claims, liabilities, damages, losses, costs, expenses, - -fees (including reasonable attorneys' fees and court costs) that such parties may incur as a result of or arising from (i) any Content you submit, post or transmit through the SDK, (ii) your use of the SDK, (iii) your violation of this Agreement, (iv) your violation of any rights of any other person or entity, or (v) any viruses, trojan horses, worms, time bombs, cancelbots or other similar harmful or deleterious programming routines input by you into the SDK. - -18. Electronic Communications. For contractual purposes, you (i) consent to receive communications from us in an electronic form; and (ii) agree that all terms and conditions, agreements, notices, documents, disclosures, and other communications ("Communications") that we provide to you electronically satisfy any legal requirement that such Communications would satisfy if it were in a writing. Your consent to receive Communications and do business electronically, and our agreement to do so, applies to all of your interactions and transactions with us. The foregoing does not affect your non-waivable rights. You may withdraw your consent to receive Communications electronically by contacting us in the manner described below. If you withdraw your consent, from that time forward, you must stop using the SDK. The withdrawal of your consent will not affect the legal validity and enforceability of any obligations or any electronic Communications provided or business transacted between us prior to the time you withdraw your consent. Please keep us informed of any changes in your email or mailing address so that you continue to receive all Communications without interruption. - -19. General Terms. You are responsible for compliance with all applicable laws. This Agreement and the relationship between you and Millennial Media will be governed by the laws of the State of Maryland, without giving effect to any choice of laws principles that would require the application of the laws of a different country or state. Any legal action, suit or proceeding arising out of or relating to this Agreement, or your use of the SDK must be instituted exclusively in the federal or state courts located in Baltimore, Maryland and in no other jurisdiction. You further consent to exclusive personal jurisdiction and venue in, and agree to service of process issued or authorized by, any such court. This Agreement is personal to you, and you may not transfer, assign or delegate your right and/or duties under this Agreement to anyone else and any attempted assignment or delegation is void. You acknowledge that we have the right hereunder to seek an injunction, if necessary, to stop or prevent a breach of your obligations hereunder. The paragraph headings in this Agreement, shown in boldface type, are included only to help make this Agreement easier to read and have no binding effect. Any delay or failure by us to exercise or enforce any right or provision of this Agreement will not constitute a waiver of such right or provision. No waiver by us will have effect unless such waiver is set forth in writing, signed by us; nor will any such waiver of any breach or default constitute a waiver of any subsequent breach or default. This Agreement constitutes the complete and exclusive agreement between you and us with respect to the subject matter hereof, and supersedes all prior oral or written understandings, communications or agreements, other than your mobile advertising agreement with Millennial Media. If for any reason a court of competent jurisdiction finds any provision of this Agreement, or portion thereof, to be unenforceable, that provision of this Agreement will be enforced to the maximum extent permissible so as to effect the intent of the parties, and the remainder of this Agreement will continue in full force and effect. YOU AND MILLENNIAL MEDIA AGREE THAT ANY CAUSE OF ACTION ARISING OUT OF OR RELATED TO THE SITE, SERVICES OR MILLENNIAL MEDIA PLATFORM MUST COMMENCE WITHIN ONE (1) YEAR AFTER THE CAUSE OF ACTION ACCRUES, OTHERWISE, SUCH CAUSE OF ACTION IS PERMANENTLY BARRED. - - - - - - diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/LICENSE.txt b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/LICENSE-MILLENNIAL MEDIA.txt similarity index 100% rename from mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/LICENSE.txt rename to mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/LICENSE-MILLENNIAL MEDIA.txt diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers new file mode 120000 index 000000000..a177d2a6b --- /dev/null +++ b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers @@ -0,0 +1 @@ +Versions/Current/Headers \ No newline at end of file diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMAdView.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMAdView.h deleted file mode 100644 index 198d233a1..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMAdView.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// MMAdView.h -// MMAdView -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -@interface MMAdView : UIView - -// Set view controller to show overlay from -@property (nonatomic, strong) UIViewController *rootViewController; -@property (nonatomic) MMOverlayOrientationType orientationType; - -// Initializes the ad view and pass in the controller to present overlays from -- (MMAdView *)initWithFrame:(CGRect)frame apid:(NSString *)apid rootViewController:(UIViewController *)viewController; - -// Request a new ad with a generic MMRequest -- (void)getAd:(MMCompletionBlock)callback; - -// Request a new ad with a custom MMRequest object (pass in location, keywords, & demographic information) -- (void)getAdWithRequest:(MMRequest *)request onCompletion:(MMCompletionBlock)callback; - -@end \ No newline at end of file diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMInterstitial.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMInterstitial.h deleted file mode 100644 index 493f2e525..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMInterstitial.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// MMInterstitial.h -// MMSDK -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -@interface MMInterstitial : NSObject - -// Fetch an interstitial for a given APID -+ (void)fetchWithRequest:(MMRequest *)request - apid:(NSString *)apid - onCompletion:(MMCompletionBlock)callback; - -// Check if an ad is available for a given APID -+ (BOOL)isAdAvailableForApid:(NSString *)apid; - -// Display an interstitial for a given APID. ViewController is required. Orientation is optional, use 0 if no preference. -+ (void)displayForApid:(NSString *)apid - fromViewController:(UIViewController *)viewController - withOrientation:(MMOverlayOrientationType)orientationType - onCompletion:(MMCompletionBlock)callback; - -@end diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMRequest.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMRequest.h deleted file mode 100644 index 459dcc25a..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMRequest.h +++ /dev/null @@ -1,98 +0,0 @@ -// -// MMRequest.h -// MMSDK -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -enum { - MMOverlayOrientationTypeAll, - MMOverlayOrientationTypePortrait, - MMOverlayOrientationTypeLandscape -}; -typedef NSUInteger MMOverlayOrientationType; - -typedef void (^MMCompletionBlock) (BOOL success, NSError *error); - -typedef enum { - MMEducationOther, - MMEducationNone, - MMEducationHighSchool, - MMEducationInCollege, - MMEducationSomeCollege, - MMEducationAssociates, - MMEducationBachelors, - MMEducationMasters, - MMEducationDoctorate -} MMEducation; - -typedef enum { - MMGenderOther, - MMGenderMale, - MMGenderFemale -} MMGender; - -typedef enum { - MMEthnicityMiddleEastern, - MMEthnicityAsian, - MMEthnicityBlack, - MMEthnicityHispanic, - MMEthnicityIndian, - MMEthnicityNativeAmerican, - MMEthnicityPacificIslander, - MMEthnicityWhite, - MMEthnicityOther -} MMEthnicity; - -typedef enum { - MMMaritalOther, - MMMaritalSingle, - MMMaritalRelationship, - MMMaritalMarried, - MMMaritalDivorced, - MMMaritalEngaged -} MMMaritalStatus; - -@interface MMRequest : NSObject - -// Creates an MMRequest object -+ (MMRequest *)request; - -#pragma mark - Location Information - -// Creates an MMRequest object with location -+ (MMRequest *)requestWithLocation:(CLLocation *)location; - -// Set location for the ad request -@property (nonatomic, retain) CLLocation *location; - -#pragma mark - Demographic Information - -// Set demographic information for the ad request -@property (nonatomic, assign) MMEducation education; -@property (nonatomic, assign) MMGender gender; -@property (nonatomic, assign) MMEthnicity ethnicity; -@property (nonatomic, assign) MMMaritalStatus maritalStatus; -@property (nonatomic, retain) NSNumber *age; -@property (nonatomic, copy) NSString *zipCode; - -#pragma mark - Contextual Information - -// Set an array of keywords (must be NSString values) -@property (nonatomic, retain) NSMutableArray *keywords; - -// Add keywords one at a time to the array -- (void)addKeyword:(NSString *)keyword; - -#pragma mark - Additional Information - -// Set additional parameters for the ad request. Value must be NSNumber or NSString. -- (void)setValue:(id)value forKey:(NSString *)key; - -#pragma mark - Request parameters (read-only) -@property (nonatomic, retain, readonly) NSMutableDictionary *dataParameters; - -@end diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMSDK.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMSDK.h deleted file mode 100644 index d2f787801..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Headers/MMSDK.h +++ /dev/null @@ -1,54 +0,0 @@ -// -// MMSDK.h -// MMSDK -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -// NSNotification keys -extern NSString * const MillennialMediaAdWillTerminateApplication; -extern NSString * const MillennialMediaAdWasTapped; -extern NSString * const MillennialMediaAdModalWillAppear; -extern NSString * const MillennialMediaAdModalDidAppear; -extern NSString * const MillennialMediaAdModalWillDismiss; -extern NSString * const MillennialMediaAdModalDidDismiss; -extern NSString * const MillennialMediaKeyboardWillObscureAd; -extern NSString * const MillennialMediaKeyboardWillHide; - -// NSNotification userInfo keys -extern NSString * const MillennialMediaAdObjectKey; -extern NSString * const MillennialMediaAPIDKey; -extern NSString * const MillennialMediaAdTypeKey; - -// Millennial Media Ad Type keys -extern NSString * const MillennialMediaAdTypeBanner; -extern NSString * const MillennialMediaAdTypeInterstitial; - -typedef enum ErrorCode { - MMAdUnknownError = 0, - MMAdServerError = -500, - MMAdUnavailable = -503, - MMAdDisabled = -9999999 -} MMErrorCode; - -typedef enum LogLevel { - MMLOG_LEVEL_OFF = 0, - MMLOG_LEVEL_INFO = 1 << 0, - MMLOG_LEVEL_DEBUG = 1 << 1, - MMLOG_LEVEL_ERROR = 1 << 2, - MMLOG_LEVEL_FATAL = 1 << 3 -} MMLogLevel; - -@interface MMSDK : NSObject - -+ (void)initialize; -+ (NSString *)version; -+ (void)trackConversionWithGoalId:(NSString *)goalId; -+ (void)trackConversionWithGoalId:(NSString *)goalId requestData:(MMRequest *)request; -+ (void)setLogLevel:(MMLogLevel)level; -+ (void)trackEventWithId:(NSString *)eventId; - -@end diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/MillennialMedia b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/MillennialMedia deleted file mode 100644 index e1bcf47ef..000000000 Binary files a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/MillennialMedia and /dev/null differ diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/MillennialMedia b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/MillennialMedia new file mode 120000 index 000000000..ee4f2f62e --- /dev/null +++ b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/MillennialMedia @@ -0,0 +1 @@ +Versions/Current/MillennialMedia \ No newline at end of file diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/A/MillennialMedia b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/A/MillennialMedia index e1bcf47ef..e5122d3a5 100644 Binary files a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/A/MillennialMedia and b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/A/MillennialMedia differ diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current new file mode 120000 index 000000000..8c7e5a667 --- /dev/null +++ b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMAdView.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMAdView.h deleted file mode 100644 index 198d233a1..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMAdView.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// MMAdView.h -// MMAdView -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -@interface MMAdView : UIView - -// Set view controller to show overlay from -@property (nonatomic, strong) UIViewController *rootViewController; -@property (nonatomic) MMOverlayOrientationType orientationType; - -// Initializes the ad view and pass in the controller to present overlays from -- (MMAdView *)initWithFrame:(CGRect)frame apid:(NSString *)apid rootViewController:(UIViewController *)viewController; - -// Request a new ad with a generic MMRequest -- (void)getAd:(MMCompletionBlock)callback; - -// Request a new ad with a custom MMRequest object (pass in location, keywords, & demographic information) -- (void)getAdWithRequest:(MMRequest *)request onCompletion:(MMCompletionBlock)callback; - -@end \ No newline at end of file diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMInterstitial.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMInterstitial.h deleted file mode 100644 index 493f2e525..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMInterstitial.h +++ /dev/null @@ -1,27 +0,0 @@ -// -// MMInterstitial.h -// MMSDK -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -@interface MMInterstitial : NSObject - -// Fetch an interstitial for a given APID -+ (void)fetchWithRequest:(MMRequest *)request - apid:(NSString *)apid - onCompletion:(MMCompletionBlock)callback; - -// Check if an ad is available for a given APID -+ (BOOL)isAdAvailableForApid:(NSString *)apid; - -// Display an interstitial for a given APID. ViewController is required. Orientation is optional, use 0 if no preference. -+ (void)displayForApid:(NSString *)apid - fromViewController:(UIViewController *)viewController - withOrientation:(MMOverlayOrientationType)orientationType - onCompletion:(MMCompletionBlock)callback; - -@end diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMRequest.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMRequest.h deleted file mode 100644 index 459dcc25a..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMRequest.h +++ /dev/null @@ -1,98 +0,0 @@ -// -// MMRequest.h -// MMSDK -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -enum { - MMOverlayOrientationTypeAll, - MMOverlayOrientationTypePortrait, - MMOverlayOrientationTypeLandscape -}; -typedef NSUInteger MMOverlayOrientationType; - -typedef void (^MMCompletionBlock) (BOOL success, NSError *error); - -typedef enum { - MMEducationOther, - MMEducationNone, - MMEducationHighSchool, - MMEducationInCollege, - MMEducationSomeCollege, - MMEducationAssociates, - MMEducationBachelors, - MMEducationMasters, - MMEducationDoctorate -} MMEducation; - -typedef enum { - MMGenderOther, - MMGenderMale, - MMGenderFemale -} MMGender; - -typedef enum { - MMEthnicityMiddleEastern, - MMEthnicityAsian, - MMEthnicityBlack, - MMEthnicityHispanic, - MMEthnicityIndian, - MMEthnicityNativeAmerican, - MMEthnicityPacificIslander, - MMEthnicityWhite, - MMEthnicityOther -} MMEthnicity; - -typedef enum { - MMMaritalOther, - MMMaritalSingle, - MMMaritalRelationship, - MMMaritalMarried, - MMMaritalDivorced, - MMMaritalEngaged -} MMMaritalStatus; - -@interface MMRequest : NSObject - -// Creates an MMRequest object -+ (MMRequest *)request; - -#pragma mark - Location Information - -// Creates an MMRequest object with location -+ (MMRequest *)requestWithLocation:(CLLocation *)location; - -// Set location for the ad request -@property (nonatomic, retain) CLLocation *location; - -#pragma mark - Demographic Information - -// Set demographic information for the ad request -@property (nonatomic, assign) MMEducation education; -@property (nonatomic, assign) MMGender gender; -@property (nonatomic, assign) MMEthnicity ethnicity; -@property (nonatomic, assign) MMMaritalStatus maritalStatus; -@property (nonatomic, retain) NSNumber *age; -@property (nonatomic, copy) NSString *zipCode; - -#pragma mark - Contextual Information - -// Set an array of keywords (must be NSString values) -@property (nonatomic, retain) NSMutableArray *keywords; - -// Add keywords one at a time to the array -- (void)addKeyword:(NSString *)keyword; - -#pragma mark - Additional Information - -// Set additional parameters for the ad request. Value must be NSNumber or NSString. -- (void)setValue:(id)value forKey:(NSString *)key; - -#pragma mark - Request parameters (read-only) -@property (nonatomic, retain, readonly) NSMutableDictionary *dataParameters; - -@end diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMSDK.h b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMSDK.h deleted file mode 100644 index d2f787801..000000000 --- a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/Headers/MMSDK.h +++ /dev/null @@ -1,54 +0,0 @@ -// -// MMSDK.h -// MMSDK -// -// Copyright (c) 2014 Millennial Media, Inc. All rights reserved. -// - -#import -#import - -// NSNotification keys -extern NSString * const MillennialMediaAdWillTerminateApplication; -extern NSString * const MillennialMediaAdWasTapped; -extern NSString * const MillennialMediaAdModalWillAppear; -extern NSString * const MillennialMediaAdModalDidAppear; -extern NSString * const MillennialMediaAdModalWillDismiss; -extern NSString * const MillennialMediaAdModalDidDismiss; -extern NSString * const MillennialMediaKeyboardWillObscureAd; -extern NSString * const MillennialMediaKeyboardWillHide; - -// NSNotification userInfo keys -extern NSString * const MillennialMediaAdObjectKey; -extern NSString * const MillennialMediaAPIDKey; -extern NSString * const MillennialMediaAdTypeKey; - -// Millennial Media Ad Type keys -extern NSString * const MillennialMediaAdTypeBanner; -extern NSString * const MillennialMediaAdTypeInterstitial; - -typedef enum ErrorCode { - MMAdUnknownError = 0, - MMAdServerError = -500, - MMAdUnavailable = -503, - MMAdDisabled = -9999999 -} MMErrorCode; - -typedef enum LogLevel { - MMLOG_LEVEL_OFF = 0, - MMLOG_LEVEL_INFO = 1 << 0, - MMLOG_LEVEL_DEBUG = 1 << 1, - MMLOG_LEVEL_ERROR = 1 << 2, - MMLOG_LEVEL_FATAL = 1 << 3 -} MMLogLevel; - -@interface MMSDK : NSObject - -+ (void)initialize; -+ (NSString *)version; -+ (void)trackConversionWithGoalId:(NSString *)goalId; -+ (void)trackConversionWithGoalId:(NSString *)goalId requestData:(MMRequest *)request; -+ (void)setLogLevel:(MMLogLevel)level; -+ (void)trackEventWithId:(NSString *)eventId; - -@end diff --git a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/MillennialMedia b/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/MillennialMedia deleted file mode 100644 index e1bcf47ef..000000000 Binary files a/mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework/Versions/Current/MillennialMedia and /dev/null differ diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/LICENSE-MOPUB b/mediation/mediatedviews/MoPub/MoPubSDK/LICENSE-MOPUB new file mode 100644 index 000000000..cdafd75b1 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/LICENSE-MOPUB @@ -0,0 +1,10 @@ +Copyright (c) 2013 MoPub Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +* Neither the name of MoPub nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPAdBrowserController.xib b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdBrowserController.xib new file mode 100755 index 000000000..28ca1fda9 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdBrowserController.xib @@ -0,0 +1,575 @@ + + + + 1056 + 10K549 + 1938 + 1038.36 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 933 + + + YES + IBUIWebView + IBUIBarButtonItem + IBUIToolbar + IBUIView + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 274 + {320, 416} + + + 1 + MSAxIDEAA + + YES + IBCocoaTouchFramework + YES + 1 + YES + + + + 266 + {{0, 416}, {320, 44}} + + NO + NO + IBCocoaTouchFramework + 2 + + YES + + B + IBCocoaTouchFramework + + + + IBCocoaTouchFramework + + 5 + + + F + IBCocoaTouchFramework + + + + IBCocoaTouchFramework + + 5 + + + IBCocoaTouchFramework + + 13 + + + IBCocoaTouchFramework + + 5 + + + IBCocoaTouchFramework + + 9 + + + IBCocoaTouchFramework + + 5 + + + S + IBCocoaTouchFramework + + + + IBCocoaTouchFramework + + 5 + + + IBCocoaTouchFramework + 2 + + 0 + + + + + {320, 460} + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + backButton + + + + 17 + + + + doneButton + + + + 18 + + + + forwardButton + + + + 19 + + + + refreshButton + + + + 20 + + + + spinnerItem + + + + 21 + + + + webView + + + + 22 + + + + safariButton + + + + 31 + + + + delegate + + + + 23 + + + + done + + + + 29 + + + + back + + + + 24 + + + + forward + + + + 25 + + + + refresh + + + + 26 + + + + safari + + + + 28 + + + + + YES + + 0 + + YES + + + + + + 1 + + + YES + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + 5 + + + YES + + + + + + + + + + + + + + + + 6 + + + + + 7 + + + + + 8 + + + + + 9 + + + + + 10 + + + + + 11 + + + + + 12 + + + + + 13 + + + + + 14 + + + + + 15 + + + + + 16 + + + + + + + YES + + YES + -1.CustomClassName + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 1.IBPluginDependency + 10.IBPluginDependency + 11.IBPluginDependency + 12.IBPluginDependency + 13.IBPluginDependency + 14.IBPluginDependency + 15.IBPluginDependency + 16.IBPluginDependency + 4.IBPluginDependency + 5.IBPluginDependency + 6.IBPluginDependency + 7.IBPluginDependency + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + MPAdBrowserController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 31 + + + + YES + + MPAdBrowserController + UIViewController + + YES + + YES + back + done + forward + refresh + safari + + + YES + id + id + id + id + id + + + + YES + + YES + back + done + forward + refresh + safari + + + YES + + back + id + + + done + id + + + forward + id + + + refresh + id + + + safari + id + + + + + YES + + YES + backButton + doneButton + forwardButton + refreshButton + safariButton + spinnerItem + webView + + + YES + UIBarButtonItem + UIBarButtonItem + UIBarButtonItem + UIBarButtonItem + UIBarButtonItem + UIBarButtonItem + UIWebView + + + + YES + + YES + backButton + doneButton + forwardButton + refreshButton + safariButton + spinnerItem + webView + + + YES + + backButton + UIBarButtonItem + + + doneButton + UIBarButtonItem + + + forwardButton + UIBarButtonItem + + + refreshButton + UIBarButtonItem + + + safariButton + UIBarButtonItem + + + spinnerItem + UIBarButtonItem + + + webView + UIWebView + + + + + IBProjectSource + ./Classes/MPAdBrowserController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 933 + + diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPAdConversionTracker.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdConversionTracker.h new file mode 100755 index 000000000..29981d7cf --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdConversionTracker.h @@ -0,0 +1,59 @@ +// +// MPAdConversionTracker.h +// MoPub +// +// Created by Andrew He on 2/4/11. +// Copyright 2011 MoPub, Inc. All rights reserved. +// + +#import + +/** + * The `MPAdConversionTracker` class provides a mechanism for reporting application download + * (conversion) events to MoPub. This type of tracking is important for measuring the effectiveness + * of cross-promotional and direct-sold advertising. + * + * To track application downloads, get a reference to the shared instance of this class using the + * `sharedConversionTracker` method. Then, in your application delegate's + * `application:didFinishLaunchingWithOptions:` method, call the + * `reportApplicationOpenForApplicationID:` method on the shared instance. With this call in place, + * the conversion tracker will report an event to MoPub whenever the application is launched on a + * given device for the first time. Any subsequent launches will not be recorded as conversion + * events. + */ + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= MP_IOS_5_0 +@interface MPAdConversionTracker : NSObject +#else +@interface MPAdConversionTracker : NSObject +#endif + +/** @name Recording Conversions */ + +/** + * Returns the shared instance of the `MPAdConversionTracker` class. + * + * @return A singleton `MPAdConversionTracker` object. + */ ++ (MPAdConversionTracker *)sharedConversionTracker; + +/** + * Notifies MoPub that a conversion event should be recorded for the application corresponding to + * the specified `appID`. + * + * A conversion event will only be reported once per application download, even if this method + * is called multiple times. + * + * @param appID An iTunes application ID. + * + * The easiest way to find the correct ID for your application is to generate an iTunes URL using + * the [iTunes Link Maker](https://itunes.apple.com/linkmaker), and then extract the number + * immediately following the "id" string. + * + * For example, the iTunes URL for the "Find My Friends" application is + * https://itunes.apple.com/us/app/find-my-friends/id466122094, so its application ID is + * 466122094. + */ +- (void)reportApplicationOpenForApplicationID:(NSString *)appID; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPAdPositioning.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdPositioning.h new file mode 100755 index 000000000..805f97ee4 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdPositioning.h @@ -0,0 +1,15 @@ +// +// MPAdPositioning.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import + +@interface MPAdPositioning : NSObject + +@property (nonatomic, assign) NSUInteger repeatingInterval; +@property (nonatomic, strong, readonly) NSMutableOrderedSet *fixedPositions; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPAdView.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdView.h index 0fbc1bc1a..32fd393b1 100755 --- a/mediation/mediatedviews/MoPub/MoPubSDK/MPAdView.h +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPAdView.h @@ -44,7 +44,7 @@ typedef enum * @warning **Important**: Before releasing an instance of `MPAdView`, you must set its delegate * property to `nil`. */ -@property (nonatomic, assign) id delegate; +@property (nonatomic, weak) id delegate; /** @name Setting Request Parameters */ @@ -67,7 +67,7 @@ typedef enum * On the MoPub website, keyword targeting options can be found under the "Advanced Targeting" * section when managing campaigns. */ -@property (nonatomic, retain) NSString *keywords; +@property (nonatomic, copy) NSString *keywords; /** * A `CLLocation` object representing a user's location that should be passed to the MoPub ad server diff --git a/mediation/mediating/MoPub/MoPubSDK/MPBannerCustomEvent.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPBannerCustomEvent.h old mode 100644 new mode 100755 similarity index 98% rename from mediation/mediating/MoPub/MoPubSDK/MPBannerCustomEvent.h rename to mediation/mediatedviews/MoPub/MoPubSDK/MPBannerCustomEvent.h index 5cbc69748..bc6d3483d --- a/mediation/mediating/MoPub/MoPubSDK/MPBannerCustomEvent.h +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPBannerCustomEvent.h @@ -88,6 +88,6 @@ * and your `MPAdView`'s delegate of the progress of your custom event. * */ -@property (nonatomic, assign) id delegate; +@property (nonatomic, weak) id delegate; @end diff --git a/mediation/mediating/MoPub/MoPubSDK/MPBannerCustomEventDelegate.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPBannerCustomEventDelegate.h old mode 100644 new mode 100755 similarity index 100% rename from mediation/mediating/MoPub/MoPubSDK/MPBannerCustomEventDelegate.h rename to mediation/mediatedviews/MoPub/MoPubSDK/MPBannerCustomEventDelegate.h diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPClientAdPositioning.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPClientAdPositioning.h new file mode 100755 index 000000000..60e9ef9c7 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPClientAdPositioning.h @@ -0,0 +1,62 @@ +// +// MPClientAdPositioning.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import "MPAdPositioning.h" + +/** + * The `MPClientAdPositioning` class is a model that allows you to control the positions where + * native advertisements should appear within a stream. A positioning object works in conjunction + * with an ad placer, giving the ad placer the information it needs to configure the positions and + * frequency of ads. + * + * You can specify that ads should appear at fixed index paths and/or at equally spaced intervals + * throughout your content. + */ + +@interface MPClientAdPositioning : MPAdPositioning + +/** @name Creating a Positioning Object */ + +/** + * Creates and returns an empty positioning object. In order for ads to display in a stream, the + * positioning object must either have at least one fixed position or have repeating positions + * enabled. + * + * @return The newly created positioning object. + */ ++ (instancetype)positioning; + +/** + * Tells the positioning object that an ad should be placed at the specified position. + * + * Positions are passed in as absolute index paths within a stream. For example, if you place an + * ad in a table view at a fixed index path with row 1, an ad will appear in row 1, which may shift + * other content items to higher row indexes. + * + * Note: this method uses `NSIndexPath` objects to accommodate streams with multiple sections. If + * your stream does not contain multiple sections, you should pass in index paths with a section + * value of 0. + * + * @param indexPath An index path representing a position for an ad. + */ +- (void)addFixedIndexPath:(NSIndexPath *)indexPath; + +/** + * Tells the positioning object that ads should be displayed evenly throughout a stream using the + * specified interval. + * + * Repeating ads will only appear within a single section. If the receiver has fixed positions, + * the sequence of repeating ads will start to appear following the last registered fixed position. + * If the receiver does not have any fixed positions, ads will appear regularly starting at + * `interval`, within the first section. + * + * @param interval The frequency at which to display ads. This must be a value greater than 1. + */ +- (void)enableRepeatingPositionsWithInterval:(NSUInteger)interval; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX.png b/mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX.png new file mode 100755 index 000000000..2e9dcee7a Binary files /dev/null and b/mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX.png differ diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX@2x.png b/mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX@2x.png new file mode 100755 index 000000000..9177ab237 Binary files /dev/null and b/mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX@2x.png differ diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPCollectionViewAdPlacer.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPCollectionViewAdPlacer.h new file mode 100755 index 000000000..ee57d8860 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPCollectionViewAdPlacer.h @@ -0,0 +1,323 @@ +// +// MPCollectionViewAdPlacer.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import +#import "MPClientAdPositioning.h" +#import "MPServerAdPositioning.h" + +@class MPNativeAdRequestTargeting; + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The `MPCollectionViewAdPlacer` class allows you to request native ads from the MoPub ad server and + * place them into a `UICollectionView` object. + * + * When an instance of this class is initialized with a collection view, it wraps the collection + * view's data source and delegate in order to insert ads and adjust the positions of your regular + * content cells. + */ + +@interface MPCollectionViewAdPlacer : NSObject + +/** @name Initializing a Table View Ad Placer */ + +/** + * Creates and returns an ad placer that will insert ads into a collection view. + * + * @param collectionView The collection view in which to insert ads. + * @param controller The view controller which should be used to present modal content. + * @param positioning The positioning object that specifies where ads should be shown in the stream. + * @param defaultAdRenderingClass The class that will be used to render ads. This class must + * implement the `MPNativeAdRendering` protocol and must be a subclass of `UICollectionViewCell`. + * + * @return An `MPCollectionViewAdPlacer` object. + */ ++ (instancetype)placerWithCollectionView:(UICollectionView *)collectionView viewController:(UIViewController *)controller adPositioning:(MPAdPositioning *)positioning defaultAdRenderingClass:(Class)defaultAdRenderingClass; + +/** @name Requesting Ads */ + +/** + * Requests ads from the MoPub ad server using the specified ad unit ID. + * + * @param adUnitID A string representing a MoPub ad unit ID. + */ +- (void)loadAdsForAdUnitID:(NSString *)adUnitID; + +/** + * Requests ads from the MoPub ad server using the specified ad unit ID and targeting parameters. + * + * @param adUnitID A string representing a MoPub ad unit ID. + * @param targeting An object containing targeting information, such as geolocation data. + */ +- (void)loadAdsForAdUnitID:(NSString *)adUnitID targeting:(MPNativeAdRequestTargeting *)targeting; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The MoPub SDK adds interfaces to the `UICollectionView` class to help your application with + * responsibilities related to `MPCollectionViewAdPlacer`. These APIs include methods to help notify + * the ad placer of all modifications to the original collection view, as well as to simplify your + * application code such that it does not need to perform index path manipulations to account for + * the presence of ads. + * + * Since the ad placer replaces the original data source and delegate objects of your collection + * view, the SDK also provides new methods for you to set these properties such that the ad placer + * remains aware of the changes. + */ + +@interface UICollectionView (MPCollectionViewAdPlacer) + +- (void)mp_setAdPlacer:(MPCollectionViewAdPlacer *)placer; + +/** @name Obtaining the Collection View Ad Placer */ + +/** + * Returns the ad placer currently being used for this collection view. + * + * @return An ad placer object or `nil` if no ad placer is being used. + */ +- (MPCollectionViewAdPlacer *)mp_adPlacer; + +/** @name Setting and Getting the Delegate and Data Source */ + +/** + * Sets the collection view's data source. + * + * If your application needs to change a collection view's data source after it has instantiated an + * ad placer using that collection view, use this method rather than + * -[UICollectionView setDataSource:]. + * + * @param dataSource The new collection view data source. + */ +- (void)mp_setDataSource:(id)dataSource; + +/** + * Returns the original data source of the collection view. + * + * When you instantiate an ad placer using a collection view, the ad placer replaces the collection + * view's original data source object. If your application needs to access the original data source, + * use this method instead of -[UICollectionView dataSource]. + * + * @return The original collection view data source. + */ +- (id)mp_dataSource; + +/** + * Sets the collection view's delegate. + * + * If your application needs to change a collection view's delegate after it has instantiated an ad + * placer using that collection view, use this method rather than -[UICollectionView setDelegate:]. + * + * @param delegate The new collection view delegate. + */ +- (void)mp_setDelegate:(id)delegate; + +/** + * Returns the original delegate of the collection view. + * + * When you instantiate an ad placer using a collection view, the ad placer replaces the collection + * view's original delegate object. If your application needs to access the original delegate, use + * this method instead of -[UICollectionView delegate]. + * + * @return The original table view delegate. + */ +- (id)mp_delegate; + +/** @name Notifying the Collection View Ad Placer of Content Changes */ + +/** + * Reloads all of the data for the collection view. + */ +- (void)mp_reloadData; + +/** + * Inserts new items at the specified index paths, and informs the attached ad placer of the + * insertions. + * + * @param indexPaths An array of `NSIndexPath` objects, each of which contains a section index and + * item index at which to insert a new cell. This parameter must not be `nil`. + */ +- (void)mp_insertItemsAtIndexPaths:(NSArray *)indexPaths; + +/** + * Deletes the items at the specified index paths, and informs the attached ad placer of the + * deletions. + * + * @param indexPaths An array of `NSIndexPath` objects, each of which contains a section index and + * item index for the item you want to delete from the collection view. This parameter must not be + * `nil`. + */ +- (void)mp_deleteItemsAtIndexPaths:(NSArray *)indexPaths; + +/** + * Reloads just the items at the specified index paths. + * + * @param indexPaths An array of `NSIndexPath` objects identifying the items you want to update. + */ +- (void)mp_reloadItemsAtIndexPaths:(NSArray *)indexPaths; + +/** + * Moves an item from one location to another in the collection view, taking into account ads + * inserted by the ad placer. + * + * @param indexPath The index path of the item you want to move. This parameter must not be + * `nil`. + * @param newIndexPath The index path of the item’s new location. This parameter must not be `nil`. + */ +- (void)mp_moveItemAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath; + +/** + * Inserts new sections at the specified indexes, and informs the attached ad placer of the + * insertions. + * + * @param sections An index set containing the indexes of the sections you want to insert. This + * parameter must not be `nil`. + */ +- (void)mp_insertSections:(NSIndexSet *)sections; + +/** + * Deletes the sections at the specified indexes, and informs the attached ad placer of the + * deletions. + * + * @param sections The indexes of the sections you want to delete. This parameter must not be `nil`. + */ +- (void)mp_deleteSections:(NSIndexSet *)sections; + +/** + * Reloads the data in the specified sections of the collection view, and informs the attached ad + * placer that sections may have changed. + * + * @param sections The indexes of the sections to reload. + */ +- (void)mp_reloadSections:(NSIndexSet *)sections; + +/** + * Moves a section from one location to another in the collection view, and informs the attached ad + * placer. + * + * @param section The index path of the section you want to move. This parameter must not be + * `nil`. + * @param newSection The index path of the section’s new location. This parameter must not be `nil`. + */ +- (void)mp_moveSection:(NSInteger)section toSection:(NSInteger)newSection; + +/** @name Methods Involving Index Paths */ + +/** + * Returns the visible cell object at the specified index path. + * + * @param indexPath The index path that specifies the section and item number of the cell. + * + * @return The cell object at the corresponding index path or `nil` if the cell is not visible or + * *indexPath* is out of range. + */ +- (UICollectionViewCell *)mp_cellForItemAtIndexPath:(NSIndexPath *)indexPath; + +/** + * Returns a reusable cell object located by its identifier. + * + * @param identifier The reuse identifier for the specified cell. This parameter must not be `nil`. + * @param indexPath The index path specifying the location of the cell. The data source receives + * this information when it is asked for the cell and should just pass it along. This method uses + * the index path to perform additional configuration based on the cell’s position in the collection + * view. + * + * @return A valid `UICollectionReusableView` object. + */ +- (id)mp_dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath*)indexPath; + +/** + * Deselects the item at the specified index. + * + * @param indexPath The index path of the item to select. Specifying `nil` results in no change to + * the current selection. + * @param animated Specify YES to animate the change in the selection or NO to make the change + * without animating it. + */ +- (void)mp_deselectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated; + +/** + * Returns the original index path for the given cell or `nil` if the cell is an ad cell. + * + * @param cell The cell object whose index path you want. + * + * @return The index path of the cell or `nil` if the specified cell contains an ad or is not in the + * collection view. + */ +- (NSIndexPath *)mp_indexPathForCell:(UICollectionViewCell *)cell; + +/** + * Returns the index path of the item at the specified point in the collection view. + * + * @param point A point in the collection view’s coordinate system. + * + * @return The index path of the item at the specified point or `nil` if either an ad or no item was + * found at the specified point. + */ +- (NSIndexPath *)mp_indexPathForItemAtPoint:(CGPoint)point; + +/** + * Returns the original index paths (as if no ads were inserted) for the selected items. + * + * @return An array of the original index paths for the selected items. + */ +- (NSArray *)mp_indexPathsForSelectedItems; + +/** + * Returns an array of original index paths each identifying a visible non-ad item in the collection + * view, calculated before any ads were inserted. + * + * @return An array of the original index paths representing visible non-ad items in the collection + * view. Returns `nil` if no items are visible. + */ +- (NSArray *)mp_indexPathsForVisibleItems; + +/** + * Returns the layout information for the item at the specified index path. + * + * @param indexPath The index path of the item. + * + * @return The layout attributes for the item or `nil` if no item exists at the specified path. + */ +- (UICollectionViewLayoutAttributes *)mp_layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath; + +/** + * Scrolls the collection view contents until the specified item is visible. + * + * @param indexPath The index path of the item to scroll into view. + * @param scrollPosition An option that specifies where the item should be positioned when scrolling + * finishes. + * @param animated Specify YES to animate the scrolling behavior or NO to adjust the scroll + * view’s visible content immediately. + */ +- (void)mp_scrollToItemAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UICollectionViewScrollPosition)scrollPosition animated:(BOOL)animated; + +/** + * Selects the item at the specified index path and optionally scrolls it into view. + * + * @param indexPath The index path of the item to select. Specifying `nil` for this parameter + * clears the current selection. + * @param animated Specify YES to animate the change in the selection or NO to make the change + * without animating it. + * @param scrollPosition An option that specifies where the item should be positioned when scrolling + * finishes. + */ +- (void)mp_selectItemAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UICollectionViewScrollPosition)scrollPosition; + +/** + * Returns an array of the non-ad cells that are visible in the collection view. + * + * @return An array of `UICollectionViewCell` objects, each representing a visible, non-ad cell in + * the receiving collection view. + */ +- (NSArray *)mp_visibleCells; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPConstants.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPConstants.h index d0d153b1e..dfa58cf05 100755 --- a/mediation/mediatedviews/MoPub/MoPubSDK/MPConstants.h +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPConstants.h @@ -2,7 +2,6 @@ // MPConstants.h // MoPub // -// Created by Nafis Jamal on 2/9/11. // Copyright 2011 MoPub, Inc. All rights reserved. // @@ -14,13 +13,13 @@ #define HOSTNAME_FOR_TESTING @"testing.ads.mopub.com" #define DEFAULT_PUB_ID @"agltb3B1Yi1pbmNyDAsSBFNpdGUYkaoMDA" #define MP_SERVER_VERSION @"8" -#define MP_SDK_VERSION @"1.17.0.0" +#define MP_SDK_VERSION @"3.0.0" // Sizing constants. -#define MOPUB_BANNER_SIZE CGSizeMake(320, 50) -#define MOPUB_MEDIUM_RECT_SIZE CGSizeMake(300, 250) -#define MOPUB_LEADERBOARD_SIZE CGSizeMake(728, 90) -#define MOPUB_WIDE_SKYSCRAPER_SIZE CGSizeMake(160, 600) +extern CGSize const MOPUB_BANNER_SIZE; +extern CGSize const MOPUB_MEDIUM_RECT_SIZE; +extern CGSize const MOPUB_LEADERBOARD_SIZE; +extern CGSize const MOPUB_WIDE_SKYSCRAPER_SIZE; // Miscellaneous constants. #define MINIMUM_REFRESH_INTERVAL 5.0 diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialAdController.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialAdController.h index 8271e0a45..aacebc369 100755 --- a/mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialAdController.h +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialAdController.h @@ -38,7 +38,7 @@ /** * The delegate (`MPInterstitialAdControllerDelegate`) of the interstitial ad object. */ -@property (nonatomic, assign) id delegate; +@property (nonatomic, weak) id delegate; /** @name Setting Request Parameters */ @@ -263,6 +263,17 @@ */ - (void)interstitialDidExpire:(MPInterstitialAdController *)interstitial; +/** + * Sent when the user taps the interstitial ad and the ad is about to perform its target action. + * + * This action may include displaying a modal or leaving your application. Certain ad networks + * may not expose a "tapped" callback so you should not rely on this callback to perform + * critical tasks. + * + * @param interstitial The interstitial ad object sending the message. + */ +- (void)interstitialDidReceiveTapEvent:(MPInterstitialAdController *)interstitial; + /* * DEPRECATED: This callback notifies you to dismiss the interstitial, and allows you to implement * any pre-dismissal behavior (e.g. unpausing a game). This method is being deprecated as it is no diff --git a/mediation/mediating/MoPub/MoPubSDK/MPInterstitialCustomEvent.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialCustomEvent.h old mode 100644 new mode 100755 similarity index 97% rename from mediation/mediating/MoPub/MoPubSDK/MPInterstitialCustomEvent.h rename to mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialCustomEvent.h index 44e52d39f..ad515f0aa --- a/mediation/mediating/MoPub/MoPubSDK/MPInterstitialCustomEvent.h +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialCustomEvent.h @@ -81,6 +81,6 @@ * */ -@property (nonatomic, assign) id delegate; +@property (nonatomic, weak) id delegate; @end diff --git a/mediation/mediating/MoPub/MoPubSDK/MPInterstitialCustomEventDelegate.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialCustomEventDelegate.h old mode 100644 new mode 100755 similarity index 100% rename from mediation/mediating/MoPub/MoPubSDK/MPInterstitialCustomEventDelegate.h rename to mediation/mediatedviews/MoPub/MoPubSDK/MPInterstitialCustomEventDelegate.h diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAd.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAd.h new file mode 100755 index 000000000..ed1586af6 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAd.h @@ -0,0 +1,167 @@ +// +// MPNativeAd.h +// Copyright (c) 2013 MoPub. All rights reserved. +// + +#import +#import + +@protocol MPNativeAdAdapter; +@class MPAdConfiguration; + +/** + * The `MPNativeAd` class is used to render and manage events for a native advertisement. The + * class provides methods for accessing native ad properties returned by the server, as well as + * convenience methods for URL navigation and metrics-gathering. + */ + +@interface MPNativeAd : NSObject + +/** @name Ad Resources */ + +/** + * A dictionary representing the native ad properties. + */ +@property (nonatomic, readonly) NSDictionary *properties; + +/** + * The default click-through URL for the ad. + * + * May be nil. + */ +@property (nonatomic, readonly) NSURL *defaultActionURL; + +/** + * Star rating for the ad. + * + * This is a float value between 0 and 5. + * + * May be nil. + */ +@property (nonatomic, readonly) NSNumber *starRating; + +- (instancetype)initWithAdAdapter:(id)adAdapter; + +/** @name Preparing Ad Content for Display */ + +/** + * Instructs the ad object to configure the provided view with ad content. + * + * The provided view should implement the `MPNativeAdRendering` protocol to correctly display the ad + * content. + * + * When this method is called, an impression will automatically be recorded at the appropriate time, + * so there is no need to additionally invoke -trackImpression. + * + * @param view A view that will contain the ad content. + * @see MPNativeAdRendering + */ +- (void)prepareForDisplayInView:(UIView *)view; + +/** @name Handling Ad Interactions */ + +/** + * Records an impression event. + * + * When -prepareForDisplayInView is called, -trackImpression will automatically be invoked at the + * appropriate time, so there is no need to additionally invoke -trackImpression. + */ +- (void)trackImpression; + +/** + * Records a click event. + * + * When -displaycontentForURL:rootViewController:completion: is called, a click event will + * automatically be recorded, so there is no need to additionally invoke -trackClick. + */ +- (void)trackClick; + +/** + * Opens a resource defined by the ad using an appropriate mechanism (typically, an in-application + * modal web browser or a modal App Store controller). + * + * @param controller The view controller that should be used to present the modal view controller. + * @param completionBlock The block to be executed when the action defined by the URL has been + * completed, returning control to your application. + * + * You should call this method when you detect that a user has tapped on the ad (i.e. via button, + * table view selection, or gesture recognizer). + * + * When this method is called, a click event will automatically be recorded, so there is no + * need to additionally invoke -trackClick. + */ +- (void)displayContentFromRootViewController:(UIViewController *)controller completion:(void (^)(BOOL success, NSError *error))completionBlock; + +/** + * Opens a URL using an appropriate mechanism (typically, an in-application modal web browser or a + * modal App Store controller). + * + * @param URL The URL to be opened. + * @param controller The view controller that should be used to present the modal view controller. + * @param completionBlock The block to be executed when the action defined by the URL has been + * completed, returning control to your application. + * + * You should call this method when you detect that a user has tapped on the ad (i.e. via button, + * table view selection, or gesture recognizer). + * + * When this method is called, a click event will automatically be recorded, so there is no + * need to additionally invoke -trackClick. + */ +- (void)displayContentForURL:(NSURL *)URL rootViewController:(UIViewController *)controller + completion:(void (^)(BOOL success, NSError *error))completionBlock; + +- (void)trackMetricForURL:(NSURL *)URL; + +/** @name Loading Specific Ad Resources into Views */ + +/** + * Asynchronously loads the ad object's icon image into the provided image view. + * + * @param imageView An image view. + */ +- (void)loadIconIntoImageView:(UIImageView *)imageView; + +/** + * Asynchronously loads the ad object's main image into the provided image view. + * + * @param imageView An image view. + */ +- (void)loadImageIntoImageView:(UIImageView *)imageView; + +/** + * Loads the ad object's title into the provided label. + * + * @param label A label. + */ +- (void)loadTitleIntoLabel:(UILabel *)label; + +/** + * Loads the ad object's main text into the provided label. + * + * @param label A label. + */ +- (void)loadTextIntoLabel:(UILabel *)label; + +/** + * Loads the ad object's call-to-action text into the provided label. + * + * @param label A label. + */ +- (void)loadCallToActionTextIntoLabel:(UILabel *)label; + +/** + * Loads the ad object's call-to-action text into the provided button. + * + * @param button A button. + */ +- (void)loadCallToActionTextIntoButton:(UIButton *)button; + +/** + * Asynchronously loads the image referenced by imageURL into the provided image view. + * + * @param imageURL A URL identifying an image resource. + * @param imageView An image view. + */ +- (void)loadImageForURL:(NSURL *)imageURL intoImageView:(UIImageView *)imageView; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdAdapter.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdAdapter.h new file mode 100755 index 000000000..be8c74468 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdAdapter.h @@ -0,0 +1,107 @@ +// +// MPNativeAdAdapter.h +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import + +/** + * The `MPNativeAdAdapter` protocol allows the MoPub SDK to interact with native ad objects obtained + * from third-party ad networks. An object that adopts this protocol acts as a wrapper for a native + * ad object, translating its proprietary interface into a common one that the MoPub SDK can + * understand. + * + * An object that adopts this protocol must implement the `properties` property to specify a + * dictionary of assets, such as title and text, that should be rendered as part of a native ad. + * When possible, you should place values in the returned dictionary such that they correspond to + * the pre-defined keys in the MPNativeAdConstants header file. + * + * An adopting object must additionally implement -displayContentForURL:rootViewController:completion: + * to supply the behavior that should occur when the user interacts with the ad. + * + * Optional methods of the protocol allow the adopting object to define when and how impressions + * and interactions should be tracked. + */ +@protocol MPNativeAdAdapter + +@required + +/** @name Ad Resources */ + +/** + * Provides a dictionary of all publicly accessible assets (such as title and text) for the + * native ad. + * + * When possible, you should place values in the returned dictionary such that they correspond to + * the pre-defined keys in the MPNativeAdConstants header file. + */ +@property (nonatomic, readonly) NSDictionary *properties; + +/** + * The default click-through URL for the ad. + * + * This may safely be set to nil if your network doesn't expose this value (for example, it may only + * provide a method to handle a click, lacking another for retrieving the URL itself). + */ +@property (nonatomic, readonly) NSURL *defaultActionURL; + +/** @name Handling Ad Interactions */ + +/** + * Tells the object to open the specified URL using an appropriate mechanism. + * + * @param URL The URL to be opened. + * @param controller The view controller that should be used to present the modal view controller. + * @param completionBlock The block to be executed when the action defined by the URL has been + * completed, returning control to the application. + * + * Your implementation of this method should either forward the request to the underlying + * third-party ad object (if it has built-in support for handling ad interactions), or open an + * in-application modal web browser or a modal App Store controller. + */ +- (void)displayContentForURL:(NSURL *)URL + rootViewController:(UIViewController *)controller + completion:(void (^)(BOOL success, NSError *error))completionBlock; + +@optional + +/** + * Tracks an impression for this ad. + * + * To avoid reporting discrepancies, you should only implement this method if the third-party ad + * network requires impressions to be reported manually. + */ +- (void)trackImpression; + +/** + * Tracks a click for this ad. + * + * To avoid reporting discrepancies, you should only implement this method if the third-party ad + * network requires clicks to be reported manually. + */ +- (void)trackClick; + +/** + * Specifies how long your ad must be on screen before an impression is tracked. + * + * When a view containing a native ad is rendered and presented, the MoPub SDK begins tracking the + * amount of time the view has been visible on-screen in order to automatically record impressions. + * This value represents the time required for an impression to be tracked. + * + * The default value is `kDefaultRequiredSecondsForImpression`. + */ +@property (nonatomic, readonly) NSTimeInterval requiredSecondsForImpression; + +/** @name Responding to an Ad Being Attached to a View */ + +/** + * This method will be called when your ad's content is about to be loaded into a view. + * + * @param view A view that will contain the ad content. + * + * You should implement this method if the underlying third-party ad object needs to be informed + * of this event. + */ +- (void)willAttachToView:(UIView *)view; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdConstants.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdConstants.h new file mode 100755 index 000000000..e93e635c0 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdConstants.h @@ -0,0 +1,21 @@ +// +// MPNativeAdConstants.h +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import + +extern const CGFloat kUniversalStarRatingScale; +extern const CGFloat kStarRatingMaxValue; +extern const CGFloat kStarRatingMinValue; +extern const NSTimeInterval kDefaultRequiredSecondsForImpression; + +/** @name MPNativeAd asset keys */ + +extern const NSString *kAdTitleKey; +extern const NSString *kAdTextKey; +extern const NSString *kAdIconImageKey; +extern const NSString *kAdMainImageKey; +extern const NSString *kAdCTATextKey; +extern const NSString *kAdStarRatingKey; diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdData.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdData.h new file mode 100755 index 000000000..c91790e20 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdData.h @@ -0,0 +1,18 @@ +// +// MPNativeAdData.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import + +@class MPNativeAd; + +@interface MPNativeAdData : NSObject + +@property (nonatomic, copy) NSString *adUnitID; +@property (nonatomic, strong) MPNativeAd *ad; +@property (nonatomic, assign) Class renderingClass; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdError.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdError.h new file mode 100755 index 000000000..d58d52c46 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdError.h @@ -0,0 +1,21 @@ +// +// MPNativeAdError.h +// Copyright (c) 2013 MoPub. All rights reserved. +// + +#import + +extern NSString *const MoPubNativeAdsSDKDomain; + +typedef enum MPNativeAdErrorCode { + MPNativeAdErrorUnknown = -1, + + MPNativeAdErrorHTTPError = -1000, + MPNativeAdErrorInvalidServerResponse = -1001, + MPNativeAdErrorNoInventory = -1002, + MPNativeAdErrorImageDownloadFailed = -1003, + + MPNativeAdErrorContentDisplayError = -1100, +} MPNativeAdErrorCode; + +extern NSString *const MPNativeAdErrorContentDisplayErrorReasonKey; diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRendering.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRendering.h new file mode 100755 index 000000000..bdda6f723 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRendering.h @@ -0,0 +1,54 @@ +// +// MPNativeAdRendering.h +// Copyright (c) 2013 MoPub. All rights reserved. +// + +#import + +#import "MPNativeAd.h" + +/** + * The MPNativeAdRendering protocol provides methods for displaying ad content in + * custom view classes. + */ + +@protocol MPNativeAdRendering + +/** + * Populates a view's relevant subviews with ad content. + * + * Your implementation of this method should call one or more of the methods listed below. + * + * @param adObject An object containing ad assets (text, images) which may be loaded + * into appropriate subviews (UILabel, UIImageView) via convenience methods. + * @see [MPNativeAd loadTextIntoLabel:] + * @see [MPNativeAd loadTitleIntoLabel:] + * @see [MPNativeAd loadIconIntoImageView:] + * @see [MPNativeAd loadImageIntoImageView:] + * @see [MPNativeAd loadCallToActionTextIntoLabel:] + * @see [MPNativeAd loadCallToActionTextIntoButton:] + * @see [MPNativeAd loadImageForURL:intoImageView:] + */ +- (void)layoutAdAssets:(MPNativeAd *)adObject; + +@optional + +/** + * Returns size of the rendering object given a maximum width. + * + * @param maximumWidth The maximum width intended for the size of the view. + * + * @return a CGSize that corresponds to the given maximumWidth. + */ ++ (CGSize)sizeWithMaximumWidth:(CGFloat)maximumWidth; + +/** + * Specifies a nib object containing a view that should be used to render ads. + * + * If you want to use a nib object to render ads, you must implement this method. + * + * @return an initialized UINib object. This is not allowed to be `nil`. + */ ++ (UINib *)nibForAd; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRequest.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRequest.h new file mode 100755 index 000000000..1f7e9ef47 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRequest.h @@ -0,0 +1,57 @@ +// +// MPNativeAdRequest.h +// Copyright (c) 2013 MoPub. All rights reserved. +// + +#import + +@class MPNativeAd; +@class MPNativeAdRequest; +@class MPNativeAdRequestTargeting; + +typedef void(^MPNativeAdRequestHandler)(MPNativeAdRequest *request, + MPNativeAd *response, + NSError *error); + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The `MPNativeAdRequest` class is used to manage individual requests to the MoPub ad server for + * native ads. + * + * @warning **Note:** This class is meant for one-off requests for which you intend to manually + * process the native ad response. If you are using `MPTableViewAdPlacer` or + * `MPCollectionViewAdPlacer` to display ads, there should be no need for you to use this class. + */ + +@interface MPNativeAdRequest : NSObject + +/** @name Targeting Information */ + +/** + * An object representing targeting parameters that can be passed to the MoPub ad server to + * serve more relevant advertising. + */ +@property (nonatomic, strong) MPNativeAdRequestTargeting *targeting; + +/** @name Initializing and Starting an Ad Request */ + +/** + * Initializes a request object. + * + * @param identifier The ad unit identifier for this request. An ad unit is a defined placement in + * your application set aside for advertising. Ad unit IDs are created on the MoPub website. + * + * @return An `MPNativeAdRequest` object. + */ ++ (MPNativeAdRequest *)requestWithAdUnitIdentifier:(NSString *)identifier; + +/** + * Executes a request to the MoPub ad server. + * + * @param handler A block to execute when the request finishes. The block includes as parameters the + * request itself and either a valid MPNativeAd or an NSError object indicating failure. + */ +- (void)startWithCompletionHandler:(MPNativeAdRequestHandler)handler; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRequestTargeting.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRequestTargeting.h new file mode 100755 index 000000000..5fb814a45 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdRequestTargeting.h @@ -0,0 +1,54 @@ +// +// MPNativeAdRequestTargeting.h +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import + +@class CLLocation; + +/** + * The `MPNativeAdRequestTargeting` class is used to attach targeting information to + * `MPNativeAdRequest` objects. + */ + +@interface MPNativeAdRequestTargeting : NSObject + +/** @name Creating a Targeting Object */ + +/** + * Creates and returns an empty MPNativeAdRequestTargeting object. + * + * @return A newly initialized MPNativeAdRequestTargeting object. + */ ++ (MPNativeAdRequestTargeting *)targeting; + +/** @name Targeting Parameters */ + +/** + * A string representing a set of keywords that should be passed to the MoPub ad server to receive + * more relevant advertising. + * + * Keywords are typically used to target ad campaigns at specific user segments. They should be + * formatted as comma-separated key-value pairs (e.g. "marital:single,age:24"). + * + * On the MoPub website, keyword targeting options can be found under the "Advanced Targeting" + * section when managing campaigns. + */ +@property (nonatomic, copy) NSString *keywords; + +/** + * A `CLLocation` object representing a user's location that should be passed to the MoPub ad server + * to receive more relevant advertising. + */ +@property (nonatomic, copy) CLLocation *location; + +/** + * A set of defined strings that correspond to assets for the intended native ad + * object. This set should contain only those assets that will be displayed in the ad. + * + * The MoPub ad server will attempt to only return the assets in desiredAssets. + */ +@property (nonatomic, strong) NSSet *desiredAssets; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdSource.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdSource.h new file mode 100755 index 000000000..0b963ff48 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdSource.h @@ -0,0 +1,22 @@ +// +// MPNativeAdSource.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import "MPNativeAdSourceDelegate.h" +@class MPNativeAdRequestTargeting; + +@interface MPNativeAdSource : NSObject + +@property (nonatomic, weak) id delegate; + ++ (instancetype)source; +- (void)loadAdsWithAdUnitIdentifier:(NSString *)identifier andTargeting:(MPNativeAdRequestTargeting *)targeting; +- (void)deleteCacheForAdUnitIdentifier:(NSString *)identifier; +- (id)dequeueAdForAdUnitIdentifier:(NSString *)identifier; + + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdSourceDelegate.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdSourceDelegate.h new file mode 100755 index 000000000..eac059934 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeAdSourceDelegate.h @@ -0,0 +1,16 @@ +// +// MPNativeAdSourceDelegate.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import + +@class MPNativeAdSource; + +@protocol MPNativeAdSourceDelegate + +- (void)adSourceDidFinishRequest:(MPNativeAdSource *)source; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeCustomEvent.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeCustomEvent.h new file mode 100755 index 000000000..d8b321151 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeCustomEvent.h @@ -0,0 +1,69 @@ +// +// MPNativeCustomEvent.h +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import "MPNativeCustomEventDelegate.h" + +/** + * The MoPub iOS SDK mediates third-party native ad networks using custom events. Custom events are + * responsible for instantiating and manipulating native ad objects in the third-party SDK and + * translating and communicating events from those objects back to the MoPub SDK by notifying a + * delegate. + * + * `MPNativeCustomEvent` is a base class for custom events that support native ads. By implementing + * subclasses of `MPNativeCustomEvent` you can enable the MoPub SDK to support a variety of + * third-party ad networks. + * + * Your implementation should create an `MPNativeAd` object using an appropriate `MPNativeAdAdapter` + * for your network. Your custom event should also call the appropriate + * `MPNativeCustomEventDelegate` methods. + * + * At runtime, the MoPub SDK will find and instantiate an `MPNativeCustomEvent` subclass as needed + * and invoke its `-requestAdWithCustomEventInfo:` method. + */ +@interface MPNativeCustomEvent : NSObject + +/** @name Requesting a Native Ad */ + +/** + * Called when the MoPub SDK requires a new native ad. + * + * When the MoPub SDK receives a response indicating it should load a custom event, it will send + * this message to your custom event class. Your implementation should load a native ad from a + * third-party ad network. + * + * @param info A dictionary containing additional custom data associated with a given custom event + * request. This data is configurable on the MoPub website, and may be used to pass dynamic + * information, such as publisher IDs. + */ +- (void)requestAdWithCustomEventInfo:(NSDictionary *)info; + +/** @name Caching Image Resources */ + +/** + * Downloads and pre-caches images. + * + * If your ad network does not provide built-in support for image caching, you may invoke this + * method in your custom event implementation to pre-cache image assets. If you do call this method, + * you should wait until the completion block is called before invoking the appropriate + * success or failure callbacks on the `MPNativeCustomEventDelegate`. + * + * @param imageURLs An array of `NSURL` objects representing image resource locations. + * @param completionBlock A block that will be called after all download operations are complete. + * If any image downloads do not complete successfully, the `errors` parameter will contain + * error information about the failures. + */ +- (void)precacheImagesWithURLs:(NSArray *)imageURLs completionBlock:(void (^)(NSArray *errors))completionBlock; + +/** @name Communicating with the MoPub SDK */ + +/** + * The `MPNativeCustomEventDelegate` to send messages to as events occur. + * + * The `delegate` object defines several methods that you should call in order to inform MoPub + * of the progress of your custom event. + */ +@property (nonatomic, weak) id delegate; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeCustomEventDelegate.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeCustomEventDelegate.h new file mode 100755 index 000000000..ff0b0f39a --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPNativeCustomEventDelegate.h @@ -0,0 +1,36 @@ +// +// MPNativeCustomEventDelegate.h +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import + +@class MPNativeAd; +@class MPNativeCustomEvent; + +/** + * Instances of your custom subclass of `MPNativeCustomEvent` will have an + * `MPNativeCustomEventDelegate` delegate object. You use this delegate to communicate progress + * (such as whether an ad has loaded successfully) back to the MoPub SDK. + */ +@protocol MPNativeCustomEventDelegate + +/** + * This method is called when the ad and all required ad assets are loaded. + * + * @param event You should pass `self` to allow the MoPub SDK to associate this event with the + * correct instance of your custom event. + * @param adObject An `MPNativeAd` object, representing the ad that was retrieved. + */ +- (void)nativeCustomEvent:(MPNativeCustomEvent *)event didLoadAd:(MPNativeAd *)adObject; + +/** + * This method is called when the ad or any required ad assets fail to load. + * + * @param event You should pass `self` to allow the MoPub SDK to associate this event with the + * correct instance of your custom event. + * @param error (*optional*) You may pass an error describing the failure. + */ +- (void)nativeCustomEvent:(MPNativeCustomEvent *)event didFailToLoadAdWithError:(NSError *)error; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPServerAdPositioning.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPServerAdPositioning.h new file mode 100755 index 000000000..35142c530 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPServerAdPositioning.h @@ -0,0 +1,12 @@ +// +// MPServerAdPositioning.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import "MPAdPositioning.h" + +@interface MPServerAdPositioning : MPAdPositioning + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPStreamAdPlacementData.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPStreamAdPlacementData.h new file mode 100755 index 000000000..35769b68e --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPStreamAdPlacementData.h @@ -0,0 +1,35 @@ +// +// MPStreamAdPlacementData.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import + +@class MPAdPositioning; +@class MPNativeAdData; + +@interface MPStreamAdPlacementData : NSObject + +- (instancetype)initWithPositioning:(MPAdPositioning *)positioning; +- (void)insertAdData:(MPNativeAdData *)data atIndexPath:(NSIndexPath *)adjustedIndexPath; +- (NSArray *)adjustedAdIndexPathsInAdjustedRange:(NSRange)range inSection:(NSInteger)section; +- (void)clearAdsInAdjustedRange:(NSRange)range inSection:(NSInteger)section; +- (NSIndexPath *)nextAdInsertionIndexPathForAdjustedIndexPath:(NSIndexPath *)adjustedIndexPath; +- (NSIndexPath *)previousAdInsertionIndexPathForAdjustedIndexPath:(NSIndexPath *)adjustedIndexPath; +- (BOOL)isAdAtAdjustedIndexPath:(NSIndexPath *)adjustedIndexPath; +- (NSArray *)adjustedIndexPathsWithAdsInSection:(NSUInteger)section; +- (MPNativeAdData *)adDataAtAdjustedIndexPath:(NSIndexPath *)adjustedIndexPath; +- (NSUInteger)adjustedNumberOfItems:(NSUInteger)numberOfItems inSection:(NSUInteger)section; +- (NSIndexPath *)adjustedIndexPathForOriginalIndexPath:(NSIndexPath *)indexPath; +- (NSIndexPath *)originalIndexPathForAdjustedIndexPath:(NSIndexPath *)indexPath; +- (void)insertSections:(NSIndexSet *)sections; +- (void)deleteSections:(NSIndexSet *)sections; +- (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection; +- (void)insertItemsAtIndexPaths:(NSArray *)originalIndexPaths; +- (void)deleteItemsAtIndexPaths:(NSArray *)originalIndexPaths; +- (void)moveItemAtIndexPath:(NSIndexPath *)originalIndexPath toIndexPath:(NSIndexPath *)newIndexPath; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPStreamAdPlacer.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPStreamAdPlacer.h new file mode 100755 index 000000000..bd1fd470f --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPStreamAdPlacer.h @@ -0,0 +1,265 @@ +// +// MPStreamAdPlacer.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import +#import "MPClientAdPositioning.h" + +@protocol MPStreamAdPlacerDelegate; +@protocol MPNativeAdRendering; +@class MPNativeAdRequestTargeting; + +/** + * The `MPStreamAdPlacer` class allows you to retrieve native ads from the MoPub ad server and + * place them into any custom UI component that represents a stream of content. It does not actually + * present or insert any ads on its own; you must provide a delegate conforming to the + * `MPStreamAdPlacerDelegate` protocol to handle ad insertions. + * + * @warning **Note:** If you are inserting ads into a `UITableView` or `UICollectionView`, you + * should first consider whether the `UITableViewAdPlacer` or `UICollectionViewAdPlacer` classes are + * sufficient for your use case before choosing to use this class. + * + * @discussion Your app's first responsibility when creating a stream ad placer is to communicate + * the state of your stream. Specifically, you must provide it with the count of the + * original content items in your stream using -setItemCount:forSection:, so that it can determine + * where and how many ads should appear. Additionally, you must also make sure to notify the ad + * placer of any insertions, deletions, or rearrangement of content items or sections. + * + * Use the -loadAdsForAdUnitID: method to tell the stream ad placer to begin retrieving ads. In + * order to optimize performance, this call may not immediately result in the ad placer asking its + * delegate to insert any ads. Instead, the ad placer decides whether to insert ads by determining + * what content items are currently visible. This means that your delegate may be intermittently + * informed about new insertions, and is meant to minimize situations in which ads are requested for + * positions in the stream that have a low likelihood of visibility. + * + * ### Responding to Insertions and Rendering Ads + * + * Your delegate should respond to insertion callbacks by updating your stream's data source so + * that it knows to render an ad (rather than an original content item) at the given index path. + * Note that the implementation may vary depending on the design of your data source. + * + * Use -renderAdAtIndexPath:inView: to populate a view with the contents of an ad. + */ + +@interface MPStreamAdPlacer : NSObject + +/** + * An array of `NSIndexPath` objects representing the positions of items that are currently visible + * on the screen. + * + * The stream ad placer uses the contents of this array to determine where ads should be inserted. + * It calculates an on-screen range and uses a small look-ahead to place ads where the user is + * likely to view them. + */ +@property (nonatomic, strong) NSArray *visibleIndexPaths; + +@property (nonatomic, weak) UIViewController *viewController; +@property (nonatomic, weak) id delegate; +@property (nonatomic, readonly, copy) MPAdPositioning *adPositioning; +@property (nonatomic, readonly, assign) Class defaultAdRenderingClass; + +/** + * Creates and returns a new ad placer that can display ads in a stream. + * + * @param controller The view controller which should be used to present modal content. + * @param positioning The positioning object that specifies where ads should be shown in the stream. + * @param defaultAdRenderingClass The class that will be used to render ads. This must be a subclass + * of `UIView` and also needs to implement the `MPNativeAdRendering` protocol. + */ ++ (instancetype)placerWithViewController:(UIViewController *)controller adPositioning:(MPAdPositioning *)positioning defaultAdRenderingClass:(Class)defaultAdRenderingClass; + +/** + * Lets the ad placer know of how many items are in a section. This allows the ad placer + * to place ads more effectively around its visible range. + * + * @param count How many items are in the section. + * @param section The section that the ad placer is recording the count for. + */ +- (void)setItemCount:(NSUInteger)count forSection:(NSInteger)section; + +/** + * Opens a resource defined by the ad at the index path using an appropriate mechanism (typically, + * an in-application modal web browser or a modal App Store controller). + * + * @param indexPath The index path of the ad we want to display content for. + */ +- (void)displayContentForAdAtAdjustedIndexPath:(NSIndexPath *)indexPath; + +/** + * Retrieves the reuse identifier for the type of rendering class. + * + * @param indexPath The index path of cell that you want the reuse identifier for. + * + * @return The reuse identifier for the rendering class for the cell at index path. + */ +- (NSString *)reuseIdentifierForRenderingClassAtIndexPath:(NSIndexPath *)indexPath; + +/** + * Uses the corresponding rendering class to render content in the view. + * + * @param indexPath The index path of the cell you want to render. + * @param view The view you want to render your contents into. + */ +- (void)renderAdAtIndexPath:(NSIndexPath *)indexPath inView:(UIView *)view; + +/** + * Get the size of the ad at the index path. + * + * @param indexPath Retrieve the size at indexPath. + * @param maxWidth The maximum acceptable width for the view. + * + * @return The size of the ad at indexPath. + */ +- (CGSize)sizeForAdAtIndexPath:(NSIndexPath *)indexPath withMaximumWidth:(CGFloat)maxWidth; + +/** + * Requests ads from the MoPub ad server using the specified ad unit ID. + * + * @param adUnitID A string representing a MoPub ad unit ID. + */ +- (void)loadAdsForAdUnitID:(NSString *)adUnitID; + +/** + * Requests ads from the MoPub ad server using the specified ad unit ID and targeting parameters. + * + * @param adUnitID A string representing a MoPub ad unit ID. + * @param targeting An object containing targeting information, such as geolocation data. + */ +- (void)loadAdsForAdUnitID:(NSString *)adUnitID targeting:(MPNativeAdRequestTargeting *)targeting; + +/** + * Returns whether an ad is ready to be displayed at the indexPath. + * + * @param indexPath The index path to examine for ad readiness. + */ +- (BOOL)isAdAtIndexPath:(NSIndexPath *)indexPath; + +/** + * Returns the number of items in the given section of the stream, including any ads that have been + * inserted. + * + * @param numberOfItems The number of content items. + * @param section The section the method will retrieve the adjusted number of items for. + */ +- (NSUInteger)adjustedNumberOfItems:(NSUInteger)numberOfItems inSection:(NSUInteger)section; + +/** + * Returns the index path representing the location of an item after accounting for ads that have + * been inserted into the stream. + * + * @param indexPath An index path object identifying the original location of a content item, before + * any ads have been inserted into the stream. + */ +- (NSIndexPath *)adjustedIndexPathForOriginalIndexPath:(NSIndexPath *)indexPath; + +/** + * Asks for the original position of a content item, given its position in the stream after ads + * have been inserted. + * + * If the specified index path does not identify a content item, but rather an ad, this method + * will return nil. + * + * @param indexPath An index path object identifying an item in the stream, after ads have been + * inserted. + */ +- (NSIndexPath *)originalIndexPathForAdjustedIndexPath:(NSIndexPath *)indexPath; + +/** + * Returns the index paths representing the locations of items after accounting for ads that have + * been inserted into the stream. + * + * @param indexPaths An array of index path objects each identifying the original location of a + * content item, before any ads have been inserted into the stream. + */ +- (NSArray *)adjustedIndexPathsForOriginalIndexPaths:(NSArray *)indexPaths; + +/** + * Retrieves the original positions of content items, given their positions in the stream after ads + * have been inserted. + * + * If a specified index path does not identify a content item, but rather an ad, it will not be + * included in the result. + * + * @param indexPaths An array of index path objects each identifying an item in the stream, after + * ads have been inserted. + */ +- (NSArray *)originalIndexPathsForAdjustedIndexPaths:(NSArray *)indexPaths; + +/** @name Notifying the Ad Placer of Content Updates */ + +/** + * Tells the ad placer that content items have been inserted at the specified index paths. + * + * This method allows the ad placer to adjust its ad positions correctly. + * + * @param originalIndexPaths An array of NSIndexPath objects that identify positions where content + * has been inserted. + */ +- (void)insertItemsAtIndexPaths:(NSArray *)originalIndexPaths; + +/** + * Tells the ad placer that content items have been deleted at the specified index paths. + * + * This method allows the ad placer to adjust its ad positions correctly, and remove from the + * stream if necessary + * + * @param originalIndexPaths An array of NSIndexPath objects that identify positions where content + * has been deleted. +*/ +- (void)deleteItemsAtIndexPaths:(NSArray *)originalIndexPaths; + +/** + * Tells the ad placer that a content item has moved from one index path to another. + * + * This method allows the ad placer to adjust its ad positions correctly. + * + * @param fromIndexPath The index path identifying the original location of the item. + * @param toIndexPath The destination index path for the item. + */ +- (void)moveItemAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath; + +/** + * Tells the ad placer that sections have been inserted at the specified indices. + * + * This method allows the ad placer to adjust its ad positions correctly. + * + * @param sections An NSIndexSet that identifies the positions where sections + * have been inserted. + */ +- (void)insertSections:(NSIndexSet *)sections; + +/** + * Tells the ad placer that sections have been deleted at the specified indices. + * + * This method allows the ad placer to adjust its ad positions correctly. + * + * @param sections An NSIndexSet that identifies the positions where sections + * have been deleted. + */ +- (void)deleteSections:(NSIndexSet *)sections; + +/** + * Tells the ad placer that a section has moved from one index to another. + * + * This method allows the ad placer to adjust its ad positions correctly. + * + * @param section The index identifying the original location of the section. + * @param newSection The destination index for the section. + */ +- (void)moveSection:(NSInteger)section toSection:(NSInteger)newSection; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +@protocol MPStreamAdPlacerDelegate + +@optional +- (void)adPlacer:(MPStreamAdPlacer *)adPlacer didLoadAdAtIndexPath:(NSIndexPath *)indexPath; +- (void)adPlacer:(MPStreamAdPlacer *)adPlacer didRemoveAdsAtIndexPaths:(NSArray *)indexPaths; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPTableViewAdManager.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPTableViewAdManager.h new file mode 100755 index 000000000..aad785abc --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPTableViewAdManager.h @@ -0,0 +1,48 @@ +// +// MPTableViewAdManager.h +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import + +@class MPNativeAd; + +/** + * The MPTableViewAdManager class provides convenient functionality for adding advertisements + * to a table view. Such advertisements are displayed in table view cells alongside your + * application's content, and can be styled to support your application's native look and feel. + * + * **Warning**: This class has been deprecated. Use the `MPTableViewAdPlacer` class instead to + * display ads within a table view. + */ + +@interface MPTableViewAdManager : NSObject + +/** @name Initializing an Ad Manager */ + +/** + * Instantiates a table view ad manager with the given table view. + * + * @param tableView A table view that will be used to display ads. + */ +- (id)initWithTableView:(UITableView *)tableView __attribute__((deprecated)); + +/** @name Obtaining Configured Ad Cells */ + +/** + * Returns a UITableViewCell instance displaying ad content for the provided ad object. + * + * Your table view's data source should use this method to obtain cells displaying ad content. + * This method automatically dequeues reusable cells from the table view corresponding to + * the provided _cellClass_. + * + * @return The configured cell instance. + * @param adObject An ad object whose resources should be used to populate the returned cell. + * @param cellClass A UITableViewCell subclass configured for displaying ads. The class + * should implement the MPNativeAdRendering protocol. + * @see MPNativeAdRendering + */ +- (UITableViewCell *)adCellForAd:(MPNativeAd *)adObject cellClass:(Class)cellClass __attribute__((deprecated)); + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MPTableViewAdPlacer.h b/mediation/mediatedviews/MoPub/MoPubSDK/MPTableViewAdPlacer.h new file mode 100755 index 000000000..747f8df06 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MPTableViewAdPlacer.h @@ -0,0 +1,365 @@ +// +// MPTableViewAdPlacer.h +// MoPub +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import +#import +#import "MPClientAdPositioning.h" +#import "MPServerAdPositioning.h" + +@class MPNativeAdRequestTargeting; + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The `MPTableViewAdPlacer` class allows you to request native ads from the MoPub ad server and + * place them into a `UITableView` object. + * + * When an instance of this class is initialized with a table view, it wraps the table view's + * data source and delegate in order to insert ads and adjust the positions of your regular + * content cells. + */ + +@interface MPTableViewAdPlacer : NSObject + +/** @name Initializing a Table View Ad Placer */ + +/** + * Creates and returns an ad placer that will insert ads into a table view. + * + * @param tableView The table view in which to insert ads. + * @param controller The view controller which should be used to present modal content. + * @param positioning The positioning object that specifies where ads should be shown in the stream. + * @param defaultAdRenderingClass The class that will be used to render ads. This class must + * implement the `MPNativeAdRendering` protocol and must be a subclass of `UITableViewCell`. + * + * @return An `MPTableViewAdPlacer` object. + */ ++ (instancetype)placerWithTableView:(UITableView *)tableView viewController:(UIViewController *)controller adPositioning:(MPAdPositioning *)positioning defaultAdRenderingClass:(Class)defaultAdRenderingClass; + +/** @name Requesting Ads */ + +/** + * Requests ads from the MoPub ad server using the specified ad unit ID. + * + * @param adUnitID A string representing a MoPub ad unit ID. + */ +- (void)loadAdsForAdUnitID:(NSString *)adUnitID; + +/** + * Requests ads from the MoPub ad server using the specified ad unit ID and targeting parameters. + * + * @param adUnitID A string representing a MoPub ad unit ID. + * @param targeting An object containing targeting information, such as geolocation data. + */ +- (void)loadAdsForAdUnitID:(NSString *)adUnitID targeting:(MPNativeAdRequestTargeting *)targeting; + +@end + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +/** + * The MoPub SDK adds interfaces to the `UITableView` class to help your application with + * responsibilities related to `MPTableViewAdPlacer`. These APIs include methods to help notify the + * ad placer of all modifications to the original table view, as well as to simplify your + * application code such that it does not need to perform index path manipulations to account for + * the presence of ads. + * + * Since the ad placer replaces the original data source and delegate objects of your table view, + * the SDK also provides new methods for you to set these properties such that the ad placer remains + * aware of the changes. + */ + +@interface UITableView (MPTableViewAdPlacer) + +- (void)mp_setAdPlacer:(MPTableViewAdPlacer *)placer; + +/** @name Obtaining the Table View Ad Placer */ + +/** + * Returns the ad placer currently being used for this table view. + * + * @return An ad placer object or `nil` if no ad placer is being used. + */ +- (MPTableViewAdPlacer *)mp_adPlacer; + +/** @name Setting and Getting the Delegate and Data Source */ + +/** + * Sets the table view's data source. + * + * If your application needs to change a table view's data source after it has instantiated an ad + * placer using that table view, use this method rather than -[UITableView setDataSource:]. + * + * @param dataSource The new table view data source. + */ +- (void)mp_setDataSource:(id)dataSource; + +/** + * Returns the original data source of the table view. + * + * When you instantiate an ad placer using a table view, the ad placer replaces the table view's + * original data source object. If your application needs to access the original data source, use + * this method instead of -[UITableView dataSource]. + * + * @return The original table view data source. + */ +- (id)mp_dataSource; + +/** + * Sets the table view's delegate. + * + * If your application needs to change a table view's delegate after it has instantiated an ad + * placer using that table view, use this method rather than -[UITableView setDelegate:]. + * + * @param delegate The new table view delegate. + */ +- (void)mp_setDelegate:(id)delegate; + +/** + * Returns the original delegate of the table view. + * + * When you instantiate an ad placer using a table view, the ad placer replaces the table view's + * original delegate object. If your application needs to access the original delegate, use this + * method instead of -[UITableView delegate]. + * + * @return The original table view delegate. + */ +- (id)mp_delegate; + +/** @name Notifying the Table View Ad Placer of Content Changes */ + +/** + * Begin a series of method calls that insert, delete, or select rows and sections of the table + * view. + */ +- (void)mp_beginUpdates; + +/** + * Conclude a series of method calls that insert, delete, select, or reload rows and sections of + * the table view. + */ +- (void)mp_endUpdates; + +/** + * Reloads the rows and sections of the table view. + */ +- (void)mp_reloadData; + +/** + * Inserts rows in the receiver at the locations identified by an array of index paths, and informs + * the attached ad placer of the insertions. + * + * @param indexPaths An array of `NSIndexPath` objects that represent rows to insert into the + * table. + * @param animation A constant that either specifies the kind of animation to perform when + * inserting the cells or requests no animation. + */ +- (void)mp_insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; + +/** + * Deletes rows in the receiver at the locations identified by an array of index paths, and informs + * the attached ad placer of the deletions. + * + * @param indexPaths An array of `NSIndexPath` objects identifying the rows to delete. + * @param animation A constant that either specifies the kind of animation to perform when + * deleting the cells or requests no animation. + */ +- (void)mp_deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; + +/** + * Reloads the specified rows using the given animation effect, and informs the attached ad placer + * that the row positions may have changed. + * + * @param indexPaths An array of `NSIndexPath` objects identifying the rows to reload. + * @param animation A constant that indicates how the reloading is to be animated. + */ +- (void)mp_reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation; + +/** + * Moves the row at a specified location to a destination location, taking into account ads + * inserted by the ad placer. + * + * @param indexPath An index path identifying the row to move. + * @param newIndexPath An index path identifying the row that is the destination of the row at + * *indexPath*. + */ +- (void)mp_moveRowAtIndexPath:(NSIndexPath *)indexPath toIndexPath:(NSIndexPath *)newIndexPath; + +/** + * Inserts one or more sections in the receiver, and informs the attached ad placer of the + * insertions. + * + * @param sections An index set that specifies the sections to insert in the receiving table view. + * If a section already exists at the specified index location, it is moved down one index + * location. + * @param animation A constant that indicates how the insertion is to be animated. + */ +- (void)mp_insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation; + +/** + * Deletes one or more sections in the receiver, and informs the attached ad placer of the + * deletions. + * + * @param sections An index set that specifies the sections to delete from the receiving table + * view. If a section exists after the specified index location, it is moved up one index location. + * @param animation A constant that either specifies the kind of animation to perform when deleting + * the section or requests no animation. + */ +- (void)mp_deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation; + +/** + * Reloads the specified sections, and informs the attached ad placer that sections may have + * changed. + * + * @param sections An index set identifying the sections to reload. + * @param animation A constant that indicates how the reloading is to be animated. + */ +- (void)mp_reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation; + +/** + * Moves a section to a new location in the table view, and informs the attached ad placer. + * + * @param section The index of the section to move. + * @param newSection The index in the table view that is the destination of the move for the + * section. The existing section at that location slides up or down to an adjoining index position + * to make room for it. + */ +- (void)mp_moveSection:(NSInteger)section toSection:(NSInteger)newSection; + +/** @name Methods Involving Index Paths */ + +/** + * Returns the table view cell at the specified index path. + * + * @param indexPath The index path locating the row in the table view. + * + * @return An object representing a cell of the table or `nil` if the cell is not visible or + * *indexPath* is out of range. + */ +- (UITableViewCell *)mp_cellForRowAtIndexPath:(NSIndexPath *)indexPath; + +/** + * Returns a reusable table-view cell object for the specified reuse identifier. + * + * @param identifier A string identifying the cell object to be reused. This parameter must not be + * `nil`. + * @param indexPath The index path specifying the location of the cell. The data source receives + * this information when asked for the cell and should just pass it along. + * + * @return A `UITableViewCell` object with the associated reuse identifier. + */ +- (id)mp_dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath; + +/** + * Deselects a given row identified by index path, with an option to animate the deselection. + * + * @param indexPath An index path identifying a row in the receiver. + * @param animated YES if you want to animate the deselection and NO if the change should be + * immediate. + */ +- (void)mp_deselectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated; + +/** + * Returns an index path representing the original row and section of a given table view cell, + * calculated before any ads were inserted. + * + * @param cell A cell object of the table view. + * + * @return An index path representing the row and section of the cell or `nil` if the index path + * is invalid or is a reference to a cell containing an ad. + */ +- (NSIndexPath *)mp_indexPathForCell:(UITableViewCell *)cell; + +/** + * Returns an index path representing the original row and section at the given point. + * + * @param point A point in the local coordinate system of the receiver (the table view's bounds). + * + * @return An index path representing the row and section associated with *point* or `nil` if the + * point is out of bounds of any row or is associated with a cell containing an ad. + */ +- (NSIndexPath *)mp_indexPathForRowAtPoint:(CGPoint)point; + +/** + * Returns the original index path for the selected row, as if no ads have been inserted. + * + * @return The original index path for the selected row. + */ +- (NSIndexPath *)mp_indexPathForSelectedRow; + +/** + * Returns an array of index paths each representing a non-ad row enclosed by a given rectangle, + * calculated before any ads were inserted. + * + * @param rect A rectangle defining an area of the table view in local coordinates. + * + * @return An array of `NSIndexPath` objects each representing a row and section index identifying + * a row within *rect*. Index paths representing ads are not returned. + */ +- (NSArray *)mp_indexPathsForRowsInRect:(CGRect)rect; + +/** + * Returns an array of the original index paths for the selected rows, as if no ads have been + * inserted. + * + * @return An array of the original index paths for the selected rows. + */ +- (NSArray *)mp_indexPathsForSelectedRows; + +/** + * Returns an array of index paths each identifying a visible non-ad row in the table view, + * calculated before any ads were inserted. + * + * @return An array of `NSIndexPath` objects each representing a visible non-ad row in the table + * view. Returns `nil` if no rows are visible. + */ +- (NSArray *)mp_indexPathsForVisibleRows; + +/** + * Returns the drawing area for a row identified by index path. + * + * @param indexPath An index path object that identifies a row of your original content. + * + * @return A rectangle defining the area in which the table view draws the row or `CGRectZero` if + * *indexPath* is invalid. + */ +- (CGRect)mp_rectForRowAtIndexPath:(NSIndexPath *)indexPath; + +/** + * Scrolls the table view so that the selected row nearest to a specified position in the table + * view is at that position. + * + * @param indexPath An index path that identifies a row in the table view by its row index and + * its section index. + * @param scrollPosition A constant that identifies a relative position in the receiving table view + * (top, middle, bottom) for row when scrolling concludes. + * @param animated YES if you want to animate the change in position, NO if it should be + * immediate. + */ +- (void)mp_scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated; + +/** + * Selects a row in the receiver identified by index path, optionally scrolling the row to a + * location in the receiver. + * + * @param indexPath An index path identifying a row in the receiver. + * @param animated YES if you want to animate the selection and any change in position, NO if + * the change should be immediate. + * @param scrollPosition A constant that identifies a relative position in the receiving table view + * (top, middle, bottom) for the row when scrolling concludes. + */ +- (void)mp_selectRowAtIndexPath:(NSIndexPath *)indexPath animated:(BOOL)animated scrollPosition:(UITableViewScrollPosition)scrollPosition; + +/** + * Returns an array of the non-ad cells that are visible in the table view. + * + * @return An array containing `UITableViewCell` objects, each representing a visible, non-ad cell + * in the receiving table view. + */ +- (NSArray *)mp_visibleCells; + +@end diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MRAID.bundle/mraid.js b/mediation/mediatedviews/MoPub/MoPubSDK/MRAID.bundle/mraid.js new file mode 100755 index 000000000..386e260e4 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MRAID.bundle/mraid.js @@ -0,0 +1,763 @@ +(function() { + var isIOS = (/iphone|ipad|ipod/i).test(window.navigator.userAgent.toLowerCase()); + if (isIOS) { + console = {}; + console.log = function(log) { + var iframe = document.createElement('iframe'); + iframe.setAttribute('src', 'ios-log: ' + log); + document.documentElement.appendChild(iframe); + iframe.parentNode.removeChild(iframe); + iframe = null; + }; + console.debug = console.info = console.warn = console.error = console.log; + } +}()); + +(function() { + // Establish the root mraidbridge object. + var mraidbridge = window.mraidbridge = {}; + + // native SDK is ready to process mraid commands. + var nativeSDKFiredReady = false; + + // Listeners for bridge events. + var listeners = {}; + + // Queue to track pending calls to the native SDK. + var nativeCallQueue = []; + + // Whether a native call is currently in progress. + var nativeCallInFlight = false; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + mraidbridge.fireReadyEvent = function() { + nativeSDKFiredReady = true; + mraidbridge.fireEvent('ready'); + }; + + mraidbridge.fireChangeEvent = function(properties) { + mraidbridge.fireEvent('change', properties); + }; + + mraidbridge.fireErrorEvent = function(message, action) { + mraidbridge.fireEvent('error', message, action); + }; + + mraidbridge.fireEvent = function(type) { + var ls = listeners[type]; + if (ls) { + var args = Array.prototype.slice.call(arguments); + args.shift(); + var l = ls.length; + for (var i = 0; i < l; i++) { + ls[i].apply(null, args); + } + } + }; + + mraidbridge.nativeCallComplete = function(command) { + if (nativeCallQueue.length === 0) { + nativeCallInFlight = false; + return; + } + + var nextCall = nativeCallQueue.pop(); + window.location = nextCall; + }; + + mraidbridge.executeNativeCall = function(command) { + if (!nativeSDKFiredReady) { + console.log('rejecting ' + command + ' because mraid is not ready'); + mraidbridge.fireErrorEvent('mraid is not ready', command); + return; + } + + var call = 'mraid://' + command; + + var key, value; + var isFirstArgument = true; + + for (var i = 1; i < arguments.length; i += 2) { + key = arguments[i]; + value = arguments[i + 1]; + + if (value === null) continue; + + if (isFirstArgument) { + call += '?'; + isFirstArgument = false; + } else { + call += '&'; + } + + call += encodeURIComponent(key) + '=' + encodeURIComponent(value); + } + + if (nativeCallInFlight) { + nativeCallQueue.push(call); + } else { + nativeCallInFlight = true; + window.location = call; + } + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + mraidbridge.addEventListener = function(event, listener) { + var eventListeners; + listeners[event] = listeners[event] || []; + eventListeners = listeners[event]; + + for (var l in eventListeners) { + // Listener already registered, so no need to add it. + if (listener === l) return; + } + + eventListeners.push(listener); + }; + + mraidbridge.removeEventListener = function(event, listener) { + if (listeners.hasOwnProperty(event)) { + var eventListeners = listeners[event]; + if (eventListeners) { + var idx = eventListeners.indexOf(listener); + if (idx !== -1) { + eventListeners.splice(idx, 1); + } + } + } + }; +}()); + +(function() { + var mraid = window.mraid = {}; + var bridge = window.mraidbridge; + + // Constants. //////////////////////////////////////////////////////////////////////////////////// + + var VERSION = mraid.VERSION = '1.0'; + + var STATES = mraid.STATES = { + LOADING: 'loading', // Initial state. + DEFAULT: 'default', + EXPANDED: 'expanded', + HIDDEN: 'hidden' + }; + + var EVENTS = mraid.EVENTS = { + ERROR: 'error', + INFO: 'info', + READY: 'ready', + STATECHANGE: 'stateChange', + VIEWABLECHANGE: 'viewableChange' + }; + + var PLACEMENT_TYPES = mraid.PLACEMENT_TYPES = { + UNKNOWN: 'unknown', + INLINE: 'inline', + INTERSTITIAL: 'interstitial' + }; + + // External MRAID state: may be directly or indirectly modified by the ad JS. //////////////////// + + // Properties which define the behavior of an expandable ad. + var expandProperties = { + width: -1, + height: -1, + useCustomClose: false, + isModal: true, + lockOrientation: false + }; + + var hasSetCustomSize = false; + + var hasSetCustomClose = false; + + var listeners = {}; + + // Internal MRAID state. Modified by the native SDK. ///////////////////////////////////////////// + + var state = STATES.LOADING; + + var isViewable = false; + + var screenSize = { width: -1, height: -1 }; + + var placementType = PLACEMENT_TYPES.UNKNOWN; + + var supports = { + sms: false, + tel: false, + calendar: false, + storePicture: false, + inlineVideo: false + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + var EventListeners = function(event) { + this.event = event; + this.count = 0; + var listeners = {}; + + this.add = function(func) { + var id = String(func); + if (!listeners[id]) { + listeners[id] = func; + this.count++; + } + }; + + this.remove = function(func) { + var id = String(func); + if (listeners[id]) { + listeners[id] = null; + delete listeners[id]; + this.count--; + return true; + } else { + return false; + } + }; + + this.removeAll = function() { + for (var id in listeners) { + if (listeners.hasOwnProperty(id)) this.remove(listeners[id]); + } + }; + + this.broadcast = function(args) { + for (var id in listeners) { + if (listeners.hasOwnProperty(id)) listeners[id].apply({}, args); + } + }; + + this.toString = function() { + var out = [event, ':']; + for (var id in listeners) { + if (listeners.hasOwnProperty(id)) out.push('|', id, '|'); + } + return out.join(''); + }; + }; + + var broadcastEvent = function() { + var args = new Array(arguments.length); + var l = arguments.length; + for (var i = 0; i < l; i++) args[i] = arguments[i]; + var event = args.shift(); + if (listeners[event]) listeners[event].broadcast(args); + }; + + var contains = function(value, array) { + for (var i in array) { + if (array[i] === value) return true; + } + return false; + }; + + var clone = function(obj) { + if (obj === null) return null; + var f = function() {}; + f.prototype = obj; + return new f(); + }; + + var stringify = function(obj) { + if (typeof obj === 'object') { + var out = []; + if (obj.push) { + // Array. + for (var p in obj) out.push(obj[p]); + return '[' + out.join(',') + ']'; + } else { + // Other object. + for (var p in obj) out.push("'" + p + "': " + obj[p]); + return '{' + out.join(',') + '}'; + } + } else return String(obj); + }; + + var trim = function(str) { + return str.replace(/^\s+|\s+$/g, ''); + }; + + // Functions that will be invoked by the native SDK whenever a "change" event occurs. + var changeHandlers = { + state: function(val) { + if (state === STATES.LOADING) { + broadcastEvent(EVENTS.INFO, 'Native SDK initialized.'); + } + state = val; + broadcastEvent(EVENTS.INFO, 'Set state to ' + stringify(val)); + broadcastEvent(EVENTS.STATECHANGE, state); + }, + + viewable: function(val) { + isViewable = val; + broadcastEvent(EVENTS.INFO, 'Set isViewable to ' + stringify(val)); + broadcastEvent(EVENTS.VIEWABLECHANGE, isViewable); + }, + + placementType: function(val) { + broadcastEvent(EVENTS.INFO, 'Set placementType to ' + stringify(val)); + placementType = val; + }, + + screenSize: function(val) { + broadcastEvent(EVENTS.INFO, 'Set screenSize to ' + stringify(val)); + for (var key in val) { + if (val.hasOwnProperty(key)) screenSize[key] = val[key]; + } + + if (!hasSetCustomSize) { + expandProperties['width'] = screenSize['width']; + expandProperties['height'] = screenSize['height']; + } + }, + + expandProperties: function(val) { + broadcastEvent(EVENTS.INFO, 'Merging expandProperties with ' + stringify(val)); + for (var key in val) { + if (val.hasOwnProperty(key)) expandProperties[key] = val[key]; + } + }, + + supports: function(val) { + broadcastEvent(EVENTS.INFO, 'Set supports to ' + stringify(val)); + supports = val; + }, + }; + + var validate = function(obj, validators, action, merge) { + if (!merge) { + // Check to see if any required properties are missing. + if (obj === null) { + broadcastEvent(EVENTS.ERROR, 'Required object not provided.', action); + return false; + } else { + for (var i in validators) { + if (validators.hasOwnProperty(i) && obj[i] === undefined) { + broadcastEvent(EVENTS.ERROR, 'Object is missing required property: ' + i + '.', action); + return false; + } + } + } + } + + for (var prop in obj) { + var validator = validators[prop]; + var value = obj[prop]; + if (validator && !validator(value)) { + // Failed validation. + broadcastEvent(EVENTS.ERROR, 'Value of property ' + prop + ' is invalid.', + action); + return false; + } + } + return true; + }; + + var expandPropertyValidators = { + width: function(v) { return !isNaN(v) && v >= 0; }, + height: function(v) { return !isNaN(v) && v >= 0; }, + useCustomClose: function(v) { return (typeof v === 'boolean'); }, + lockOrientation: function(v) { return (typeof v === 'boolean'); } + }; + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + bridge.addEventListener('change', function(properties) { + for (var p in properties) { + if (properties.hasOwnProperty(p)) { + var handler = changeHandlers[p]; + handler(properties[p]); + } + } + }); + + bridge.addEventListener('error', function(message, action) { + broadcastEvent(EVENTS.ERROR, message, action); + }); + + bridge.addEventListener('ready', function() { + broadcastEvent(EVENTS.READY); + }); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + + mraid.addEventListener = function(event, listener) { + if (!event || !listener) { + broadcastEvent(EVENTS.ERROR, 'Both event and listener are required.', 'addEventListener'); + } else if (!contains(event, EVENTS)) { + broadcastEvent(EVENTS.ERROR, 'Unknown MRAID event: ' + event, 'addEventListener'); + } else { + if (!listeners[event]) listeners[event] = new EventListeners(event); + listeners[event].add(listener); + } + }; + + mraid.close = function() { + if (state === STATES.HIDDEN) { + broadcastEvent(EVENTS.ERROR, 'Ad cannot be closed when it is already hidden.', + 'close'); + } else bridge.executeNativeCall('close'); + }; + + mraid.expand = function(URL) { + if (this.getState() !== STATES.DEFAULT) { + broadcastEvent(EVENTS.ERROR, 'Ad can only be expanded from the default state.', 'expand'); + } else { + var args = ['expand']; + + if (this.getHasSetCustomClose()) { + args = args.concat(['shouldUseCustomClose', expandProperties.useCustomClose ? 'true' : 'false']); + } + + if (this.getHasSetCustomSize()) { + if (expandProperties.width >= 0 && expandProperties.height >= 0) { + args = args.concat(['w', expandProperties.width, 'h', expandProperties.height]); + } + } + + if (typeof expandProperties.lockOrientation !== 'undefined') { + args = args.concat(['lockOrientation', expandProperties.lockOrientation]); + } + + if (URL) { + args = args.concat(['url', URL]); + } + + bridge.executeNativeCall.apply(this, args); + } + }; + + mraid.getHasSetCustomClose = function() { + return hasSetCustomClose; + }; + + mraid.getHasSetCustomSize = function() { + return hasSetCustomSize; + }; + + mraid.getExpandProperties = function() { + var properties = { + width: expandProperties.width, + height: expandProperties.height, + useCustomClose: expandProperties.useCustomClose, + isModal: expandProperties.isModal + }; + return properties; + }; + + mraid.getPlacementType = function() { + return placementType; + }; + + mraid.getState = function() { + return state; + }; + + mraid.getVersion = function() { + return mraid.VERSION; + }; + + mraid.isViewable = function() { + return isViewable; + }; + + mraid.open = function(URL) { + if (!URL) broadcastEvent(EVENTS.ERROR, 'URL is required.', 'open'); + else bridge.executeNativeCall('open', 'url', URL); + }; + + mraid.removeEventListener = function(event, listener) { + if (!event) { + broadcastEvent(EVENTS.ERROR, 'Event is required.', 'removeEventListener'); + return; + } + + if (listener) { + // If we have a valid event, we'll try to remove the listener from it. + var success = false; + if (listeners[event]) { + success = listeners[event].remove(listener); + } + + // If we didn't have a valid event or couldn't remove the listener from the event, broadcast an error and return early. + if (!success) { + broadcastEvent(EVENTS.ERROR, 'Listener not currently registered for event.', 'removeEventListener'); + return; + } + + } else if (!listener && listeners[event]) { + listeners[event].removeAll(); + } + + if (listeners[event] && listeners[event].count === 0) { + listeners[event] = null; + delete listeners[event]; + } + + }; + + mraid.setExpandProperties = function(properties) { + if (validate(properties, expandPropertyValidators, 'setExpandProperties', true)) { + if (properties.hasOwnProperty('width') || properties.hasOwnProperty('height')) { + hasSetCustomSize = true; + } + + if (properties.hasOwnProperty('useCustomClose')) hasSetCustomClose = true; + + var desiredProperties = ['width', 'height', 'useCustomClose', 'lockOrientation']; + var length = desiredProperties.length; + for (var i = 0; i < length; i++) { + var propname = desiredProperties[i]; + if (properties.hasOwnProperty(propname)) expandProperties[propname] = properties[propname]; + } + } + }; + + mraid.useCustomClose = function(shouldUseCustomClose) { + expandProperties.useCustomClose = shouldUseCustomClose; + hasSetCustomClose = true; + bridge.executeNativeCall('usecustomclose', 'shouldUseCustomClose', shouldUseCustomClose); + }; + + // MRAID 2.0 APIs //////////////////////////////////////////////////////////////////////////////// + + mraid.createCalendarEvent = function(parameters) { + CalendarEventParser.initialize(parameters); + if (CalendarEventParser.parse()) { + bridge.executeNativeCall.apply(this, CalendarEventParser.arguments); + } else { + broadcastEvent(EVENTS.ERROR, CalendarEventParser.errors[0], 'createCalendarEvent'); + } + }; + + mraid.supports = function(feature) { + return supports[feature]; + }; + + mraid.playVideo = function(uri) { + if (!mraid.isViewable()) { + broadcastEvent(EVENTS.ERROR, 'playVideo cannot be called until the ad is viewable', 'playVideo'); + return; + } + + if (!uri) { + broadcastEvent(EVENTS.ERROR, 'playVideo must be called with a valid URI', 'playVideo'); + } else { + bridge.executeNativeCall.apply(this, ['playVideo', 'uri', uri]); + } + }; + + mraid.storePicture = function(uri) { + if (!mraid.isViewable()) { + broadcastEvent(EVENTS.ERROR, 'storePicture cannot be called until the ad is viewable', 'storePicture'); + return; + } + + if (!uri) { + broadcastEvent(EVENTS.ERROR, 'storePicture must be called with a valid URI', 'storePicture'); + } else { + bridge.executeNativeCall.apply(this, ['storePicture', 'uri', uri]); + } + }; + + mraid.resize = function() { + bridge.executeNativeCall('resize'); + }; + + mraid.getResizeProperties = function() { + bridge.executeNativeCall('getResizeProperties'); + }; + + mraid.setResizeProperties = function(resizeProperties) { + bridge.executeNativeCall('setResizeProperties', 'resizeProperties', resizeProperties); + }; + + mraid.getCurrentPosition = function() { + bridge.executeNativeCall('getCurrentPosition'); + }; + + mraid.getDefaultPosition = function() { + bridge.executeNativeCall('getDefaultPosition'); + }; + + mraid.getMaxSize = function() { + bridge.executeNativeCall('getMaxSize'); + }; + + mraid.getScreenSize = function() { + bridge.executeNativeCall('getScreenSize'); + }; + + var CalendarEventParser = { + initialize: function(parameters) { + this.parameters = parameters; + this.errors = []; + this.arguments = ['createCalendarEvent']; + }, + + parse: function() { + if (!this.parameters) { + this.errors.push('The object passed to createCalendarEvent cannot be null.'); + } else { + this.parseDescription(); + this.parseLocation(); + this.parseSummary(); + this.parseStartAndEndDates(); + this.parseReminder(); + this.parseRecurrence(); + this.parseTransparency(); + } + + var errorCount = this.errors.length; + if (errorCount) { + this.arguments.length = 0; + } + + return (errorCount === 0); + }, + + parseDescription: function() { + this._processStringValue('description'); + }, + + parseLocation: function() { + this._processStringValue('location'); + }, + + parseSummary: function() { + this._processStringValue('summary'); + }, + + parseStartAndEndDates: function() { + this._processDateValue('start'); + this._processDateValue('end'); + }, + + parseReminder: function() { + var reminder = this._getParameter('reminder'); + if (!reminder) { + return; + } + + if (reminder < 0) { + this.arguments.push('relativeReminder'); + this.arguments.push(parseInt(reminder) / 1000); + } else { + this.arguments.push('absoluteReminder'); + this.arguments.push(reminder); + } + }, + + parseRecurrence: function() { + var recurrenceDict = this._getParameter('recurrence'); + if (!recurrenceDict) { + return; + } + + this.parseRecurrenceInterval(recurrenceDict); + this.parseRecurrenceFrequency(recurrenceDict); + this.parseRecurrenceEndDate(recurrenceDict); + this.parseRecurrenceArrayValue(recurrenceDict, 'daysInWeek'); + this.parseRecurrenceArrayValue(recurrenceDict, 'daysInMonth'); + this.parseRecurrenceArrayValue(recurrenceDict, 'daysInYear'); + this.parseRecurrenceArrayValue(recurrenceDict, 'monthsInYear'); + }, + + parseTransparency: function() { + var validValues = ['opaque', 'transparent']; + + if (this.parameters.hasOwnProperty('transparency')) { + var transparency = this.parameters['transparency']; + if (contains(transparency, validValues)) { + this.arguments.push('transparency'); + this.arguments.push(transparency); + } else { + this.errors.push('transparency must be opaque or transparent'); + } + } + }, + + parseRecurrenceArrayValue: function(recurrenceDict, kind) { + if (recurrenceDict.hasOwnProperty(kind)) { + var array = recurrenceDict[kind]; + if (!array || !(array instanceof Array)) { + this.errors.push(kind + ' must be an array.'); + } else { + var arrayStr = array.join(','); + this.arguments.push(kind); + this.arguments.push(arrayStr); + } + } + }, + + parseRecurrenceInterval: function(recurrenceDict) { + if (recurrenceDict.hasOwnProperty('interval')) { + var interval = recurrenceDict['interval']; + if (!interval) { + this.errors.push('Recurrence interval cannot be null.'); + } else { + this.arguments.push('interval'); + this.arguments.push(interval); + } + } else { + // If a recurrence rule was specified without an interval, use a default value of 1. + this.arguments.push('interval'); + this.arguments.push(1); + } + }, + + parseRecurrenceFrequency: function(recurrenceDict) { + if (recurrenceDict.hasOwnProperty('frequency')) { + var frequency = recurrenceDict['frequency']; + var validFrequencies = ['daily', 'weekly', 'monthly', 'yearly']; + if (contains(frequency, validFrequencies)) { + this.arguments.push('frequency'); + this.arguments.push(frequency); + } else { + this.errors.push('Recurrence frequency must be one of: "daily", "weekly", "monthly", "yearly".'); + } + } + }, + + parseRecurrenceEndDate: function(recurrenceDict) { + var expires = recurrenceDict['expires']; + + if (!expires) { + return; + } + + this.arguments.push('expires'); + this.arguments.push(expires); + }, + + _getParameter: function(key) { + if (this.parameters.hasOwnProperty(key)) { + return this.parameters[key]; + } + + return null; + }, + + _processStringValue: function(kind) { + if (this.parameters.hasOwnProperty(kind)) { + var value = this.parameters[kind]; + this.arguments.push(kind); + this.arguments.push(value); + } + }, + + _processDateValue: function(kind) { + if (this.parameters.hasOwnProperty(kind)) { + var dateString = this._getParameter(kind); + this.arguments.push(kind); + this.arguments.push(dateString); + } + }, + }; +}()); \ No newline at end of file diff --git a/mediation/mediatedviews/MoPub/MoPubSDK/MoPub-Bridging-Header.h b/mediation/mediatedviews/MoPub/MoPubSDK/MoPub-Bridging-Header.h new file mode 100755 index 000000000..7634a3390 --- /dev/null +++ b/mediation/mediatedviews/MoPub/MoPubSDK/MoPub-Bridging-Header.h @@ -0,0 +1,27 @@ +// +// MoPub-Bridging-Header.h +// MoPubSDK +// +// Copyright (c) 2014 MoPub. All rights reserved. +// + +#import "MPAdConversionTracker.h" +#import "MPAdView.h" +#import "MPBannerCustomEvent.h" +#import "MPBannerCustomEventDelegate.h" +#import "MPConstants.h" +#import "MPInterstitialAdController.h" +#import "MPInterstitialCustomEvent.h" +#import "MPInterstitialCustomEventDelegate.h" + +#import "MPNativeAd.h" +#import "MPNativeAdAdapter.h" +#import "MPNativeCustomEvent.h" +#import "MPNativeAdError.h" +#import "MPNativeAdRendering.h" +#import "MPNativeAdRequest.h" +#import "MPNativeAdRequestTargeting.h" +#import "MPTableViewAdManager.h" + +#import "MPCollectionViewAdPlacer.h" +#import "MPTableViewAdPlacer.h" diff --git a/mediation/mediatedviews/inMobi/Libs/libInMobi-4.4.0.a b/mediation/mediatedviews/MoPub/MoPubSDK/libMoPubSDK.a similarity index 60% rename from mediation/mediatedviews/inMobi/Libs/libInMobi-4.4.0.a rename to mediation/mediatedviews/MoPub/MoPubSDK/libMoPubSDK.a index 52371a8ee..52a63c5e4 100644 Binary files a/mediation/mediatedviews/inMobi/Libs/libInMobi-4.4.0.a and b/mediation/mediatedviews/MoPub/MoPubSDK/libMoPubSDK.a differ diff --git a/mediation/mediatedviews/README.txt b/mediation/mediatedviews/README.txt new file mode 100644 index 000000000..24b29f2d0 --- /dev/null +++ b/mediation/mediatedviews/README.txt @@ -0,0 +1,6 @@ +Update 10/01/14 +AdMob SDK Version 6.12.0 +Amazon SDK Version 2.1.2 +Facebook SDK Version 3.18.2 +Millennial Media SDK Version 5.4.1 +MoPub SDK Version 3.0.0 diff --git a/mediation/mediatedviews/iAd/ANAdAdapterBanneriAd.m b/mediation/mediatedviews/iAd/ANAdAdapterBanneriAd.m index e9549ffe8..8d090f9ca 100644 --- a/mediation/mediatedviews/iAd/ANAdAdapterBanneriAd.m +++ b/mediation/mediatedviews/iAd/ANAdAdapterBanneriAd.m @@ -15,7 +15,7 @@ #import "ANAdAdapterBanneriAd.h" -@interface ANAdAdapterBanneriAd () +@interface ANAdAdapterBanneriAd () @property (nonatomic, readwrite, strong) id bannerView; @end diff --git a/mediation/mediatedviews/iAd/ANAdAdapterInterstitialiAd.m b/mediation/mediatedviews/iAd/ANAdAdapterInterstitialiAd.m index 7aa0e36e5..9b3ddbf55 100644 --- a/mediation/mediatedviews/iAd/ANAdAdapterInterstitialiAd.m +++ b/mediation/mediatedviews/iAd/ANAdAdapterInterstitialiAd.m @@ -15,7 +15,7 @@ #import "ANAdAdapterInterstitialiAd.h" -@interface ANAdAdapterInterstitialiAd () +@interface ANAdAdapterInterstitialiAd () @property (nonatomic, readwrite, strong) id interstitialAd; @end diff --git a/mediation/mediatedviews/inMobi/Libs/IMBanner.h b/mediation/mediatedviews/inMobi/Libs/IMBanner.h deleted file mode 100644 index b81584e34..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMBanner.h +++ /dev/null @@ -1,160 +0,0 @@ -// -// IMBanner.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - -#import -#import -#import "InMobi.h" -#import "IMBannerDelegate.h" - -#define REFRESH_INTERVAL_OFF (-1) - -#pragma mark - Ad Sizes -/** - * The ad size equivalent to CGSizeMake(320, 48). - * @deprecated Will be removed in a future release. Use IM_UNIT_320x50 instead. - */ -#define IM_UNIT_320x48 9 -/** - * Medium Rectangle size for the iPad (especially in a UISplitView's left pane). - * The ad size equivalent to CGSizeMake(300, 250). - */ -#define IM_UNIT_300x250 10 -/** - * Leaderboard size for the iPad. - * The ad size equivalent to CGSizeMake(728,90). - */ -#define IM_UNIT_728x90 11 -/** - * Full Banner size for the iPad (especially in a UIPopoverController or in - * UIModalPresentationFormSheet). - * The ad size equivalent to CGSizeMake(468x60). - */ -#define IM_UNIT_468x60 12 -/** - * Skyscraper size, designed for iPad's screen size. - * The ad size equivalent to CGSizeMake(120x600). - */ -#define IM_UNIT_120x600 13 -/** - * Default ad size for iPhone and iPod Touch. - * The ad size equivalent to CGSizeMake(320, 48). - */ -#define IM_UNIT_320x50 15 - -/** - This is a UIView class that displays banner ads. A minimum implementation to - get an ad is: - - - Initialize an IMBanner instance either by providing appid and adsize or - by providing slot id. - - Load the Banner. - - Place the banner on the screen. - - Below is a sample example: - banner = [[IMBanner alloc] initWithFrame:CGRectMake(0,0,320,50) - appId:@"YOUR_APP_ID" - adSize:IM_UNIT_320x50]; - banner.delegate = self; - [banner loadBanner]; - - You may use InMobi class for additional targetting options. - */ -@interface IMBanner : UIView - -#pragma mark - Initialization -/** - * Initializes an IMBanner instance with the specified appId and adSize. - * @param frame CGRect for this view, typically according to the requested size. - * @param appId Application Id registered on the InMobi portal. - * @param adSize Ad size id to request the specific banner size. - * @note |appId| is required to be non empty, else the instance of IMBanner is - * not created and nil is returned instead. - */ -- (id)initWithFrame:(CGRect)frame appId:(NSString *)appId adSize:(int)adSize; -/** - * Initializes an IMBanner instance with the specified slot id. - * @param frame CGRect for this view, typically according to the requested size. - * @param slotId Slot id to uniquely identify a placement in your app. - */ -- (id)initWithFrame:(CGRect)frame slotId:(long long)slotId; - -#pragma mark - Initialization for IB Integration -/** - * Ad size id for the request. - * @note Check the ad size macros for the available values of ad-size. - */ -@property (nonatomic) int adSize; -/** - * Application Id for the request. - * @note Use the application id registered on the InMobi portal. - */ -@property (nonatomic, copy) NSString *appId; -/** - * Slot id is the specific placement id for the request. - * @note Use the slot id registered on the InMobi portal. - */ -@property (nonatomic) long long slotId; - -#pragma mark - Loading Banner -/** - * Loads the Banner. Additional targetting options may be provided using the - * InMobi class. - */ -- (void)loadBanner; -/** - * Stops the current loading of the Banner if in progress. - */ -- (void)stopLoading; - -#pragma mark - Optional properties -/** - * Delegate object that receives state change notifications from this view. - * Typically, this is a UIViewController instance. - * @note Whenever you're releasing the Banner, make sure you set its delegate - * to nil and remove it from its superview to prevent any chance of your - * application crashing. - */ -@property (nonatomic, unsafe_unretained) IBOutlet NSObject *delegate; -/** - * Starts or stops the auto refresh of ads. - * The refresh interval is measured between the completion(success or failure) - * of the previous ad request and start of the next ad request. By default, - * the refresh interval is set to 60 seconds. Setting a new valid refresh - * interval value will start the auto refresh of ads if not already started. - * Use REFRESH_INTERVAL_OFF as the parameter to switch off auto refresh. - * When auto refresh is turned off, use the loadBanner method to manually load - * new ads. The SDK will not refresh ads if the screen is in the background or - * if the phone is locked. - */ -@property (nonatomic) int refreshInterval; -/** - * The animation transition, when a banner ad is refresh. - * @note: Applicable for banner ads only. - */ -@property (nonatomic,assign) UIViewAnimationTransition refreshAnimation; - -/** - * A free form NSDictionary for any demographic information, - * not available via InMobi class. - */ -@property (nonatomic,strong) NSDictionary *additionaParameters; -/** - * A free form set of keywords, separated by ',' - * E.g: "sports,cars,bikes" - */ -@property (nonatomic,copy) NSString *keywords; - -/** - * Ref-tag key to be passed to an ad instance. - */ -@property (nonatomic,copy) NSString *refTagKey; -/** - * Ref-tag value to be passed to an ad instance. - */ -@property (nonatomic,copy) NSString *refTagValue; - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/IMBannerDelegate.h b/mediation/mediatedviews/inMobi/Libs/IMBannerDelegate.h deleted file mode 100644 index 01659e04f..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMBannerDelegate.h +++ /dev/null @@ -1,75 +0,0 @@ -// -// IMBannerDelegate.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - -#import -#import "IMError.h" - -@class IMBanner; - -/** - * This is the delegate for receiving state change messages from an IMBanner. - * Use this to receive callbacks for banner ad request succeeding, failing or - * for the events after the banner ad is clicked. - */ -@protocol IMBannerDelegate - -@optional - -#pragma mark Banner Request Notifications -/** - * Callback sent when an ad request loaded an ad. This is a good opportunity - * to add this view to the hierarchy if it has not yet been added. - * @param banner The IMBanner instance which finished loading the ad request. - */ -- (void)bannerDidReceiveAd:(IMBanner *)banner; -/** - * Callback sent when an ad request failed. Normally this is because no network - * connection was available or no ads were available (i.e. no fill). - * @param banner The IMBanner instance that failed to load the ad request. - * @param error The error that occurred during loading. - */ -- (void)banner:(IMBanner *)banner didFailToReceiveAdWithError:(IMError *)error; - -#pragma mark Banner Interaction Notifications -/** - * Called when the banner is tapped or interacted with by the user - * Optional data is available to publishers to act on when using - * monetization platform to render promotional ads. - * @param banner The IMBanner instance that presents the screen. - * @param dictionary The NSDictionary containing the parameters as passed by the creative - */ --(void)bannerDidInteract:(IMBanner *)banner withParams:(NSDictionary *)dictionary; -/** - * Callback sent just before when the banner is presenting a full screen view - * to the user. Use this opportunity to stop animations and save the state of - * your application in case the user leaves while the full screen view is on - * screen (e.g. to visit the App Store from a link on the full screen view). - * @param banner The IMBanner instance that presents the screen. - */ -- (void)bannerWillPresentScreen:(IMBanner *)banner; -/** - * Callback sent just before dismissing the full screen view. - * @param banner The IMBanner instance that dismisses the screen. - */ -- (void)bannerWillDismissScreen:(IMBanner *)banner; -/** - * Callback sent just after dismissing the full screen view. - * Use this opportunity to restart anything you may have stopped as part of - * bannerWillPresentScreen: callback. - * @param banner The IMBanner instance that dismissed the screen. - */ -- (void)bannerDidDismissScreen:(IMBanner *)banner; -/** - * Callback sent just before the application goes into the background because - * the user clicked on a link in the ad that will launch another application - * (such as the App Store). The normal UIApplicationDelegate methods like - * applicationDidEnterBackground: will immediately be called after this. - * @param banner The IMBanner instance that is launching another application. - */ -- (void)bannerWillLeaveApplication:(IMBanner *)banner; - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/IMConstants.h b/mediation/mediatedviews/inMobi/Libs/IMConstants.h deleted file mode 100644 index a9a25ef65..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMConstants.h +++ /dev/null @@ -1,162 +0,0 @@ -// -// IMConstants.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - - - -#import -#import - -/** - * Console log levels - */ -typedef enum { - // No logs. - IMLogLevelNone = 0, - - // Minimal set of logs for debugging. - IMLogLevelDebug = 1, - - // Log everything - // @note: Please turn off verbose mode before wide distribution like - // AppStore. Keeping the verbose mode turned on might impact performance. - IMLogLevelVerbose = 2, -} IMLogLevel; - -/** - * Device Id collection masks - */ -typedef enum { - // Use default ids for sdk device id collection. (default) - IMDeviceIdMaskIncludeDefaultIds = 0, - - // Exclude odin1 identifier from sdk device id collection. - IMDeviceIdMaskExcludeODIN1 = 1<<0, - - // Exclude advertiser identifier from sdk device id collection. (iOS 6+) - IMDeviceIdMaskExcludeAdvertisingId = 1<<1, - - // Exclude vendor identifier from sdk device id collection. (iOS 6+) - IMDeviceIdMaskExcludeVendorId = 1<<2, - - // @deprecated - // @note: This flag is deprecated as sdk does not collect UDID any more. - // Exclude udid identifier from sdk device id collection. - IMDeviceIdMaskExcludeUDID = 1<<3, - - // Exclude facebook's attribution id from sdk device id collection. - IMDeviceIdMaskExcludeFacebookAttributionId = 1<<4, -} IMDeviceIdMask; - -/** - * User ids to help deliver more relevant ads. - */ -typedef enum { - // User login id such as facebook, twitter, etc. - kIMUserIdLogin, - - // For maintaining different sessions within the same login id. - kIMUserIdSession, -} IMUserId; - -/** - * User Gender - */ -typedef enum { - kIMGenderMale = 1, - kIMGenderFemale, - kIMGenderUnknown, -} IMGender; - -/** - * User Ethnicity - */ -typedef enum { - kIMEthnicityHispanic = 1, - kIMEthnicityCaucasian, - kIMEthnicityAsian, - kIMEthnicityAfricanAmerican, - kIMEthnicityOther, - kIMEthnicityUnknown, -} IMEthnicity; - -/** - * User Education - */ -typedef enum { - kIMEducationHighSchoolOrLess = 1, - kIMEducationCollegeOrGraduate, - kIMEducationPostGraduateOrAbove, - kIMEducationUnknown, -} IMEducation; - -/** - * Different Interstitial states - */ -typedef enum { - // The state of interstitial cannot be determined. - kIMInterstitialStateUnknown = 0, - - // The default state of an interstitial. - // If an interstitial ad request fails, or if the user dismisses the - // interstitial, the state will be changed back to init. - kIMInterstitialStateInit, - - // Indicates that an interstitial ad request is in progress. - kIMInterstitialStateLoading, - - // Indicates that an interstitial ad is ready to be displayed. - // An interstitial ad can be displayed only if the state is ready. - // You can call presentFromRootViewController: to display this ad. - kIMInterstitialStateReady, - - // Indicates that an interstitial ad is displayed on the user's screen. - kIMInterstitialStateActive - -} IMInterstitialState; - -/** - * Interstitial ad mode - */ -typedef enum { - // Interstitial for AdNetwork. - IMAdModeNetwork, - - // Interstitial for App Gallery. - IMAdModeAppGallery -} IMAdMode; - -/** - * User HasChildren - */ -typedef enum { - kIMHasChildrenTrue = 1, - kIMHasChildrenFalse, - kIMHasChildrenUnknown, -} IMHasChildren; - -/** - * User Marital Status - */ -typedef enum { - kIMMaritalStatusSingle = 1, - kIMMaritalStatusDivorced, - kIMMaritalStatusEngaged, - kIMMaritalStatusRelationship, - kIMMaritalStatusUnknown, -} IMMaritalStatus; - -/** - * User Sexual Orientation - */ -typedef enum { - kIMSexualOrientationStraight = 1, - kIMSexualOrientationBisexual, - kIMSexualOrientationGay, - kIMSexualOrientationUnknown, -} IMSexualOrientation; - - diff --git a/mediation/mediatedviews/inMobi/Libs/IMError.h b/mediation/mediatedviews/inMobi/Libs/IMError.h deleted file mode 100644 index e0c75922c..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMError.h +++ /dev/null @@ -1,51 +0,0 @@ -// -// IMError.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - -#import - -/** - * Constant Error Domain for all the InMobi specific errors. - */ -extern NSString *const kInMobiErrorDomain; - -/** - * NSError codes for InMobi error domain - */ -typedef enum { - // The ad request is invalid, refer to localizedDescription for more info. - kIMErrorInvalidRequest = 0, - - // No ads were returned from the Ad Network - kIMErrorNoFill, - - // InMobi encountered an Internal error - kIMErrorInternal, - - // Ad Format Not Supported - kIMErrorAdFormatNotSupported, - - // Ad request/rendering timed out. - kIMErrorTimeout, - - // Ad request was cancelled. - kIMErrorRequestCancelled, - - // Do ad monetization. - kIMErrorDoMonetization, - - // Do nothing - kIMErrorDoNothing, - -} IMErrorCode; - -/** - * This class represents the error generated due to invalid request parameters - * or when the request fails to load. - */ -@interface IMError : NSError - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/IMIncentivisedDelegate.h b/mediation/mediatedviews/inMobi/Libs/IMIncentivisedDelegate.h deleted file mode 100644 index 26442b644..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMIncentivisedDelegate.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// IMIncentivisedDelegate.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - -#import -@class IMInterstitial; -@protocol IMIncentivisedDelegate - -#pragma mark Incentivised action complete notification - -/** - * Sent when an incentivised ad action is complete. - * @param ad The IMInterstitial instance which completed the incentivised action. - * @param params The params returned to the publisher. These are setup by the publisher to be received when an incent action completes. - */ -- (void)incentivisedAd:(IMInterstitial *)ad didCompleteWithParams:(NSDictionary*)params; - - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/IMInterstitial.h b/mediation/mediatedviews/inMobi/Libs/IMInterstitial.h deleted file mode 100644 index 38963004d..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMInterstitial.h +++ /dev/null @@ -1,117 +0,0 @@ -// -// IMInterstitial.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - -#import -#import -#import "InMobi.h" -#import "IMInterstitialDelegate.h" -#import "IMIncentivisedDelegate.h" -@protocol IMNetworkExtras; - -/** - * Class to display an Interstitial Ad. - * Interstitials are full screen advertisements that are shown at natural - * transition points in your application such as between game levels, when - * switching news stories, in general when transitioning from one view controller - * to another. It is best to request for an interstitial several seconds before - * when it is actually needed, so that it can preload its content and become - * ready to present, and when the time comes, it can be immediately presented to - * the user with a smooth experience. - */ -@interface IMInterstitial : NSObject - -#pragma mark - Initialization -/** - * Initializes an IMInterstitial instance with the specified appId. - * @param appId Application Id registered on the InMobi portal. - * @note |appId| is required to be non empty, else the instance of - * IMInterstitial is not created and nil is returned instead. - */ -- (id)initWithAppId:(NSString *)appId; -/** - * Initializes an IMInterstitial instance, and sets the specified slot id. - * @param slotId Slot id to uniquely identify a placement in your app. - */ -- (id)initWithSlotId:(long long)slotId; - -#pragma mark - Initialization for IB Integration -/** - * Application Id for the request. - * @note Use the application id registered on the InMobi portal. - */ -@property (nonatomic, copy) NSString *appId; -/** - * Slot id is the specific placement id for the request. - * @note Use the slot id registered on the InMobi portal. - */ -@property (nonatomic) long long slotId; - -#pragma mark - Loading Interstitial -/** - * Loads the Interstitial. Additional targetting options may be provided using - * the InMobi class. - * It is best to call this method several seconds before the interstitial is - * needed to preload its content. Once, it is fetched and is ready to display, - * you can present it using presentInterstitialAnimated: method. - */ -- (void)loadInterstitial; -/** - * Stops the current loading of the Interstitial if in progress. - */ -- (void)stopLoading; - -#pragma mark - Presenting Interstitial -/** - * This presents the interstitial ad that takes over the entire screen until - * the user dismisses it. This has no effect unless the interstitial state is - * kIMInterstitialStateReady and/or the delegate's interstitialDidReceiveAd: - * has been received. After the interstitial has been dismissed by the user, - * the delegate's interstitialDidDismissScreen: will be called. - * @param animated Display the interstitial by using an animation. This is - * similar to presenting a Modal-View-Controller like animation, from the bottom. - */ -- (void)presentInterstitialAnimated:(BOOL)animated; - -#pragma mark - Optional properties -/** - * Delegate object that receives state change notifications from this - * interstitial object. Typically, this is a UIViewController instance. - * @warning Whenever you release the Interstitial object, make sure to set its - * delegate to nil to prevent any chance of your application crashing. - */ -@property (nonatomic, unsafe_unretained) NSObject *delegate; - -/** - * Delegate object that receives the params when an incentivised action is complete. - * @warning Whenever you release the Interstitial object, make sure to set its - * incentivisedDelegate to nil to prevent any chance of your application crashing. - */ -@property (nonatomic, unsafe_unretained) NSObject *incentivisedDelegate; -/** - * Returns the state of the interstitial ad. The delegate's - * interstitialDidFinishRequest: will be called when this switches from the - * kIMInterstitialStateInit state to the kIMInterstitialStateReady state. - */ -@property (readonly) IMInterstitialState state; -/** - * Set the adMode property to switch to app gallery mode. - * The default value is network. - */ -@property (nonatomic) IMAdMode adMode; - -/** - * A free form NSDictionary for any demographic information, - * not available via InMobi class. - */ -@property (nonatomic,strong) NSDictionary *additionaParameters; -/** - * A free form set of keywords, separated by ',' - * E.g: "sports,cars,bikes" - */ -@property (nonatomic,copy) NSString *keywords; - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/IMInterstitialDelegate.h b/mediation/mediatedviews/inMobi/Libs/IMInterstitialDelegate.h deleted file mode 100644 index 57595792c..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMInterstitialDelegate.h +++ /dev/null @@ -1,83 +0,0 @@ -// -// IMInterstitialDelegate.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - -#import -#import "IMError.h" - -@class IMInterstitial; - -/** - * Delegate to receive state change message from IMInterstitial. - */ -@protocol IMInterstitialDelegate - -@optional - -#pragma mark Interstitial Request Notifications - -/** - * Sent when an interstitial ad request succeeded. - * @param ad The IMInterstitial instance which finished loading. - */ -- (void)interstitialDidReceiveAd:(IMInterstitial *)ad; - -/** - * Sent when an interstitial ad request failed - * @param ad The IMInterstitial instance which failed to load. - * @param error The IMError associated with the failure. - */ -- (void)interstitial:(IMInterstitial *)ad - didFailToReceiveAdWithError:(IMError *)error; - -#pragma mark Interstitial Interaction Notifications - -/** - * Sent just before presenting an interstitial. After this method finishes the - * interstitial will animate onto the screen. Use this opportunity to stop - * animations and save the state of your application in case the user leaves - * while the interstitial is on screen (e.g. to visit the App Store from a link - * on the interstitial). - * @param ad The IMInterstitial instance which will present the screen. - */ -- (void)interstitialWillPresentScreen:(IMInterstitial *)ad; - -/** - * Sent before the interstitial is to be animated off the screen. - * @param ad The IMInterstitial instance which will dismiss the screen. - */ -- (void)interstitialWillDismissScreen:(IMInterstitial *)ad; - -/** - * Sent just after dismissing an interstitial and it has animated off the screen. - * @param ad The IMInterstitial instance which was responsible for dismissing the screen. - */ -- (void)interstitialDidDismissScreen:(IMInterstitial *)ad; -/** - * Callback sent just before the application goes into the background because - * the user clicked on a link in the ad that will launch another application - * (such as the App Store). The normal UIApplicationDelegate methods like - * applicationDidEnterBackground: will immediately be called after this. - * @param ad The IMInterstitial instance that is launching another application. - */ -- (void)interstitialWillLeaveApplication:(IMInterstitial *)ad; -/** - * Called when the interstitial is tapped or interacted with by the user - * Optional data is available to publishers to act on when using - * monetization platform to render promotional ads. - * @param ad The IMInterstitial instance which was responsible for this action. - * @param dictionary The NSDictionary object which was passed from the ad. - */ --(void)interstitialDidInteract:(IMInterstitial *)ad withParams:(NSDictionary *)dictionary; -/** - * Called when the interstitial failed to display. - * This should normally occur if the state != kIMInterstitialStateReady. - * @param ad The IMInterstitial instance responsible for this error. - * @param error The IMError associated with this failure. - */ -- (void)interstitial:(IMInterstitial *)ad didFailToPresentScreenWithError:(IMError *)error; -@end - diff --git a/mediation/mediatedviews/inMobi/Libs/IMNative.h b/mediation/mediatedviews/inMobi/Libs/IMNative.h deleted file mode 100644 index d4a6e5519..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMNative.h +++ /dev/null @@ -1,90 +0,0 @@ -// -// IMNative.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// -// -/** - This class represents a Native ad. A minimum implementation to - get an ad is: - - - Initialize an IMNative instance by providing appid - - Load the Native ad. - - Implement the IMNativeDelegate methods to know when to get the ad content. - - Below is a sample example: - - IMNative* nativeAd = [[IMNative alloc] initWithAppId:@"YOUR_APP_ID"]; - nativeAd.delegate = self; - [nativeAd loadAd]; - - * You may use InMobi class for additional targetting options. - */ - -#import -#import -#import "IMNativeDelegate.h" -@interface IMNative : NSObject -/** - * Publisher specific ad content in the format specified by the publisher. - * Use this content to render the ad. - */ -@property (atomic, strong) NSString* content; -/** - * Native delegate to get success/failure response for the native ad. - */ -@property (nonatomic, unsafe_unretained) id delegate; - -/** - * Initializes the native ad instance with the appId provided - * @param appId Application Id registered on the InMobi portal. - */ --(id)initWithAppId:(NSString*)appId; -/** - * This method loads a native ad. This will automatically detach any previously attached view and invalidate the native instance. - * Until the load is complete, no operations can be performed on this instance. - */ --(void)loadAd; -/** - * Once the rendering is done, this method attaches the native ad to the provided view. - * The view passed to this method is the view that renders the ad from the native ad instance's content. - * It is necessary to attach a view before any clicks can be reported to the native ad instance. - * @param view The view rendered from content of the native ad. - */ --(void)attachToView:(UIView*)view; -/** - * This method detaches the native ad instance from the view it was attached to. - * Once detached, The native instance gets invalidated until it is loaded again. - * Only detach the view when you are completely done with it, like moving to a different page, not showing the ad anymore or - * releasing the view that rendered the ad etc. - */ --(void)detachFromView; -/** - * This method reports a click to the native ad. - * When the publisher considers an action on the view as a click, - * call this method to report the click to InMobi. - * @param params Any additional params to be passed for better reporting. - */ --(void)handleClick:(NSDictionary*)params; - -/** - * A free form NSDictionary for any demographic information, - * not available via InMobi class. - */ -@property (nonatomic,strong) NSDictionary *additionaParameters; -/** - * A free form set of keywords, separated by ',' - * E.g: "sports,cars,bikes" - */ -@property (nonatomic,copy) NSString *keywords; -/** - * Ref-tag key to be passed to an ad instance. - */ -@property (nonatomic,copy) NSString *refTagKey; -/** - * Ref-tag value to be passed to an ad instance. - */ -@property (nonatomic,copy) NSString *refTagValue; - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/IMNativeDelegate.h b/mediation/mediatedviews/inMobi/Libs/IMNativeDelegate.h deleted file mode 100644 index 27a12ef89..000000000 --- a/mediation/mediatedviews/inMobi/Libs/IMNativeDelegate.h +++ /dev/null @@ -1,26 +0,0 @@ -// -// IMNativeDelegate.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// -/** - * Implement these methods to get notified about the status of a native ad. These will be reported on the main thread. - */ -#import -#import "IMError.h" -@class IMNative; -@protocol IMNativeDelegate - -@required -/** - * Once a native ad successfully finishes loading, the delegate will be notified with this method. - * At this point, the content of the native ad is filled and is usable by the publisher. - */ --(void)nativeAdDidFinishLoading:(IMNative*)native; -/** - * Upon error, the native ad delegate will be notified by this method. - */ --(void)nativeAd:(IMNative*)native didFailWithError:(IMError*)error; - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/InMobi.h b/mediation/mediatedviews/inMobi/Libs/InMobi.h deleted file mode 100644 index cf0bb1e5a..000000000 --- a/mediation/mediatedviews/inMobi/Libs/InMobi.h +++ /dev/null @@ -1,179 +0,0 @@ -// -// InMobi.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - - -#import "IMConstants.h" - - -/** - * General functions common to all InMobi SDKs - */ -@interface InMobi : NSObject - -/** - * Initialize InMobi SDKs with the Publisher App Id obtained from InMobi portal. - * @param publisherAppId publisher's app id - */ -+ (void)initialize:(NSString *)publisherAppId; - -#pragma mark Console Log Levels - -/** - * Set the console logging level. - * @param logLevel Log level to be set. - */ -+ (void)setLogLevel:(IMLogLevel)logLevel; - -#pragma mark Device ID Mask - -/** - * This sets the Device Id Mask to restrict the Device Tracking not to be - * based on certain Device Ids. - * @param deviceIdMask Device id mask to be set. - */ -+ (void)setDeviceIdMask:(IMDeviceIdMask)deviceIdMask; - -#pragma mark SDK Information - -/** - * Returns the sdk version. - * @return the sdk version - */ -+ (NSString *)getVersion; - -#pragma mark User Information - -/** - * Set user's gender. - * @param gender Gender of the user - */ -+ (void)setGender:(IMGender)gender; - -/** - * Set user's educational qualification. - * @param education Educational qualification of the user - */ -+ (void)setEducation:(IMEducation)education; - -/** - * Set user's ethnicity. - * @param ethnicity Ethnicity of the user - */ -+ (void)setEthnicity:(IMEthnicity)ethnicity; - -/** - * Set user's date of birth. - * @param dateOfBirth Date of Birth of the user as NSDate object - */ -+ (void)setDateOfBirth:(NSDate *)dateOfBirth; - -/** - * Set user's date of birth - * @param month Birth month of the user - * @param day Birth day of the user - * @param year Birth year of the user - */ -+ (void)setDateOfBirthWithMonth:(NSUInteger)month - day:(NSUInteger)day - year:(NSUInteger)year; - -/** - * Set user's annual income. - * @param income Annual income of the user in USD - */ -+ (void)setIncome:(NSInteger)income; - -/** - * Set user's age. - * @param age Age of the user - */ -+ (void)setAge:(NSInteger)age; - -/** - * Set user's marital status. - * @param status Marital status of the user - */ -+ (void)setMaritalStatus:(IMMaritalStatus)status; - -/** - * Set whether the user has any children. - * @param children Boolean for whether the user has any children - */ -+ (void)setHasChildren:(IMHasChildren)children; - -/** - * Set user's sexual orientation. - * @param sexualOrientation Sexual orientation of the user - */ -+ (void)setSexualOrientation:(IMSexualOrientation)sexualOrientation; - -/** - * Set user's language preference. - * @param langugage Preferred language of the user - */ -+ (void)setLanguage:(NSString *)langugage; - -/** - * Set user's postal code. - * @param postalCode Postal code of the user - */ -+ (void)setPostalCode:(NSString *)postalCode; - -/** - * Set user's area code. - * @param areaCode Area code of the user - */ -+ (void)setAreaCode:(NSString *)areaCode; - -/** - * Set user's interests (contextually relevant strings comma separated). - * @param interests Interests of the user. E.g: @"cars,bikes,racing" - */ -+ (void)setInterests:(NSString *)interests; - -#pragma mark User Location - -/** - * Use this to set the user's current location to deliver more relevant ads. - * However do not use Core Location just for advertising, make sure it is used - * for more beneficial reasons as well. It is both a good idea and part of - * Apple's guidelines. - * @param latitude Location latitude - * @param longitude Location longitude - * @param accuracyInMeters Location accuracy in meters - */ -+ (void)setLocationWithLatitude:(CGFloat)latitude - longitude:(CGFloat)longitude - accuracy:(CGFloat)accuracyInMeters; - -/** - * Provide user location for city level targeting. - * @param city User's city - * @param state User's state - * @param country User's country - */ -+ (void)setLocationWithCity:(NSString *)city - state:(NSString *)state - country:(NSString *)country; - -#pragma mark User IDs - -/** - * Set user ids such as facebook, twitter etc to deliver more relevant ads. - * @param userId User id type - * @param idValue User id value - */ -+ (void)addUserID:(IMUserId)userId withValue:(NSString *)idValue; - -/** - * Remove the user ids which was set before. This fails silently if the id type - * was not set before. - * @param userId User id type to remove - */ -+ (void)removeUserID:(IMUserId)userId; - -@end diff --git a/mediation/mediatedviews/inMobi/Libs/InMobiAnalytics.h b/mediation/mediatedviews/inMobi/Libs/InMobiAnalytics.h deleted file mode 100644 index a9a76ce1a..000000000 --- a/mediation/mediatedviews/inMobi/Libs/InMobiAnalytics.h +++ /dev/null @@ -1,91 +0,0 @@ -// -// InMobiAnalytics.h -// InMobi Monetization SDK -// -// Copyright (c) 2013 InMobi. All rights reserved. -// - -#import - -/** - * This class collects analytics for a publisher's application. - */ -@interface InMobiAnalytics : NSObject - -/** - * Use this method if and only if you want to manually track sessions - * This method is idempotent, meaning, if automatic track sessions is enabled - * or startSession was called before, this method does nothing. - */ -+ (void)startSessionManually; - -/** - * Use this method if and only if you want to manually end sessions - * This method will also terminate automatically tracked sessions if enabled - */ -+ (void)endSessionManually; - -/** - * Call this method when the user has started or re-started a section. - * @param sectionName A name string for the beginning section. - * @param additionalParams Optional NSDictionary object. This dictionary can - * have value type as (NSNumber,NSString) only. - */ -+ (void)beginSection:(NSString *)sectionName withParams:(NSDictionary *)additionalParams; - -/** - * Call this method when the user has started or re-started a section. - * @param sectionName A name string for the beginning section. - */ -+ (void)beginSection:(NSString *)sectionName; - -/** - * Call this method when the user has completed,failed or finished a section. - * @param sectionName A name string for the ending session. - * @param additionalParams Optional NSDictionary object. This dictionary can - * have value type as (NSNumber,NSString) only. - */ -+ (void)endSection:(NSString *)sectionName withParams:(NSDictionary *)additionalParams; - -/** - * Call this method when the user has completed,failed or finished a section. - * @param sectionName A name string for the ending session. - */ -+ (void)endSection:(NSString *)sectionName; - -/** - * Call this method if you want to track custom events as happening during a - * section. - * @param eventName The custom event name. - * @param additionalParams Optional NSDictionary to be provided by you. - */ -+ (void)tagEvent:(NSString *)eventName withParams:(NSDictionary *)additionalParams; - -/** - * Call this method if you want to track custom events as happening during a - * section. - * @param eventName The custom event name. - */ -+ (void)tagEvent:(NSString *)eventName; - -/** - * Call this method with the SKPaymentTransaction object, for manually tagging - * the transaction. - * @param skTransaction The SKPaymentTransaction object. - */ -+ (void)tagTransactionManually:(id)skTransaction; - -/** - * Reports the Application Custom Goals to InMobi Ad Tracker. - * This is a non blocking API (returns immediately), and performs the - * reporting job in the background. - * When a goal is reported, it is made sure that it reaches InMobi Ad Tracker - * server whenever the device is connected to internet. Different goals can be - * reported without worrying about the internet connection. - * - * @deprecated Please start using tagEvent to manage goals - * @param goalName Your custom goal name. - */ -+ (void)reportCustomGoal:(NSString *)goalName; - -@end diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADAdSize.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADAdSize.h deleted file mode 100644 index b1328b6fd..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADAdSize.h +++ /dev/null @@ -1,95 +0,0 @@ -// -// GADAdSize.h -// Google Mobile Ads SDK -// -// Copyright 2012 Google Inc. All rights reserved. -// -// A valid GADAdSize is considered to be one of the predefined GADAdSize -// constants or a GADAdSize constructed by GADAdSizeFromCGSize, -// GADAdSizeFullWidthPortraitWithHeight, GADAdSizeFullWidthLandscapeWithHeight. -// - -#import -#import - -#import "GADModules.h" - -/// Do not create a GADAdSize manually. Use one of the kGADAdSize constants. -/// Treat GADAdSize as an opaque type. Do not access any fields directly. To -/// obtain a concrete CGSize, use the function CGSizeFromGADAdSize(). -typedef struct GADAdSize { - CGSize size; - NSUInteger flags; -} GADAdSize; - -#pragma mark Standard Sizes - -/// iPhone and iPod Touch ad size. Typically 320x50. -extern GADAdSize const kGADAdSizeBanner; - -/// Taller version of kGADAdSizeBanner. Typically 320x100. -extern GADAdSize const kGADAdSizeLargeBanner; - -/// Medium Rectangle size for the iPad (especially in a UISplitView's left pane). Typically 300x250. -extern GADAdSize const kGADAdSizeMediumRectangle; - -/// Full Banner size for the iPad (especially in a UIPopoverController or in -/// UIModalPresentationFormSheet). Typically 468x60. -extern GADAdSize const kGADAdSizeFullBanner; - -/// Leaderboard size for the iPad. Typically 728x90. -extern GADAdSize const kGADAdSizeLeaderboard; - -/// Skyscraper size for the iPad. Mediation only. AdMob/Google does not offer this size. Typically -/// 120x600. -extern GADAdSize const kGADAdSizeSkyscraper; - -/// An ad size that spans the full width of the application in portrait orientation. The height is -/// typically 50 pixels on an iPhone/iPod UI, and 90 pixels tall on an iPad UI. -extern GADAdSize const kGADAdSizeSmartBannerPortrait; - -/// An ad size that spans the full width of the application in landscape orientation. The height is -/// typically 32 pixels on an iPhone/iPod UI, and 90 pixels tall on an iPad UI. -extern GADAdSize const kGADAdSizeSmartBannerLandscape; - -/// Invalid ad size marker. -extern GADAdSize const kGADAdSizeInvalid; - -#pragma mark Custom Sizes - -/// Returns a custom GADAdSize for the provided CGSize. Use this only if you require a non-standard -/// size, otherwise, use one of the standard size constants above. -GADAdSize GADAdSizeFromCGSize(CGSize size); - -/// Returns a custom GADAdSize that spans the full width of the application in portrait orientation -/// with the height provided. -GADAdSize GADAdSizeFullWidthPortraitWithHeight(CGFloat height); - -/// Returns a custom GADAdSize that spans the full width of the application in landscape orientation -/// with the height provided. -GADAdSize GADAdSizeFullWidthLandscapeWithHeight(CGFloat height); - -#pragma mark Convenience Functions - -/// Returns YES if the two GADAdSizes are equal, otherwise returns NO. -BOOL GADAdSizeEqualToSize(GADAdSize size1, GADAdSize size2); - -/// Returns a CGSize for the provided a GADAdSize constant. If the GADAdSize is unknown, returns -/// CGSizeZero. -CGSize CGSizeFromGADAdSize(GADAdSize size); - -/// Returns YES if |size| is one of the predefined constants or is a custom GADAdSize generated by -/// GADAdSizeFromCGSize. -BOOL IsGADAdSizeValid(GADAdSize size); - -/// Returns a NSString describing the provided GADAdSize. -NSString *NSStringFromGADAdSize(GADAdSize size); - -#pragma mark Deprecated Macros - -#define GAD_SIZE_320x50 CGSizeFromGADAdSize(kGADAdSizeBanner) -#define GAD_SIZE_320x100 CGSizeFromGADAdSize(kGADAdSizeLargeBanner) -#define GAD_SIZE_300x250 CGSizeFromGADAdSize(kGADAdSizeMediumRectangle) -#define GAD_SIZE_468x60 CGSizeFromGADAdSize(kGADAdSizeFullBanner) -#define GAD_SIZE_728x90 CGSizeFromGADAdSize(kGADAdSizeLeaderboard) -#define GAD_SIZE_120x600 CGSizeFromGADAdSize(kGADAdSizeSkyscraper) diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventBanner.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventBanner.h deleted file mode 100644 index 25b4f1e1d..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventBanner.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// GADCustomEventBanner.h -// Google Mobile Ads SDK -// -// Copyright 2012 Google Inc. All rights reserved. -// - -#import -#import "GADAdSize.h" -#import "GADCustomEventBannerDelegate.h" -#import "GADCustomEventRequest.h" - -/// The protocol for a Custom Event of the banner type. Your Custom Event handler object for banners -/// must implement this protocol. The requestBannerAd method will be called when mediation schedules -/// your Custom Event to be executed. -@protocol GADCustomEventBanner - -/// This method is called by mediation when your Custom Event is scheduled to be executed. Results -/// of the execution should be reported back via the delegate. |adSize| is the size of the ad as -/// configured in the mediation UI for the mediation placement. |serverParameter| and |serverLabel| -/// are the parameter and label configured in the mediation UI for the Custom Event. |request| -/// contains information about the ad request, some of those are from GADRequest. -- (void)requestBannerAd:(GADAdSize)adSize - parameter:(NSString *)serverParameter - label:(NSString *)serverLabel - request:(GADCustomEventRequest *)request; - -/// You should call back to the |delegate| with the results of the execution to ensure mediation -/// behaves correctly. The delegate is weakly referenced to prevent memory leaks caused by circular -/// retention. -/// -/// Define the -delegate and -setDelegate: methods in your class. -/// -/// In your class's -dealloc method, remember to nil out the delegate. -@property(nonatomic, weak) id delegate; - -@end diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventBannerDelegate.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventBannerDelegate.h deleted file mode 100644 index 6781fdca5..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventBannerDelegate.h +++ /dev/null @@ -1,53 +0,0 @@ -// -// GADCustomEventBannerDelegate.h -// Google Mobile Ads SDK -// -// Copyright 2012 Google Inc. All rights reserved. -// - -#import - -@protocol GADCustomEventBanner; - -/// Call back to this delegate in your custom event. You must call customEventBanner:didReceiveAd: -/// when there is an ad to show, or customEventBanner:didFailAd: when there is no ad to show. -/// Otherwise, if enough time passed (several seconds) after the SDK called the requestBannerAd: -/// method of your custom event, the mediation SDK will consider the request timed out, and move on -/// to the next ad network. -@protocol GADCustomEventBannerDelegate - -/// Your Custom Event object must call this when it receives or creates an ad view. -- (void)customEventBanner:(id)customEvent didReceiveAd:(UIView *)view; - -/// Your Custom Event object must call this when it fails to receive or create the ad view. Pass -/// along any error object sent from the ad network's SDK, or an NSError describing the error. Pass -/// nil if not available. -- (void)customEventBanner:(id)customEvent didFailAd:(NSError *)error; - -/// Your Custom Event object should call this when the user touches or "clicks" the ad to initiate -/// an action. When the SDK receives this callback, it reports the click back to the Mediation -/// server. This callback is optional. -- (void)customEventBanner:(id)customEvent clickDidOccurInAd:(UIView *)view; - -/// The rootViewController that you set in GADBannerView. Use this UIViewController to show a modal -/// view when a user taps on the ad. -@property(nonatomic, readonly) UIViewController *viewControllerForPresentingModalView; - -/// When you call the following methods, the call will be propagated back to the -/// GADBannerViewDelegate that you implemented and passed to GADBannerView. - -/// Your Custom Event should call this when the user taps an ad and a modal view appears. -- (void)customEventBannerWillPresentModal:(id)customEvent; - -/// Your Custom Event should call this when the user dismisses the modal view and the modal view is -/// about to go away. -- (void)customEventBannerWillDismissModal:(id)customEvent; - -/// Your Custom Event should call this when the user dismisses the modal view and the modal view has -/// gone away. -- (void)customEventBannerDidDismissModal:(id)customEvent; - -/// Your Custom Event should call this method when a user action will result in App switching. -- (void)customEventBannerWillLeaveApplication:(id)customEvent; - -@end diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventExtras.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventExtras.h deleted file mode 100644 index b51f2764f..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventExtras.h +++ /dev/null @@ -1,30 +0,0 @@ -// -// GADCustomEventExtras.h -// Google Mobile Ads SDK -// -// Copyright 2012 Google Inc. All rights reserved. -// - -#import - -#import "GADAdNetworkExtras.h" - -/// Create an instance of this class to set additional parameters for each custom event object. The -/// additional parameters for a custom event are keyed by the custom event label. These extras are -/// passed to your implementation of GADCustomEventBanner or GADCustomEventInterstitial. -@interface GADCustomEventExtras : NSObject - -/// Set additional parameters for the custom event with label |label|. To remove additional -/// parameters associated with |label|, pass in nil for |extras|. -- (void)setExtras:(NSDictionary *)extras forLabel:(NSString *)label; - -/// Retrieve the extras for |label|. -- (NSDictionary *)extrasForLabel:(NSString *)label; - -/// Removes all the extras set on this instance. -- (void)removeAllExtras; - -/// Returns all the extras set on this instance. -- (NSDictionary *)allExtras; - -@end diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventInterstitial.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventInterstitial.h deleted file mode 100644 index 6679c8f9a..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventInterstitial.h +++ /dev/null @@ -1,43 +0,0 @@ -// -// GADCustomEventInterstitial.h -// Google Mobile Ads SDK -// -// Copyright 2012 Google Inc. All rights reserved. -// - -#import -#import "GADCustomEventInterstitialDelegate.h" -#import "GADCustomEventRequest.h" - -/// The protocol for a Custom Event of the interstitial type. Your Custom Event handler object for -/// interstitial must implement this protocol. The requestInterstitialAd method will be called when -/// mediation schedules your Custom Event to be executed. -@protocol GADCustomEventInterstitial - -/// You should call back to the |delegate| with the results of the execution to ensure mediation -/// behaves correctly. The delegate is assigned, not retained, to prevent memory leak caused by -/// circular retention. -/// -/// Define the -delegate and -setDelegate: methods in your class. -/// -/// In your class's -dealloc method, remember to nil out the delegate. -@property(nonatomic, weak) id delegate; - -/// This method is called by mediation when your Custom Event is scheduled to be executed. Your -/// implementation should begin retrieval of the interstitial ad, usually from a backend server, or -/// from an ad network SDK. Results of the execution should be reported back via the delegate. Note -/// that you should wait until -presentFromRootViewController is called before displaying the -/// interstitial ad. Do not automatically display the ad when you receive the ad. Instead, retain -/// the ad and display it when presentFromRootViewController is called. |serverParameter| and -/// |serverLabel| are the parameter and label configured in the AdMob mediation UI for the Custom -/// Event. |request| contains information about the ad request, some of those are from GADRequest. -- (void)requestInterstitialAdWithParameter:(NSString *)serverParameter - label:(NSString *)serverLabel - request:(GADCustomEventRequest *)request; - -/// Present the interstitial ad as a modal view using the provided view controller. This is called -/// only after your Custom Event calls back to the delegate with the message -/// -customEvent:didReceiveAd: . -- (void)presentFromRootViewController:(UIViewController *)rootViewController; - -@end diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventInterstitialDelegate.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventInterstitialDelegate.h deleted file mode 100644 index a2c4c41a6..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventInterstitialDelegate.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// GADCustomEventInterstitialDelegate.h -// Google Mobile Ads SDK -// -// Copyright 2012 Google Inc. All rights reserved. -// - -#import - -@protocol GADCustomEventInterstitial; - -/// Call back to this delegate in your custom event. You must call -/// customEventInterstitial:didReceiveAd: when there is an ad to show, or -/// customEventInterstitial:didFailAd: when there is no ad to show. Otherwise, if enough time passed -/// (several seconds) after the SDK called the requestInterstitialAdWithParameter: method of your -/// custom event, the mediation SDK will consider the request timed out, and move on to the next ad -/// network. -@protocol GADCustomEventInterstitialDelegate - -/// Your Custom Event object must call this when it receives or creates an interstitial ad. If there -/// is an ad object, pass it in the method call. Pass nil if the ad object is not available. -- (void)customEventInterstitial:(id)customEvent - didReceiveAd:(NSObject *)ad; - -/// Your Custom Event object must call this when it fails to receive or create the ad. Pass along -/// any error object sent from the ad network's SDK, or an NSError describing the error. Pass nil if -/// not available. -- (void)customEventInterstitial:(id)customEvent - didFailAd:(NSError *)error; - -/// When you call any of the the following methods, the call will be propagated back to the -/// GADInterstitialDelegate that you implemented and passed to GADInterstitial. - -/// Your Custom Event should call this when the interstitial is being displayed. -- (void)customEventInterstitialWillPresent:(id)customEvent; - -/// Your Custom Event should call this when the interstitial is about to be dismissed. -- (void)customEventInterstitialWillDismiss:(id)customEvent; - -/// Your Custom Event should call this when the interstitial has been dismissed. -- (void)customEventInterstitialDidDismiss:(id)customEvent; - -/// Your Custom Event should call this method when a user action will result in app switching. -- (void)customEventInterstitialWillLeaveApplication:(id)customEvent; - -@end diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventRequest.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventRequest.h deleted file mode 100644 index 217ba83ce..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADCustomEventRequest.h +++ /dev/null @@ -1,47 +0,0 @@ -// -// GADCustomEventRequest.h -// Google Mobile Ads SDK -// -// Copyright 2012 Google Inc. All rights reserved. -// - -#import - -#import "GADRequest.h" - -@class GADCustomEventExtras; - -@interface GADCustomEventRequest : NSObject - -/// The end user's gender set in GADRequest. If not specified, returns kGADGenderUnknown. -@property(nonatomic, readonly, assign) GADGender userGender; - -/// The end user's birthday set in GADRequest. If not specified, returns nil. -@property(nonatomic, readonly, copy) NSDate *userBirthday; - -/// The end user's latitude, longitude, and accuracy, set in GADRequest. If not specified, -/// userHasLocation returns NO, and userLatitude, userLongitude and userLocationAccuracyInMeters -/// will all return 0. -@property(nonatomic, readonly, assign) BOOL userHasLocation; -@property(nonatomic, readonly, assign) CGFloat userLatitude; -@property(nonatomic, readonly, assign) CGFloat userLongitude; -@property(nonatomic, readonly, assign) CGFloat userLocationAccuracyInMeters; - -/// Description of the user's location, in free form text, set in GADRequest. If not available, -/// returns nil. This may be set even if userHasLocation is NO. -@property(nonatomic, readonly, copy) NSString *userLocationDescription; - -/// Keywords set in GADRequest. Returns nil if no keywords are set. -@property(nonatomic, readonly, copy) NSArray *userKeywords; - -/// The additional parameters set by the application. This property allows you to pass additional -/// information from your application to your Custom Event object. To do so, create an instance of -/// GADCustomEventExtras to pass to GADRequest -registerAdNetworkExtras:. The instance should have -/// an NSDictionary set for a particular custom event label. That NSDictionary becomes the -/// additionalParameters here. -@property(nonatomic, readonly, copy) NSDictionary *additionalParameters; - -/// Indicates if the testing property has been set in GADRequest. -@property(nonatomic, readonly, assign) BOOL isTesting; - -@end diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADModules.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADModules.h deleted file mode 100644 index b1818a107..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADModules.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// GADModules.h -// Google Mobile Ads SDK -// -// Copyright 2014 Google Inc. All rights reserved. -// - -// If your target uses modules, importing this file will automatically link the frameworks used by -// the Google Mobile Ads library. - -#if __has_feature(objc_modules) -@import AdSupport; -@import AudioToolbox; -@import AVFoundation; -@import CoreGraphics; -@import CoreTelephony; -@import Foundation; -@import MessageUI; -@import StoreKit; -@import SystemConfiguration; -@import UIKit; -#endif diff --git a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADRequest.h b/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADRequest.h deleted file mode 100644 index 1edb04ad8..000000000 --- a/mediation/mediating/GoogleAdMob/GoogleAdMobSDK/GADRequest.h +++ /dev/null @@ -1,126 +0,0 @@ -// -// GADRequest.h -// Google Mobile Ads SDK -// -// Copyright 2011 Google Inc. All rights reserved. -// - -#import -#import - -#import "GADModules.h" - -@protocol GADAdNetworkExtras; - -/// Constant for getting test ads on the simulator using the testDevices method. -#define GAD_SIMULATOR_ID @"Simulator" - -/// Genders to help deliver more relevant ads. -typedef NS_ENUM(NSInteger, GADGender) { - kGADGenderUnknown, ///< Unknown gender. - kGADGenderMale, ///< Male gender. - kGADGenderFemale ///< Female gender. -}; - -/// Specifies optional parameters for ad requests. -@interface GADRequest : NSObject - -/// Creates an autoreleased GADRequest. -+ (GADRequest *)request; - -#pragma mark Additional Parameters For Ad Networks - -/// Ad networks may have additional parameters they accept. To pass these parameters to them, create -/// the ad network extras object for that network, fill in the parameters, and register it here. The -/// ad network should have a header defining the interface for the 'extras' object to create. All -/// networks will have access to the basic settings you've set in this GADRequest (gender, birthday, -/// testing mode, etc.). If you register an extras object that is the same class as one you have -/// registered before, the previous extras will be overwritten. -- (void)registerAdNetworkExtras:(id)extras; - -/// Get the network extras defined for an ad network. -- (id)adNetworkExtrasFor:(Class)aClass; - -/// Unsets the extras for an ad network. |clazz| is the class which represents that network's extras -/// type. -- (void)removeAdNetworkExtrasFor:(Class)aClass; - -/// Extras sent to the mediation server (if using Mediation). For future use. -@property(nonatomic, copy) NSDictionary *mediationExtras; - -#pragma mark Collecting SDK Information - -/// Returns the version of the SDK. -+ (NSString *)sdkVersion; - -#pragma mark Testing - -/// Add the device's identifier into this array for testing purposes. -@property(nonatomic, copy) NSArray *testDevices; - -#pragma mark User Information - -/// The user's gender may be used to deliver more relevant ads. -@property(nonatomic, assign) GADGender gender; - -/// The user's birthday may be used to deliver more relevant ads. -@property(nonatomic, strong) NSDate *birthday; -- (void)setBirthdayWithMonth:(NSInteger)m day:(NSInteger)d year:(NSInteger)y; - -/// The user's current location may be used to deliver more relevant ads. However do not use Core -/// Location just for advertising, make sure it is used for more beneficial reasons as well. It is -/// both a good idea and part of Apple's guidelines. -- (void)setLocationWithLatitude:(CGFloat)latitude - longitude:(CGFloat)longitude - accuracy:(CGFloat)accuracyInMeters; - -/// When Core Location isn't available but the user's location is known supplying it here may -/// deliver more relevant ads. It can be any free-form text such as @"Champs-Elysees Paris" or -/// @"94041 US". -- (void)setLocationWithDescription:(NSString *)locationDescription; - -/// [Optional] This method allows you to specify whether you would like your app to be treated as -/// child-directed for purposes of the Children’s Online Privacy Protection Act (COPPA), -/// http:///business.ftc.gov/privacy-and-security/childrens-privacy. -/// -/// If you call this method with YES, you are indicating that your app should be treated as -/// child-directed for purposes of the Children’s Online Privacy Protection Act (COPPA). If you call -/// this method with NO, you are indicating that your app should not be treated as child-directed -/// for purposes of the Children’s Online Privacy Protection Act (COPPA). If you do not call this -/// method, ad requests will include no indication of how you would like your app treated with -/// respect to COPPA. -/// -/// By setting this method, you certify that this notification is accurate and you are authorized to -/// act on behalf of the owner of the app. You understand that abuse of this setting may result in -/// termination of your Google account. -/// -/// It may take some time for this designation to be fully implemented in applicable Google -/// services. This designation will only apply to ad requests for which you have set this method. -- (void)tagForChildDirectedTreatment:(BOOL)childDirectedTreatment; - -#pragma mark Contextual Information - -/// A keyword is a word or phrase describing the current activity of the user such as @"Sports -/// Scores". Each keyword is an NSString in the NSArray. To clear the keywords set this to nil. -@property(nonatomic, strong) NSMutableArray *keywords; - -/// Convenience method for adding keywords one at a time such as @"Sports Scores" and then -/// @"Football". -- (void)addKeyword:(NSString *)keyword; - -/// URL string for a webpage whose content matches the app content. This webpage content is used for -/// targeting purposes. -@property(nonatomic, copy) NSString *contentURL; - -#pragma mark - Deprecated Methods - -/// Accesses the additionalParameters for the "GoogleAdmob" ad network. Please use -/// -registerAdNetworkExtras: method above and pass an instance of GADAdMobExtras instead. -@property(nonatomic, copy) NSDictionary *additionalParameters __attribute__(( - deprecated(" use registerAdNetworkExtras: and pass an instance of GADAdMobExtras."))); - -/// This property has been deprecated with the latest SDK releases. Please use testDevices. -@property(nonatomic, assign, getter=isTesting) BOOL testing - __attribute__((deprecated(" use the testDevices property."))); - -@end diff --git a/sdk/ANAdProtocol.h b/sdk/ANAdProtocol.h index 5fe3e091a..79e347ca3 100644 --- a/sdk/ANAdProtocol.h +++ b/sdk/ANAdProtocol.h @@ -18,12 +18,11 @@ @class ANLocation; -typedef enum _ANGender -{ +typedef NS_ENUM(NSUInteger, ANGender) { UNKNOWN, MALE, FEMALE -} ANGender; +}; /** ANAdProtocol defines the properties and methods that are common to @@ -86,12 +85,20 @@ typedef enum _ANGender @property (nonatomic, readwrite, strong) NSMutableDictionary *customKeywords; /** - Set the ad view's location. This allows ad buyers to do location + Set the user's current location. This allows ad buyers to do location targeting, which can increase spend. */ - (void)setLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude timestamp:(NSDate *)timestamp horizontalAccuracy:(CGFloat)horizontalAccuracy; +/** + Set the user's current location rounded to the number of decimal places specified in "precision". + Valid values are between 0 and 6 inclusive. If the precision is -1, no rounding will occur. + */ +- (void)setLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude + timestamp:(NSDate *)timestamp horizontalAccuracy:(CGFloat)horizontalAccuracy + precision:(NSInteger)precision; + /** These methods add and remove custom keywords to and from the customKeywords dictionary. @@ -99,6 +106,16 @@ typedef enum _ANGender - (void)addCustomKeywordWithKey:(NSString *)key value:(NSString *)value; - (void)removeCustomKeywordWithKey:(NSString *)key; +/** + Set whether the landing page should load in the background or in the foreground when an ad is clicked. + If set to YES, when an ad is clicked the user is presented with an activity indicator view, and the in-app + browser displays only after the landing page content has finished loading. If set to NO, the in-app + browser displays immediately. The default is YES. + + Has no effect if opensInNativeBrowser is set to YES. + */ +@property (nonatomic, readwrite, assign) BOOL landingPageLoadsInBackground; + @end /** diff --git a/sdk/ANBannerAdView.h b/sdk/ANBannerAdView.h index ae464691f..908351561 100644 --- a/sdk/ANBannerAdView.h +++ b/sdk/ANBannerAdView.h @@ -34,6 +34,18 @@ typedef NS_ENUM(NSUInteger, ANBannerViewAdTransitionDirection) { ANBannerViewAdTransitionDirectionRandom }; +typedef NS_ENUM(NSUInteger, ANBannerViewAdAlignment) { + ANBannerViewAdAlignmentCenter = 0, + ANBannerViewAdAlignmentTopLeft, + ANBannerViewAdAlignmentTopCenter, + ANBannerViewAdAlignmentTopRight, + ANBannerViewAdAlignmentCenterLeft, + ANBannerViewAdAlignmentCenterRight, + ANBannerViewAdAlignmentBottomLeft, + ANBannerViewAdAlignmentBottomCenter, + ANBannerViewAdAlignmentBottomRight +}; + #pragma mark Example implementation /** @@ -110,6 +122,13 @@ typedef NS_ENUM(NSUInteger, ANBannerViewAdTransitionDirection) { */ @property (nonatomic, readwrite, assign) NSTimeInterval transitionDuration; +/** + The alignment of the ad within the banner view, in the event the ad is a different size than the + banner view. This can happen if the adSize is omitted and an ad smaller than the frame size is + returned from the ad server. See the ANBannerViewAdAlignment enumeration above for accepted values. + */ +@property (nonatomic, readwrite, assign) ANBannerViewAdAlignment alignment; + #pragma mark Creating an ad view and loading an ad /** @@ -122,8 +141,8 @@ typedef NS_ENUM(NSUInteger, ANBannerViewAdTransitionDirection) { so you may want to use that instead, unless you prefer to manage this manually. */ -- (id)initWithFrame:(CGRect)frame placementId:(NSString *)placementId; -- (id)initWithFrame:(CGRect)frame placementId:(NSString *)placementId adSize:(CGSize)size; +- (instancetype)initWithFrame:(CGRect)frame placementId:(NSString *)placementId; +- (instancetype)initWithFrame:(CGRect)frame placementId:(NSString *)placementId adSize:(CGSize)size; /** Initializes an ad view. These are autoreleased constructors of the diff --git a/sdk/ANCustomAdapter.h b/sdk/ANCustomAdapter.h index c503e83f2..0631d5215 100644 --- a/sdk/ANCustomAdapter.h +++ b/sdk/ANCustomAdapter.h @@ -15,8 +15,7 @@ #import "ANTargetingParameters.h" -typedef enum _ANAdResponseCode -{ +typedef NS_ENUM(NSInteger, ANAdResponseCode) { ANDefaultCode = -1, ANAdResponseSuccessful = 0, ANAdResponseInvalidRequest, @@ -28,7 +27,7 @@ typedef enum _ANAdResponseCode ANAdResponseBadURL, ANAdResponseBadURLConnection, ANAdResponseNonViewResponse -} ANAdResponseCode; +}; @protocol ANCustomAdapterDelegate - (void)didFailToLoadAd:(ANAdResponseCode)errorCode; diff --git a/sdk/ANInterstitialAd.h b/sdk/ANInterstitialAd.h index ea3eb99b9..dfeedca63 100644 --- a/sdk/ANInterstitialAd.h +++ b/sdk/ANInterstitialAd.h @@ -84,7 +84,7 @@ @param placementId the placement ID given from AN @returns void */ -- (id)initWithPlacementId:(NSString *)placementId; +- (instancetype)initWithPlacementId:(NSString *)placementId; /** Actually loads the ad into your ad view. diff --git a/sdk/ANLocation.h b/sdk/ANLocation.h index f093bfacb..3a49f2ad7 100644 --- a/sdk/ANLocation.h +++ b/sdk/ANLocation.h @@ -43,11 +43,35 @@ @property (nonatomic, readwrite, assign) CGFloat horizontalAccuracy; /** - Gets the user's location, along with a timestamp and a degree of - accuracy. Returns nil if invalid location data is passed in (see + Returns an ANLocation instance generated from a user's location. It is + expected that the latitude, longitude, timestamp, and horizontal accuracy + parameters will be passed from a CLLocation instance. + + Returns nil if invalid location data is passed in (see the property definitions above for what constitutes invalid data). */ -+ (ANLocation *)getLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude - timestamp:(NSDate *)timestamp horizontalAccuracy:(CGFloat)horizontalAccuracy; ++ (ANLocation *)getLocationWithLatitude:(CGFloat)latitude + longitude:(CGFloat)longitude + timestamp:(NSDate *)timestamp + horizontalAccuracy:(CGFloat)horizontalAccuracy; + +/** + Returns an ANLocation instance with latitude and longitude values rounded to the + number of decimal places specified in precision. It is expected that the latitude, + longitude, timestamp, and horizontal accuracy parameters will be passed directly + from a CLLocation instance. + + Returns nil if invalid location data is passed in (see the property definitions + above for what constitutes invalid data). In addition, if the precision is: + + ** Equal to -1, no rounding will occur. + + ** Greater than 6, the latitude & longitude values will be rounded to 6 decimal places. + */ ++ (ANLocation *)getLocationWithLatitude:(CGFloat)latitude + longitude:(CGFloat)longitude + timestamp:(NSDate *)timestamp + horizontalAccuracy:(CGFloat)horizontalAccuracy + precision:(NSInteger)precision; -@end +@end \ No newline at end of file diff --git a/sdk/ANLogManager.h b/sdk/ANLogManager.h index f5cc49b9a..715b1b089 100644 --- a/sdk/ANLogManager.h +++ b/sdk/ANLogManager.h @@ -21,8 +21,7 @@ `ANLogLevelInfo,` `ANLogLevelWarn,` and `ANLogLevelError.` The default level is `ANLogLevelWarn` */ -typedef enum -{ +typedef NS_ENUM(NSUInteger, ANLogLevel) { ANLogLevelAll = 0, ANLogLevelTrace = 10, ANLogLevelDebug = 20, @@ -30,7 +29,7 @@ typedef enum ANLogLevelWarn = 40, ANLogLevelError = 50, ANLogLevelOff = 60 -} ANLogLevel; +}; /** Use the `ANLogManager` methods to set the desired level of log filter. @@ -47,5 +46,4 @@ typedef enum */ + (void)setANLogLevel:(ANLogLevel)level; -@end - +@end \ No newline at end of file diff --git a/sdk/Categories/ANBannerAdView+ANContentViewTransitions.h b/sdk/Categories/ANBannerAdView+ANContentViewTransitions.h new file mode 100644 index 000000000..9ce9bec1b --- /dev/null +++ b/sdk/Categories/ANBannerAdView+ANContentViewTransitions.h @@ -0,0 +1,29 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANBannerAdView.h" +#import "UIView+ANCategory.h" + +@interface ANBannerAdView (ANContentViewTransitions) + +@property (nonatomic, readonly, strong) UIView *contentView; // Only need readonly access in this category +@property (nonatomic, readwrite, strong) NSNumber *transitionInProgress; + +- (void)performTransitionFromContentView:(UIView *)oldContentView + toContentView:(UIView *)newContentView; +- (void)alignContentView; +- (void)constrainContentView; + +@end \ No newline at end of file diff --git a/sdk/Categories/ANBannerAdView+ANContentViewTransitions.m b/sdk/Categories/ANBannerAdView+ANContentViewTransitions.m new file mode 100644 index 000000000..a453da93d --- /dev/null +++ b/sdk/Categories/ANBannerAdView+ANContentViewTransitions.m @@ -0,0 +1,254 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANBannerAdView+ANContentViewTransitions.h" + +static NSString *const kANContentViewTransitionsOldContentViewTransitionKey = @"AppNexusOldContentViewTransition"; +static NSString *const kANContentViewTransitionsNewContentViewTransitionKey = @"AppNexusNewContentViewTransition"; + +@implementation ANBannerAdView (ANContentViewTransitions) + +// Properties are synthesized in ANBannerAdView +@dynamic transitionInProgress; +@dynamic contentView; + +- (void)performTransitionFromContentView:(UIView *)oldContentView + toContentView:(UIView *)newContentView { + if (self.transitionType == ANBannerViewAdTransitionTypeNone) { + if (newContentView) { + [self addSubview:newContentView]; + [self constrainContentView]; + [self removeSubviewsWithException:newContentView]; + } else { + [self removeSubviews]; + } + return; + } + + ANBannerViewAdTransitionType transitionType = self.transitionType; + if ((oldContentView && !newContentView) || (newContentView && !oldContentView)) { + transitionType = ANBannerViewAdTransitionTypeFade; + } + + ANBannerViewAdTransitionDirection transitionDirection = self.transitionDirection; + if (transitionDirection == ANBannerViewAdTransitionDirectionRandom) { + transitionDirection = arc4random_uniform(4); + } + + if (transitionType != ANBannerViewAdTransitionTypeFlip) { + newContentView.hidden = YES; + } + + if (newContentView) { + [self addSubview:newContentView]; + [self constrainContentView]; + } + + self.transitionInProgress = @(YES); + + [UIView animateWithDuration:self.transitionDuration + animations:^{ + if (transitionType == ANBannerViewAdTransitionTypeFlip) { + CAKeyframeAnimation *oldContentViewAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; + oldContentViewAnimation.values = [self keyFrameValuesForOldContentViewFlipAnimationWithDirection:transitionDirection]; + oldContentViewAnimation.duration = self.transitionDuration; + [oldContentView.layer addAnimation:oldContentViewAnimation + forKey:kANContentViewTransitionsOldContentViewTransitionKey]; + + CAKeyframeAnimation *newContentViewAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; + newContentViewAnimation.values = [self keyFrameValuesForNewContentViewFlipAnimationWithDirection:transitionDirection]; + newContentViewAnimation.duration = self.transitionDuration; + newContentViewAnimation.delegate = self; + [newContentView.layer addAnimation:newContentViewAnimation + forKey:kANContentViewTransitionsNewContentViewTransitionKey]; + } else { + CATransition *transition = [CATransition animation]; + transition.startProgress = 0; + transition.endProgress = 1.0; + transition.type = [[self class] CATransitionTypeFromANTransitionType:transitionType]; + transition.subtype = [[self class] CATransitionSubtypeFromANTransitionDirection:transitionDirection + withANTransitionType:transitionType]; + transition.duration = self.transitionDuration; + transition.delegate = self; + + [oldContentView.layer addAnimation:transition + forKey:kCATransition]; + [newContentView.layer addAnimation:transition + forKey:kCATransition]; + + newContentView.hidden = NO; + oldContentView.hidden = YES; + } + }]; +} + +- (void)alignContentView { + NSLayoutAttribute xAttribute = NSLayoutAttributeCenterX; + NSLayoutAttribute yAttribute = NSLayoutAttributeCenterY; + switch (self.alignment) { + case ANBannerViewAdAlignmentTopLeft: + yAttribute = NSLayoutAttributeTop; + xAttribute = NSLayoutAttributeLeft; + break; + case ANBannerViewAdAlignmentTopCenter: + yAttribute = NSLayoutAttributeTop; + xAttribute = NSLayoutAttributeCenterX; + break; + case ANBannerViewAdAlignmentTopRight: + yAttribute = NSLayoutAttributeTop; + xAttribute = NSLayoutAttributeRight; + break; + case ANBannerViewAdAlignmentCenterLeft: + yAttribute = NSLayoutAttributeCenterY; + xAttribute = NSLayoutAttributeLeft; + break; + case ANBannerViewAdAlignmentCenterRight: + yAttribute = NSLayoutAttributeCenterY; + xAttribute = NSLayoutAttributeRight; + break; + case ANBannerViewAdAlignmentBottomLeft: + yAttribute = NSLayoutAttributeBottom; + xAttribute = NSLayoutAttributeLeft; + break; + case ANBannerViewAdAlignmentBottomCenter: + yAttribute = NSLayoutAttributeBottom; + xAttribute = NSLayoutAttributeCenterX; + break; + case ANBannerViewAdAlignmentBottomRight: + yAttribute = NSLayoutAttributeBottom; + xAttribute = NSLayoutAttributeRight; + break; + default: // ANBannerViewAdAlignmentCenter + break; + } + [self.contentView alignToSuperviewWithXAttribute:xAttribute + yAttribute:yAttribute]; +} + +- (void)constrainContentView { + self.contentView.translatesAutoresizingMaskIntoConstraints = NO; + [self.contentView constrainWithFrameSize]; + [self alignContentView]; +} + ++ (NSString *)CATransitionSubtypeFromANTransitionDirection:(ANBannerViewAdTransitionDirection)transitionDirection + withANTransitionType:(ANBannerViewAdTransitionType)transitionType { + if (transitionType == ANBannerViewAdTransitionTypeFade) { + return kCATransitionFade; + } + + switch (transitionDirection) { + case ANBannerViewAdTransitionDirectionUp: + return kCATransitionFromTop; + case ANBannerViewAdTransitionDirectionDown: + return kCATransitionFromBottom; + case ANBannerViewAdTransitionDirectionLeft: + return kCATransitionFromRight; + case ANBannerViewAdTransitionDirectionRight: + return kCATransitionFromLeft; + default: + return kCATransitionFade; + } +} + ++ (NSString *)CATransitionTypeFromANTransitionType:(ANBannerViewAdTransitionType)transitionType { + switch (transitionType) { + case ANBannerViewAdTransitionTypeFade: + return kCATransitionPush; + case ANBannerViewAdTransitionTypePush: + return kCATransitionPush; + case ANBannerViewAdTransitionTypeMoveIn: + return kCATransitionMoveIn; + case ANBannerViewAdTransitionTypeReveal: + return kCATransitionReveal; + default: + return kCATransitionPush; + } +} + +static NSInteger const kANBannerAdViewNumberOfKeyframeValuesToGenerate = 35; +static CGFloat kANBannerAdViewPerspectiveValue = -1.0 / 750.0; + +- (NSArray *)keyFrameValuesForContentViewFlipAnimationWithDirection:(ANBannerViewAdTransitionDirection)direction + forOldContentView:(BOOL)isOldContentView { + CGFloat angle = 0.0f; + CGFloat x; + CGFloat y; + CGFloat frameFlipDimensionLength = 0.0f; + + switch (direction) { + case ANBannerViewAdTransitionDirectionUp: + x = 1; + y = 0; + angle = isOldContentView ? M_PI_2 : -M_PI_2; + frameFlipDimensionLength = CGRectGetHeight(self.frame); + break; + case ANBannerViewAdTransitionDirectionDown: + x = 1; + y = 0; + angle = isOldContentView ? -M_PI_2: M_PI_2; + frameFlipDimensionLength = CGRectGetHeight(self.frame); + break; + case ANBannerViewAdTransitionDirectionLeft: + x = 0; + y = 1; + angle = isOldContentView ? -M_PI_2 : M_PI_2; + frameFlipDimensionLength = CGRectGetWidth(self.frame); + break; + case ANBannerViewAdTransitionDirectionRight: + x = 0; + y = 1; + angle = isOldContentView ? M_PI_2 : -M_PI_2; + frameFlipDimensionLength = CGRectGetWidth(self.frame); + break; + default: + x = 1; + y = 0; + angle = isOldContentView ? M_PI_2 : -M_PI_2; + frameFlipDimensionLength = CGRectGetHeight(self.frame); + break; + } + + NSMutableArray *keyframeValues = [[NSMutableArray alloc] init]; + for (NSInteger valueNumber=0; valueNumber <= kANBannerAdViewNumberOfKeyframeValuesToGenerate; valueNumber++) { + CATransform3D transform = CATransform3DIdentity; + transform.m34 = kANBannerAdViewPerspectiveValue; + transform = CATransform3DTranslate(transform, 0, 0, -frameFlipDimensionLength / 2.0); + transform = CATransform3DRotate(transform, angle * valueNumber / kANBannerAdViewNumberOfKeyframeValuesToGenerate, x, y, 0); + transform = CATransform3DTranslate(transform, 0, 0, frameFlipDimensionLength / 2.0); + [keyframeValues addObject:[NSValue valueWithCATransform3D:transform]]; + } + return isOldContentView ? keyframeValues : [[keyframeValues reverseObjectEnumerator] allObjects]; +} + +- (NSArray *)keyFrameValuesForOldContentViewFlipAnimationWithDirection:(ANBannerViewAdTransitionDirection)direction { + return [self keyFrameValuesForContentViewFlipAnimationWithDirection:direction + forOldContentView:YES]; +} + +- (NSArray *)keyFrameValuesForNewContentViewFlipAnimationWithDirection:(ANBannerViewAdTransitionDirection)direction { + return [self keyFrameValuesForContentViewFlipAnimationWithDirection:direction + forOldContentView:NO]; +} + +- (void)animationDidStop:(CAAnimation *)anim + finished:(BOOL)flag { + if (![self.contentView.layer.animationKeys count]) { // No animations left + [self removeSubviewsWithException:self.contentView]; + self.transitionInProgress = @(NO); + } +} + +@end diff --git a/sdk/Categories/UIView+ANCategory.h b/sdk/Categories/UIView+ANCategory.h index edf0dd9d8..13e8a5ef5 100644 --- a/sdk/Categories/UIView+ANCategory.h +++ b/sdk/Categories/UIView+ANCategory.h @@ -25,4 +25,23 @@ - (void)removeSubviews; - (void)removeSubviewsWithException:(UIView *)exception; -@end +#pragma mark - Autolayout + +- (void)constrainWithSize:(CGSize)size; +- (void)constrainWithFrameSize; +- (void)removeSizeConstraint; +- (void)extractWidthConstraint:(NSLayoutConstraint **)widthConstraint + heightConstraint:(NSLayoutConstraint **)heightConstraint; + +- (void)constrainToSizeOfSuperview; +- (void)removeSizeConstraintToSuperview; + +- (void)alignToSuperviewWithXAttribute:(NSLayoutAttribute)xAttribute + yAttribute:(NSLayoutAttribute)yAttribute; +- (void)alignToSuperviewWithXAttribute:(NSLayoutAttribute)xAttribute + yAttribute:(NSLayoutAttribute)yAttribute + offsetX:(CGFloat)offsetX + offsetY:(CGFloat)offsetY; +- (void)removeAlignmentConstraintsToSuperview; + +@end \ No newline at end of file diff --git a/sdk/Categories/UIView+ANCategory.m b/sdk/Categories/UIView+ANCategory.m index e2cf4f109..b46dffed1 100644 --- a/sdk/Categories/UIView+ANCategory.m +++ b/sdk/Categories/UIView+ANCategory.m @@ -75,4 +75,154 @@ - (void)removeSubviewsWithException:(UIView *)exception { } +#pragma mark - Autolayout + +- (void)constrainWithFrameSize { + [self constrainWithSize:self.frame.size]; +} + +- (void)constrainWithSize:(CGSize)size { + [self removeSizeConstraintToSuperview]; + + NSLayoutConstraint *widthConstraint; + NSLayoutConstraint *heightConstraint; + + [self extractWidthConstraint:&widthConstraint + heightConstraint:&heightConstraint]; + + if (!widthConstraint) { + widthConstraint = [NSLayoutConstraint constraintWithItem:self + attribute:NSLayoutAttributeWidth + relatedBy:NSLayoutRelationEqual + toItem:nil + attribute:NSLayoutAttributeNotAnAttribute + multiplier:1 + constant:size.width]; + [self addConstraint:widthConstraint]; + } else { + widthConstraint.constant = size.width; + } + if (!heightConstraint) { + heightConstraint = [NSLayoutConstraint constraintWithItem:self + attribute:NSLayoutAttributeHeight + relatedBy:NSLayoutRelationEqual + toItem:nil + attribute:NSLayoutAttributeNotAnAttribute + multiplier:1 + constant:size.height]; + [self addConstraint:heightConstraint]; + } else { + heightConstraint.constant = size.height; + } +} + +- (void)constrainToSizeOfSuperview { + [self removeSizeConstraintToSuperview]; + [self removeSizeConstraint]; + + NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:self + attribute:NSLayoutAttributeWidth + relatedBy:NSLayoutRelationEqual + toItem:self.superview + attribute:NSLayoutAttributeWidth + multiplier:1 + constant:0]; + NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self + attribute:NSLayoutAttributeHeight + relatedBy:NSLayoutRelationEqual + toItem:self.superview + attribute:NSLayoutAttributeHeight + multiplier:1 + constant:0]; + [self.superview addConstraints:@[widthConstraint, heightConstraint]]; +} + +- (void)alignToSuperviewWithXAttribute:(NSLayoutAttribute)xAttribute + yAttribute:(NSLayoutAttribute)yAttribute { + [self alignToSuperviewWithXAttribute:xAttribute + yAttribute:yAttribute + offsetX:0 + offsetY:0]; +} + +- (void)alignToSuperviewWithXAttribute:(NSLayoutAttribute)xAttribute + yAttribute:(NSLayoutAttribute)yAttribute + offsetX:(CGFloat)offsetX + offsetY:(CGFloat)offsetY { + [self removeAlignmentConstraintsToSuperview]; + + NSLayoutConstraint *xConstraint = [NSLayoutConstraint constraintWithItem:self + attribute:xAttribute + relatedBy:NSLayoutRelationEqual + toItem:self.superview + attribute:xAttribute + multiplier:1 + constant:offsetX]; + NSLayoutConstraint *yConstraint = [NSLayoutConstraint constraintWithItem:self + attribute:yAttribute + relatedBy:NSLayoutRelationEqual + toItem:self.superview + attribute:yAttribute + multiplier:1 + constant:offsetY]; + [self.superview addConstraints:@[xConstraint, yConstraint]]; +} + +- (void)removeSizeConstraintToSuperview { + NSArray *superviewConstraintsCopy = [self.superview.constraints copy]; + [superviewConstraintsCopy enumerateObjectsUsingBlock:^(NSLayoutConstraint *existingConstraint, NSUInteger idx, BOOL *stop) { + BOOL firstItemSelfSecondItemSuperview = existingConstraint.firstItem == self && existingConstraint.secondItem == self.superview; + BOOL firstItemSuperviewSecondItemSelf = existingConstraint.firstItem == self.superview && existingConstraint.secondItem == self; + BOOL attributesEqual = existingConstraint.firstAttribute == existingConstraint.secondAttribute; + BOOL isWidthOrHeightConstraint = existingConstraint.firstAttribute == NSLayoutAttributeWidth || existingConstraint.firstAttribute == NSLayoutAttributeHeight; + BOOL invalidConstraint = (firstItemSelfSecondItemSuperview || firstItemSuperviewSecondItemSelf) && attributesEqual && isWidthOrHeightConstraint; + if (invalidConstraint) { + [self.superview removeConstraint:existingConstraint]; + } + }]; +} + +- (void)removeAlignmentConstraintsToSuperview { + NSArray *superviewConstraintsCopy = [self.superview.constraints copy]; + [superviewConstraintsCopy enumerateObjectsUsingBlock:^(NSLayoutConstraint *existingConstraint, NSUInteger idx, BOOL *stop) { + BOOL firstItemSelfSecondItemSuperview = existingConstraint.firstItem == self && existingConstraint.secondItem == self.superview; + BOOL firstItemSuperviewSecondItemSelf = existingConstraint.firstItem == self.superview && existingConstraint.secondItem == self; + BOOL attributesEqual = existingConstraint.firstAttribute == existingConstraint.secondAttribute; + BOOL isWidthOrHeightConstraint = existingConstraint.firstAttribute == NSLayoutAttributeWidth || existingConstraint.firstAttribute == NSLayoutAttributeHeight; + BOOL invalidConstraint = (firstItemSelfSecondItemSuperview || firstItemSuperviewSecondItemSelf) && attributesEqual && !isWidthOrHeightConstraint; + if (invalidConstraint) { + [self.superview removeConstraint:existingConstraint]; + } + }]; +} + +- (void)removeSizeConstraint { + NSLayoutConstraint *widthConstraint; + NSLayoutConstraint *heightConstraint; + [self extractWidthConstraint:&widthConstraint + heightConstraint:&heightConstraint]; + + if (widthConstraint) { + [self removeConstraint:widthConstraint]; + } + if (heightConstraint) { + [self removeConstraint:heightConstraint]; + } +} + +- (void)extractWidthConstraint:(NSLayoutConstraint **)widthConstraint + heightConstraint:(NSLayoutConstraint **)heightConstraint { + [self.constraints enumerateObjectsUsingBlock:^(NSLayoutConstraint *existingConstraint, NSUInteger idx, BOOL *stop) { + BOOL constraintOnlyOnSelf = existingConstraint.firstItem == self && existingConstraint.secondAttribute == NSLayoutAttributeNotAnAttribute && existingConstraint.secondItem == nil; + BOOL constraintIsWidthConstraint = existingConstraint.firstAttribute == NSLayoutAttributeWidth && constraintOnlyOnSelf; + BOOL constraintIsHeightConstraint = existingConstraint.firstAttribute == NSLayoutAttributeHeight && constraintOnlyOnSelf; + if (constraintIsWidthConstraint) { + *widthConstraint = existingConstraint; + } + if (constraintIsHeightConstraint) { + *heightConstraint = existingConstraint; + } + }]; +} + @end diff --git a/sdk/Categories/UIWebView+ANCategory.m b/sdk/Categories/UIWebView+ANCategory.m index 9514a590a..d0d832753 100644 --- a/sdk/Categories/UIWebView+ANCategory.m +++ b/sdk/Categories/UIWebView+ANCategory.m @@ -21,75 +21,22 @@ @implementation UIWebView (ANCategory) -- (void)removeDocumentPadding; -{ +- (void)removeDocumentPadding { [self stringByEvaluatingJavaScriptFromString:kANAdRemovePaddingJavascriptString]; } - (void)setMediaProperties { - if ([self respondsToSelector:@selector(setAllowsInlineMediaPlayback:)]) { - [self setAllowsInlineMediaPlayback:YES]; - } - if ([self respondsToSelector:@selector(setMediaPlaybackRequiresUserAction:)]) { - [self setMediaPlaybackRequiresUserAction:NO]; - } + [self setAllowsInlineMediaPlayback:YES]; + [self setMediaPlaybackRequiresUserAction:NO]; } -- (void)setScrollEnabled:(BOOL)scrollable -{ - #if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0 - // If iOS 5.0 and up, we can turn off scrolling using the directly-accessible -scrollView of UIWebView - if ([self respondsToSelector:@selector(scrollView)]) - { - UIScrollView *scrollView = self.scrollView; - scrollView.scrollEnabled = scrollable; - scrollView.bounces = scrollable; - } - else - // If less than iOS 5.0, we need to get the UIScrollView by searching through the UIWebView's subviews - #endif - { - UIScrollView *scrollView = nil; - - for (UIView *view in self.subviews) - { - if ([view isKindOfClass:[UIScrollView class]]) - { - scrollView = (UIScrollView *)view; - break; - } - } - - scrollView.scrollEnabled = scrollable; - scrollView.bounces = scrollable; - } +- (void)setScrollEnabled:(BOOL)scrollable { + self.scrollView.scrollEnabled = scrollable; + self.scrollView.bounces = scrollable; } -- (BOOL)isScrollEnabled -{ -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0 - // If iOS 5.0 and up, we can turn off scrolling using the directly-accessible -scrollView of UIWebView - if ([self respondsToSelector:@selector(scrollView)]) - { - return self.scrollView.isScrollEnabled; - } - else - // If less than iOS 5.0, we need to get the UIScrollView by searching through the UIWebView's subviews -#endif - { - UIScrollView *scrollView = nil; - - for (UIView *view in self.subviews) - { - if ([view isKindOfClass:[UIScrollView class]]) - { - scrollView = (UIScrollView *)view; - break; - } - } - - return scrollView.isScrollEnabled; - } +- (BOOL)isScrollEnabled{ + return self.scrollView.isScrollEnabled; } -@end +@end \ No newline at end of file diff --git a/sdk/Resources/ANBrowserViewController.xib b/sdk/Resources/ANBrowserViewController.xib index a90f73c9b..7b977f264 100644 --- a/sdk/Resources/ANBrowserViewController.xib +++ b/sdk/Resources/ANBrowserViewController.xib @@ -1,13 +1,12 @@ - + - + - @@ -63,10 +62,6 @@ - @@ -77,4 +72,9 @@ - \ No newline at end of file + + + + + + diff --git a/sdk/Resources/MRAID.bundle/mraid.js b/sdk/Resources/ANMRAID.bundle/mraid.js similarity index 100% rename from sdk/Resources/MRAID.bundle/mraid.js rename to sdk/Resources/ANMRAID.bundle/mraid.js diff --git a/sdk/internal/ANAdFetcher.m b/sdk/internal/ANAdFetcher.m index 8fdc74d27..ac1554851 100644 --- a/sdk/internal/ANAdFetcher.m +++ b/sdk/internal/ANAdFetcher.m @@ -51,7 +51,7 @@ @interface ANAdFetcher () @implementation ANAdFetcher -- (id)init +- (instancetype)init { if (self = [super init]) { @@ -138,8 +138,7 @@ - (void)requestAdWithURL:(NSURL *)URL } else { - NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:NSLocalizedString(@"Unable to make request due to bad URL connection.", @"Error: Bad URL connection.") - forKey:NSLocalizedDescriptionKey]; + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Unable to make request due to bad URL connection.", @"Error: Bad URL connection.")}; NSError *badURLConnectionError = [NSError errorWithDomain:AN_ERROR_DOMAIN code:ANAdResponseBadURLConnection userInfo:errorInfo]; ANAdResponse *response = [ANAdResponse adResponseFailWithError:badURLConnectionError]; [self processFinalResponse:response]; @@ -147,8 +146,7 @@ - (void)requestAdWithURL:(NSURL *)URL } else { - NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:NSLocalizedString(@"Unable to make request due to malformed URL.", @"Error: Malformed URL") - forKey:NSLocalizedDescriptionKey]; + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Unable to make request due to malformed URL.", @"Error: Malformed URL")}; NSError *badURLError = [NSError errorWithDomain:AN_ERROR_DOMAIN code:ANAdResponseBadURL userInfo:errorInfo]; ANAdResponse *response = [ANAdResponse adResponseFailWithError:badURLError]; [self processFinalResponse:response]; @@ -249,8 +247,7 @@ - (void)processAdResponse:(ANAdResponse *)response if (!responseAdsExist && !oldAdsExist) { ANLogWarn(ANErrorString(@"response_no_ads")); - NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:NSLocalizedString(@"Request got successful response from server, but no ads were available.", @"Error: Response was received, but it contained no ads") - forKey:NSLocalizedDescriptionKey]; + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Request got successful response from server, but no ads were available.", @"Error: Response was received, but it contained no ads")}; [self finishRequestWithErrorAndRefresh:errorInfo code:ANAdResponseUnableToFill]; return; } @@ -395,10 +392,9 @@ - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLRespon if (status >= 400) { [connection cancel]; - NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:[NSString stringWithFormat: + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: [NSString stringWithFormat: NSLocalizedString(@"Request failed with status code %d", @"Error Description: server request came back with error code."), - status] - forKey:NSLocalizedDescriptionKey]; + status]}; NSError *statusError = [NSError errorWithDomain:AN_ERROR_DOMAIN code:ANAdResponseNetworkError userInfo:errorInfo]; @@ -442,8 +438,7 @@ - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)err [self setupAutoRefreshTimerIfNecessary]; - NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:errorMessage - forKey:NSLocalizedDescriptionKey]; + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: errorMessage}; NSError *ANError = [NSError errorWithDomain:AN_ERROR_DOMAIN code:ANAdResponseNetworkError userInfo:errorInfo]; diff --git a/sdk/internal/ANAdRequestUrl.m b/sdk/internal/ANAdRequestUrl.m index eeabd9d29..47ec7efec 100644 --- a/sdk/internal/ANAdRequestUrl.m +++ b/sdk/internal/ANAdRequestUrl.m @@ -141,7 +141,7 @@ - (NSString *)deviceModelParameter { } - (NSString *)applicationIdParameter { - NSString *appId = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; + NSString *appId = [[NSBundle mainBundle] infoDictionary][@"CFBundleIdentifier"]; return [NSString stringWithFormat:@"&appid=%@", appId]; } @@ -206,7 +206,7 @@ - (NSString *)userAgentParameter { } - (NSString *)languageParameter { - NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; + NSString *language = [NSLocale preferredLanguages][0]; return ([language length] > 0) ? [NSString stringWithFormat:@"&language=%@", language] : @""; } diff --git a/sdk/internal/ANAdResponse.m b/sdk/internal/ANAdResponse.m index 65ae872f6..639f6190f 100644 --- a/sdk/internal/ANAdResponse.m +++ b/sdk/internal/ANAdResponse.m @@ -117,7 +117,7 @@ - (ANAdResponse *)processResponseData:(NSData *)data // returns true if no error in status. don't fail on null or missing status -(BOOL)checkStatusIsValid:(NSDictionary *)jsonResponse { - NSString *status = [jsonResponse objectForKey:kResponseKeyStatus]; + NSString *status = jsonResponse[kResponseKeyStatus]; if (status && ([status isEqual: kResponseValueError])) { ANLogError(ANErrorString(@"response_error")); return NO; @@ -128,19 +128,17 @@ -(BOOL)checkStatusIsValid:(NSDictionary *)jsonResponse { // returns true if response contains an ad, false if not - (BOOL)handleStandardAds:(NSDictionary *)jsonResponse { - NSArray *ads = [jsonResponse objectForKey:kResponseKeyAds]; - if (ads && ([ads count] > 0)) - { - // Grab the first ad only - NSDictionary *firstAd = [ads objectAtIndex:0]; - + NSArray *ads = jsonResponse[kResponseKeyAds]; + NSDictionary *firstAd = [ads firstObject]; // nil if there is no first ad + if (firstAd) { // Grab the type of the ad - _type = [firstAd objectForKey:kResponseKeyType]; + _type = firstAd[kResponseKeyType]; // Grab the size of the ad - _width = [firstAd objectForKey:kResponseKeyWidth]; - _height = [firstAd objectForKey:kResponseKeyHeight]; + // response width, height could be NSNumber, use description to extract string. If string, returns itself. + _width = [firstAd[kResponseKeyWidth] description]; + _height = [firstAd[kResponseKeyHeight] description]; // Grab the ad's content - _content = [firstAd objectForKey:kResponseKeyContent]; + _content = firstAd[kResponseKeyContent]; if (!_content || ([_content length] < 1)) { ANLogError(ANErrorString(@"blank_ad")); } @@ -160,48 +158,40 @@ - (BOOL)handleStandardAds:(NSDictionary *)jsonResponse // returns true if response contains an ad, false if not - (BOOL)handleMediatedAds:(NSDictionary *)jsonResponse { - NSArray *mediated = [jsonResponse objectForKey:kResponseKeyMediatedAds]; + NSArray *mediated = jsonResponse[kResponseKeyMediatedAds]; if (mediated && ([mediated count] > 0)) { - _mediatedAds = [[NSMutableArray alloc] initWithCapacity:0]; - for (int i = 0; i < [mediated count]; i++) { - NSDictionary *mediatedElement = [mediated objectAtIndex:i]; - if (mediatedElement) { - NSArray *handler = [mediatedElement objectForKey:kResponseKeyHandler]; - if (handler) { - for (int j = 0; j < [handler count]; j++) { - NSDictionary *handlerElement = [handler objectAtIndex:j]; - if (handlerElement) { - NSString *type = [handlerElement objectForKey:kResponseKeyType]; - // check that the mediated ad is for ios - if (type && [[type lowercaseString] isEqual: kResponseValueIOS]) { - // Grab the mediation network adapter's class string - NSString *className = [handlerElement objectForKey:kResponseKeyClass]; - // Grab any extra user info included with the ad request - NSString *param = [handlerElement objectForKey:kResponseKeyParam]; - // Grab dimensions - NSString *width = [handlerElement objectForKey:kResponseKeyWidth]; - NSString *height = [handlerElement objectForKey:kResponseKeyHeight]; - // Grab placement id associated with mediated network - NSString *adId = [handlerElement objectForKey:kResponseKeyId]; - - NSString *resultCB = [mediatedElement objectForKey:kResponseKeyResultCB]; - - NSString *auctionInfo = [mediatedElement objectForKey:kResponseKeyAuctionInfo]; - - ANMediatedAd *mediatedAd = [ANMediatedAd new]; - mediatedAd.className = className; - mediatedAd.param = param; - mediatedAd.width = width; - mediatedAd.height = height; - mediatedAd.adId = adId; - mediatedAd.resultCB = resultCB; - mediatedAd.auctionInfo = auctionInfo; - - if ([mediatedAd.className length] > 0) - [_mediatedAds addObject:mediatedAd]; - } - } - } + _mediatedAds = [[NSMutableArray alloc] initWithCapacity:[mediated count]]; // Capacity is a performance hint + for (NSDictionary *mediatedElement in mediated) { + NSArray *handler = mediatedElement[kResponseKeyHandler]; + for (NSDictionary *handlerElement in handler) { + NSString *type = handlerElement[kResponseKeyType]; + // check that the mediated ad is for ios + if (type && [[type lowercaseString] isEqual: kResponseValueIOS]) { + // Grab the mediation network adapter's class string + NSString *className = handlerElement[kResponseKeyClass]; + // Grab any extra user info included with the ad request + NSString *param = handlerElement[kResponseKeyParam]; + // Grab dimensions + NSString *width = [handlerElement[kResponseKeyWidth] description]; + NSString *height = [handlerElement[kResponseKeyHeight] description]; + // Grab placement id associated with mediated network + NSString *adId = handlerElement[kResponseKeyId]; + + NSString *resultCB = mediatedElement[kResponseKeyResultCB]; + + NSString *auctionInfo = mediatedElement[kResponseKeyAuctionInfo]; + + ANMediatedAd *mediatedAd = [ANMediatedAd new]; + mediatedAd.className = className; + mediatedAd.param = param; + mediatedAd.width = width; + mediatedAd.height = height; + mediatedAd.adId = adId; + mediatedAd.resultCB = resultCB; + mediatedAd.auctionInfo = auctionInfo; + + if ([mediatedAd.className length] > 0) + [_mediatedAds addObject:mediatedAd]; } } } diff --git a/sdk/internal/ANAdView.m b/sdk/internal/ANAdView.m index e8428014e..0d7caed5c 100644 --- a/sdk/internal/ANAdView.m +++ b/sdk/internal/ANAdView.m @@ -63,6 +63,7 @@ @implementation ANADVIEW @synthesize age = __age; @synthesize gender = __gender; @synthesize customKeywords = __customKeywords; +@synthesize landingPageLoadsInBackground = __landingPageLoadsInBackground; // ANMRAIDEventReceiver @synthesize mraidEventReceiverDelegate = __mraidEventReceiverDelegate; @@ -86,7 +87,7 @@ - (void)openInBrowserWithController:(ANBrowserViewController *)browserViewContro #pragma mark Initialization -- (id)init { +- (instancetype)init { self = [super init]; if (self != nil) { @@ -114,11 +115,12 @@ - (void)initialize { __location = nil; __reserve = 0.0f; __customKeywords = [[NSMutableDictionary alloc] init]; + __landingPageLoadsInBackground = YES; } - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - + self.adFetcher.delegate = nil; [self.adFetcher stopAd]; // MUST be called. stopAd invalidates the autoRefresh timer, which is retaining the adFetcher as well. @@ -140,8 +142,7 @@ - (void)loadAd { if (errorString) { ANLogError(errorString); - NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:errorString - forKey:NSLocalizedDescriptionKey]; + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: errorString}; NSError *error = [NSError errorWithDomain:AN_ERROR_DOMAIN code:ANAdResponseInvalidRequest userInfo:errorInfo]; [self adRequestFailedWithError:error]; return; @@ -228,7 +229,7 @@ - (void)mraidExpandAd:(CGSize)size [self adDidPresent]; }]; } else { - CGRect orientedScreenBounds = adjustAbsoluteRectInWindowCoordinatesForOrientationGivenRect([UIScreen mainScreen].bounds); + CGRect orientedScreenBounds = adjustAbsoluteRectInWindowCoordinatesForOrientationGivenRect(ANPortraitScreenBounds()); if (size.width == -1) size.width = orientedScreenBounds.size.width; if (size.height == -1) size.height = orientedScreenBounds.size.height; @@ -308,7 +309,7 @@ - (NSString *)mraidResizeAd:(CGRect)frame - (NSString *)isResizeValid:(UIView *)contentView frameToResizeTo:(CGRect)frame { // for comparing to - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGRect orientedScreenBounds = adjustAbsoluteRectInWindowCoordinatesForOrientationGivenRect(screenBounds); // don't allow resizing to be larger than the screen in both directions @@ -407,7 +408,7 @@ - (void)mraidResizeAddCloseEventRegion:(UIButton *)closeEventRegion } // compute the absolute frame of the close event region - CGRect screenBounds = [UIScreen mainScreen].bounds; + CGRect screenBounds = ANPortraitScreenBounds(); CGRect orientedScreenBounds = adjustAbsoluteRectInWindowCoordinatesForOrientationGivenRect(screenBounds); CGRect containerAbsoluteFrame = [containerView convertRect:containerView.bounds toView:nil]; @@ -434,9 +435,20 @@ - (void)mraidResizeAddCloseEventRegion:(UIButton *)closeEventRegion // add image to the region since it will be in a different // place with no visual cue - UIImage *closeButtonImage = [UIImage imageNamed:@"interstitial_closebox"]; - [closeEventRegion setImage:closeButtonImage forState:UIControlStateNormal]; - [closeEventRegion setImage:[UIImage imageNamed:@"interstitial_closebox_down"] forState:UIControlStateHighlighted]; + + NSBundle *resBundle = ANResourcesBundle(); + if (!resBundle) { + ANLogError(@"Resource not found. Make sure the AppNexusSDKResources bundle is included in project"); + } + + UIImage *closeboxImage = [UIImage imageWithContentsOfFile:[resBundle pathForResource:@"interstitial_closebox" + ofType:@"png"]]; + UIImage *closeboxDown = [UIImage imageWithContentsOfFile:[resBundle pathForResource:@"interstitial_closebox_down" + ofType:@"png"]]; + [closeEventRegion setImage:closeboxImage + forState:UIControlStateNormal]; + [closeEventRegion setImage:closeboxDown + forState:UIControlStateHighlighted]; } closeEventRegion.frame = CGRectMake(closeOriginX, closeOriginY, closeEventRegionSize, closeEventRegionSize); @@ -478,6 +490,16 @@ - (void)setLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude horizontalAccuracy:horizontalAccuracy]; } +- (void)setLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude + timestamp:(NSDate *)timestamp horizontalAccuracy:(CGFloat)horizontalAccuracy + precision:(NSInteger)precision { + self.location = [ANLOCATION getLocationWithLatitude:latitude + longitude:longitude + timestamp:timestamp + horizontalAccuracy:horizontalAccuracy + precision:precision]; +} + - (void)addCustomKeywordWithKey:(NSString *)key value:(NSString *)value { if (([key length] < 1) || !value) { return; @@ -571,11 +593,18 @@ - (void)adFetcher:(ANAdFetcher *)fetcher adShouldOpenInBrowserWithURL:(NSURL *)U if (!self.opensInNativeBrowser && hasHttpPrefix([URL scheme])) { if (!self.browserViewController) { - [self showClickOverlay]; self.browserViewController = [[ANBrowserViewController alloc] initWithURL:URL]; self.browserViewController.delegate = self; + if (self.landingPageLoadsInBackground) { + [self showClickOverlay]; + } else { + [self browserViewControllerShouldPresent:self.browserViewController]; + } } else { - ANLogDebug(@"%@ | Attempt to instantiate in-app browser when one is already being instantiated.", NSStringFromSelector(_cmd)); + if (self.browserViewController.completedInitialLoad) { + [self browserViewControllerShouldPresent:self.browserViewController]; + } + self.browserViewController.url = URL; } } else if ([[UIApplication sharedApplication] canOpenURL:URL]) { @@ -587,7 +616,10 @@ - (void)adFetcher:(ANAdFetcher *)fetcher adShouldOpenInBrowserWithURL:(NSURL *)U } - (ANClickOverlayView *)clickOverlay { - if (!_clickOverlay) _clickOverlay = [ANClickOverlayView overlayForView:[self viewToDisplayClickOverlay]]; + if (!_clickOverlay) { + _clickOverlay = [ANClickOverlayView overlayForView:[self viewToDisplayClickOverlay]]; + _clickOverlay.alpha = 0.0; + } return _clickOverlay; } @@ -596,12 +628,9 @@ - (UIView *)viewToDisplayClickOverlay { } - (void)showClickOverlay { - if (![self.clickOverlay superview]) { - self.clickOverlay.alpha = 0.0; - [[self viewToDisplayClickOverlay] addSubview:self.clickOverlay]; - } [UIView animateWithDuration:0.5 animations:^{ + [[self viewToDisplayClickOverlay] addSubview:self.clickOverlay]; self.clickOverlay.alpha = 1.0; }]; } @@ -611,10 +640,49 @@ - (void)hideClickOverlay { [UIView animateWithDuration:0.5 animations:^{ self.clickOverlay.alpha = 0.0; + } completion:^(BOOL finished) { + [self.clickOverlay removeFromSuperview]; }]; } } +#pragma mark ANBrowserViewControllerDelegate + +- (void)browserViewControllerShouldDismiss:(ANBrowserViewController *)controller { + UIViewController *presentingViewController = controller.presentingViewController; + [presentingViewController dismissViewControllerAnimated:YES completion:^ { + self.browserViewController = nil; + }]; +} + +- (void)browserViewControllerWillLaunchExternalApplication { + [self adWillLeaveApplication]; +} + +- (void)browserViewControllerShouldPresent:(ANBrowserViewController *)controller { + if (!controller.presentingViewController) { + if (self.mraidController.presentingViewController) { + [self.mraidController presentViewController:controller + animated:YES + completion:nil]; + } else { + [self openInBrowserWithController:controller]; + } + } else { + ANLogDebug(@"In-app browser already presented - ignoring call to present"); + } +} + +- (void)browserViewController:(ANBrowserViewController *)controller browserIsLoading:(BOOL)isLoading { + if (self.landingPageLoadsInBackground) { + if (!controller.completedInitialLoad) { + isLoading ? [self showClickOverlay] : [self hideClickOverlay]; + } else { + [self hideClickOverlay]; + } + } +} + #pragma mark ANMRAIDAdViewDelegate - (void)adShouldResetToDefault:(UIView *)contentView @@ -645,36 +713,6 @@ - (void)adShouldResetToDefault:(UIView *)contentView [self.mraidEventReceiverDelegate adDidResetToDefault]; } -#pragma mark ANBrowserViewControllerDelegate - -- (void)browserViewControllerShouldDismiss:(ANBrowserViewController *)controller { - UIViewController *presentingViewController = controller.presentingViewController; - [presentingViewController dismissViewControllerAnimated:YES completion:^ { - self.browserViewController = nil; - [self hideClickOverlay]; - }]; -} - -- (void)browserViewControllerWillLaunchExternalApplication { - [self hideClickOverlay]; - [self adWillLeaveApplication]; -} - -- (void)browserViewControllerShouldPresent:(ANBrowserViewController *)controller { - [self hideClickOverlay]; - if (self.mraidController.presentingViewController) { - [self.mraidController presentViewController:controller animated:YES completion:nil]; - } else { - [self openInBrowserWithController:controller]; - } -} - -- (void)browserViewControllerWillNotPresent:(ANBrowserViewController *)controller { - ANLogWarn(@"%@", NSStringFromSelector(_cmd)); - self.browserViewController = nil; - [self hideClickOverlay]; -} - #pragma mark ANAdViewDelegate - (void)adWasClicked { diff --git a/sdk/internal/ANAdViewDelegate.h b/sdk/internal/ANAdViewDelegate.h index bef333a99..a7921ae2b 100644 --- a/sdk/internal/ANAdViewDelegate.h +++ b/sdk/internal/ANAdViewDelegate.h @@ -27,4 +27,7 @@ // for interstitials only - (void)adFailedToDisplay; -@end + +@optional +- (void)transitionInProgress; +@end \ No newline at end of file diff --git a/sdk/internal/ANAdWebViewController.m b/sdk/internal/ANAdWebViewController.m index ad011dee8..048223fa0 100644 --- a/sdk/internal/ANAdWebViewController.m +++ b/sdk/internal/ANAdWebViewController.m @@ -38,7 +38,7 @@ @interface ANMRAIDAdWebViewController () @property (nonatomic, readwrite, assign) BOOL completedFirstLoad; @property (nonatomic, readwrite, assign) BOOL expanded; @property (nonatomic, readwrite, assign) BOOL resized; -@property (nonatomic, readwrite, assign) NSTimer *viewabilityTimer; +@property (nonatomic, readwrite, strong) NSTimer *viewabilityTimer; @property (nonatomic, readwrite) BOOL isViewable; @property (nonatomic, readwrite) CGRect defaultPosition; @property (nonatomic, readwrite) CGRect currentPosition; @@ -188,7 +188,7 @@ - (BOOL)getWebViewVisible { } if (isInHiddenSuperview) return NO; - CGRect screenBounds = [UIScreen mainScreen].bounds; + CGRect screenBounds = ANPortraitScreenBounds(); CGRect newBounds = [self.webView convertRect:self.webView.bounds toView:nil]; BOOL isOnScreen = CGRectIntersectsRect(newBounds, screenBounds); if (!isOnScreen) return NO; @@ -299,7 +299,7 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *) - (void)setMaxSizeForMRAIDGetMaxSizeFunction:(UIWebView*) webView{ UIApplication *application = [UIApplication sharedApplication]; BOOL orientationIsPortrait = UIInterfaceOrientationIsPortrait([application statusBarOrientation]); - CGSize screenSize = [[UIScreen mainScreen] bounds].size; + CGSize screenSize = ANPortraitScreenBounds().size; int orientedWidth = orientationIsPortrait ? screenSize.width : screenSize.height; int orientedHeight = orientationIsPortrait ? screenSize.height : screenSize.width; @@ -311,8 +311,9 @@ - (void)setMaxSizeForMRAIDGetMaxSizeFunction:(UIWebView*) webView{ } - (void)setScreenSizeForMRAIDGetScreenSizeFunction:(UIWebView*)webView{ + BOOL orientationIsPortrait = UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]); - CGSize screenSize = [[UIScreen mainScreen] bounds].size; + CGSize screenSize = ANPortraitScreenBounds().size; int orientedWidth = orientationIsPortrait ? screenSize.width : screenSize.height; int orientedHeight = orientationIsPortrait ? screenSize.height : screenSize.width; @@ -376,19 +377,19 @@ - (void)dispatchNativeMRAIDURL:(NSURL *)mraidURL forWebView:(UIWebView *)webView [self resizeAction:webView queryComponents:queryComponents]; } else if([mraidCommand isEqualToString:@"createCalendarEvent"]) { [self.adFetcherDelegate adWasClicked]; - NSString *w3cEventJson = [queryComponents objectForKey:@"p"]; + NSString *w3cEventJson = queryComponents[@"p"]; [self createCalendarEventFromW3CCompliantJSONObject:w3cEventJson]; } else if([mraidCommand isEqualToString:@"playVideo"]) { [self.adFetcherDelegate adWasClicked]; [self playVideo:queryComponents]; } else if([mraidCommand isEqualToString:@"storePicture"]) { [self.adFetcherDelegate adWasClicked]; - NSString *uri = [queryComponents objectForKey:@"uri"]; + NSString *uri = queryComponents[@"uri"]; [self storePicture:uri]; } else if([mraidCommand isEqualToString:@"setOrientationProperties"]) { [self setOrientationProperties:queryComponents]; } else if([mraidCommand isEqualToString:@"open"]){ - NSString *uri = [queryComponents objectForKey:@"uri"]; + NSString *uri = queryComponents[@"uri"]; [self open:uri]; } else if ([mraidCommand isEqualToString:@"enable"]) { if (self.isMRAID) return; @@ -454,10 +455,10 @@ - (void)setExpanded:(BOOL)expanded { } - (void)expandAction:(UIWebView *)webView queryComponents:(NSDictionary *)queryComponents { - NSInteger expandedHeight = [[queryComponents objectForKey:@"h"] integerValue]; - NSInteger expandedWidth = [[queryComponents objectForKey:@"w"] integerValue]; - NSString *useCustomClose = [queryComponents objectForKey:@"useCustomClose"]; - NSString *url = [queryComponents objectForKey:@"url"]; + NSInteger expandedHeight = [queryComponents[@"h"] integerValue]; + NSInteger expandedWidth = [queryComponents[@"w"] integerValue]; + NSString *useCustomClose = queryComponents[@"useCustomClose"]; + NSString *url = queryComponents[@"url"]; [self setOrientationProperties:queryComponents]; @@ -475,29 +476,31 @@ - (void)expandAction:(UIWebView *)webView queryComponents:(NSDictionary *)queryC } - (void)resizeAction:(UIWebView *)webView queryComponents:(NSDictionary *)queryComponents { - int w = [[queryComponents objectForKey:@"w"] intValue]; - int h = [[queryComponents objectForKey:@"h"] intValue]; - int offsetX = [[queryComponents objectForKey:@"offset_x"] intValue]; - int offsetY = [[queryComponents objectForKey:@"offset_y"] intValue]; - NSString* customClosePosition = [queryComponents objectForKey:@"custom_close_position"]; - BOOL allowOffscreen = [[queryComponents objectForKey:@"allow_offscreen"] boolValue]; + int w = [queryComponents[@"w"] intValue]; + int h = [queryComponents[@"h"] intValue]; + int offsetX = [queryComponents[@"offset_x"] intValue]; + int offsetY = [queryComponents[@"offset_y"] intValue]; + NSString* customClosePosition = queryComponents[@"custom_close_position"]; + BOOL allowOffscreen = [queryComponents[@"allow_offscreen"] boolValue]; ANMRAIDCustomClosePosition closePosition = [self getCustomClosePositionFromString:customClosePosition]; - [self.mraidDelegate adShouldResizeToFrame:CGRectMake(offsetX, offsetY, w, h) allowOffscreen:allowOffscreen closeButton:[self resizeCloseButton] closePosition:closePosition]; - + [self.mraidDelegate adShouldResizeToFrame:CGRectMake(offsetX, offsetY, w, h) + allowOffscreen:allowOffscreen + closeButton:[self resizeCloseButton] + closePosition:closePosition]; self.resized = YES; } - (void)playVideo:(NSDictionary *)queryComponents { - NSString *uri = [queryComponents objectForKey:@"uri"]; + NSString *uri = queryComponents[@"uri"]; NSURL *url = [NSURL URLWithString:uri]; MPMoviePlayerViewController *moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; moviePlayerViewController.moviePlayer.fullscreen = YES; moviePlayerViewController.moviePlayer.shouldAutoplay = YES; moviePlayerViewController.moviePlayer.movieSourceType = MPMovieSourceTypeFile; - moviePlayerViewController.moviePlayer.view.frame = [[UIScreen mainScreen] bounds]; + moviePlayerViewController.moviePlayer.view.frame = ANPortraitScreenBounds(); moviePlayerViewController.moviePlayer.controlStyle = MPMovieControlStyleFullscreen; [[NSNotificationCenter defaultCenter] addObserver:self @@ -520,17 +523,17 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ NSDictionary* jsonDict = [NSJSONSerialization JSONObjectWithData:[json dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error]; ANLogDebug(@"%@ | NSDictionary from JSON Calendar Object: %@", NSStringFromSelector(_cmd), jsonDict); - NSString* description = [jsonDict objectForKey:@"description"]; - NSString* location = [jsonDict objectForKey:@"location"]; - NSString* summary = [jsonDict objectForKey:@"summary"]; - NSString* start = [jsonDict objectForKey:@"start"]; - NSString* end = [jsonDict objectForKey:@"end"]; - NSString* status = [jsonDict objectForKey:@"status"]; + NSString* description = jsonDict[@"description"]; + NSString* location = jsonDict[@"location"]; + NSString* summary = jsonDict[@"summary"]; + NSString* start = jsonDict[@"start"]; + NSString* end = jsonDict[@"end"]; + NSString* status = jsonDict[@"status"]; /* * iOS Not supported - * NSString* transparency = [jsonDict objectForKey:@"transparency"]; + * NSString* transparency = jsonDict[@"transparency"]; */ - NSString* reminder = [jsonDict objectForKey:@"reminder"]; + NSString* reminder = jsonDict[@"reminder"]; EKEventStore* store = [[EKEventStore alloc] init]; [store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error){ @@ -600,9 +603,9 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ } - NSDictionary* repeat = [jsonDict objectForKey:@"recurrence"]; + NSDictionary* repeat = jsonDict[@"recurrence"]; if ([repeat isKindOfClass:[NSDictionary class]]) { - NSString* frequency = [repeat objectForKey:@"frequency"]; + NSString* frequency = repeat[@"frequency"]; EKRecurrenceFrequency frequency_ios; if ([frequency isEqualToString:@"daily"]) frequency_ios = EKRecurrenceFrequencyDaily; @@ -614,12 +617,12 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ return; } - int interval = [[repeat objectForKey:@"interval"] intValue]; + int interval = [repeat[@"interval"] intValue]; if (interval < 1) { interval = 1; } - NSString* expires = [repeat objectForKey:@"expires"]; + NSString* expires = repeat[@"expires"]; //expires EKRecurrenceEnd* end; if([df1 dateFromString:expires]!=nil){ @@ -632,10 +635,10 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ /* * iOS Not supported - * NSArray* exceptionDates = [repeat objectForKey:@"exceptionDates"]; + * NSArray* exceptionDates = repeat[@"exceptionDates"]; */ - NSMutableArray* daysInWeek = [[repeat objectForKey:@"daysInWeek"] mutableCopy]; // Need a mutable copy of the array in order to transform NSNumber => EKRecurrenceDayOfWeek + NSMutableArray* daysInWeek = [repeat[@"daysInWeek"] mutableCopy]; // Need a mutable copy of the array in order to transform NSNumber => EKRecurrenceDayOfWeek for (NSInteger daysInWeekIndex=0; daysInWeekIndex < [daysInWeek count]; daysInWeekIndex++) { NSInteger dayInWeekValue = [daysInWeek[daysInWeekIndex] integerValue]; // W3 value should be between 0 and 6 inclusive. @@ -649,13 +652,13 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ NSMutableArray* daysInMonth = nil; // Only valid for EKRecurrenceFrequencyMonthly if (frequency_ios == EKRecurrenceFrequencyMonthly) { - NSMutableArray* daysInMonth = [[repeat objectForKey:@"daysInMonth"] mutableCopy]; + NSMutableArray* daysInMonth = [repeat[@"daysInMonth"] mutableCopy]; for (NSInteger daysInMonthIndex=0; daysInMonthIndex < [daysInMonth count]; daysInMonthIndex++) { NSInteger dayInMonthValue = [daysInMonth[daysInMonthIndex] integerValue]; // W3 value should be between -30 and 31 inclusive. if (dayInMonthValue >= -30 && dayInMonthValue <= 31) { if (dayInMonthValue <= 0) { // W3 reverse values from 0 to -30, Apple reverse values from -1 to -31 (0 and -1 meaning last day of month respectively) - daysInMonth[daysInMonthIndex] = [NSNumber numberWithInteger:dayInMonthValue-1]; + daysInMonth[daysInMonthIndex] = @(dayInMonthValue-1); } } else { ANLogWarn(@"%@ | Invalid W3 day of month passed in: %d. Value should be between -30 and 31 inclusive.", NSStringFromSelector(_cmd), dayInMonthValue); @@ -663,7 +666,7 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ } } - NSArray* weeksInMonth = [repeat objectForKey:@"weeksInMonth"]; // Need to implement W3 weeksInMonth for monthly occurrences + NSArray* weeksInMonth = repeat[@"weeksInMonth"]; // Need to implement W3 weeksInMonth for monthly occurrences NSMutableArray *updatedDaysInWeek = [[NSMutableArray alloc] init]; for (NSNumber* weekNumber in weeksInMonth) { @@ -689,7 +692,7 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ NSMutableArray* daysInYear = nil; if (frequency_ios == EKRecurrenceFrequencyYearly) { - monthsInYear = [repeat objectForKey:@"monthsInYear"]; // Apple & W3 valid values from 1 to 12, inclusive. + monthsInYear = repeat[@"monthsInYear"]; // Apple & W3 valid values from 1 to 12, inclusive. for (NSNumber *monthInYear in monthsInYear) { NSInteger monthInYearValue = [monthInYear integerValue]; @@ -699,13 +702,13 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ } } - daysInYear = [[repeat objectForKey:@"daysInYear"] mutableCopy]; + daysInYear = [repeat[@"daysInYear"] mutableCopy]; for (NSInteger daysInYearIndex=0; daysInYearIndex < [daysInYear count]; daysInYearIndex++) { NSInteger dayInYearValue = [daysInYear[daysInYearIndex] integerValue]; // W3 value should be between -364 and 365 inclusive. (W3 doesn't care about leap years?) if (dayInYearValue >= -364 && dayInYearValue <= 365) { if (dayInYearValue <= 0) { // W3 reverse values from 0 to -364, Apple reverse values from -1 to -366 - daysInYear[daysInYearIndex] = [NSNumber numberWithInteger:dayInYearValue-1]; + daysInYear[daysInYearIndex] = @(dayInYearValue-1); } } else { ANLogWarn(@"%@ | Invalid W3 day of year passed in: %d. Value should be between -364 and 365 inclusive.", NSStringFromSelector(_cmd), dayInYearValue); @@ -725,7 +728,7 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ end:end]; if (rrule) { // EKRecurrenceRule will return nil if invalid values are passed in - [event setRecurrenceRules:[NSArray arrayWithObjects:rrule, nil]]; + [event setRecurrenceRules:@[rrule]]; ANLogDebug(@"%@ | Created Recurrence Rule: %@", NSStringFromSelector(_cmd), rrule); } else { ANLogWarn(@"%@ | Invalid EKRecurrenceRule Values Passed In.", NSStringFromSelector(_cmd)); @@ -745,8 +748,8 @@ - (void)createCalendarEventFromW3CCompliantJSONObject:(NSString *)json{ - (void)setOrientationProperties:(NSDictionary *)queryComponents { - NSString *allow = [queryComponents objectForKey:@"allow_orientation_change"]; - NSString *forcedOrientation = [queryComponents objectForKey:@"force_orientation"]; + NSString *allow = queryComponents[@"allow_orientation_change"]; + NSString *forcedOrientation = queryComponents[@"force_orientation"]; ANMRAIDOrientation mraidOrientation = ANMRAIDOrientationNone; if ([forcedOrientation isEqualToString:@"none"]) { @@ -790,12 +793,22 @@ - (UIButton *)expandCloseButton { action:@selector(closeAction:) forControlEvents:UIControlEventTouchUpInside]; - UIImage *closeButtonImage = [UIImage imageNamed:@"interstitial_closebox"]; - [closeButton setImage:closeButtonImage forState:UIControlStateNormal]; - [closeButton setImage:[UIImage imageNamed:@"interstitial_closebox_down"] forState:UIControlStateHighlighted]; + NSBundle *resBundle = ANResourcesBundle(); + if (!resBundle) { + ANLogError(@"Resource not found. Make sure the AppNexusSDKResources bundle is included in project"); + } + + UIImage *closeboxImage = [UIImage imageWithContentsOfFile:[resBundle pathForResource:@"interstitial_closebox" + ofType:@"png"]]; + UIImage *closeboxDown = [UIImage imageWithContentsOfFile:[resBundle pathForResource:@"interstitial_closebox_down" + ofType:@"png"]]; + [closeButton setImage:closeboxImage + forState:UIControlStateNormal]; + [closeButton setImage:closeboxDown + forState:UIControlStateHighlighted]; // setFrame here in order to pass the size dimensions along - [closeButton setFrame:CGRectMake(0, 0, closeButtonImage.size.width, closeButtonImage.size.height)]; + [closeButton setFrame:CGRectMake(0, 0, closeboxImage.size.width, closeboxImage.size.height)]; return closeButton; } diff --git a/sdk/internal/ANBannerAdView.m b/sdk/internal/ANBannerAdView.m index 97b48edc4..f1e40ace4 100644 --- a/sdk/internal/ANBannerAdView.m +++ b/sdk/internal/ANBannerAdView.m @@ -23,6 +23,7 @@ #import "ANMRAIDViewController.h" #import "UIView+ANCategory.h" #import "UIWebView+ANCategory.h" +#import "ANBannerAdView+ANContentViewTransitions.h" #define DEFAULT_ADSIZE CGSizeZero @@ -100,7 +101,7 @@ + (ANBANNERADVIEW *)adViewWithFrame:(CGRect)frame placementId:(NSString *)placem return [[[self class] alloc] initWithFrame:frame placementId:placementId adSize:size]; } -- (id)initWithFrame:(CGRect)frame { +- (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self != nil) { @@ -110,7 +111,7 @@ - (id)initWithFrame:(CGRect)frame { return self; } -- (id)initWithFrame:(CGRect)frame placementId:(NSString *)placementId { +- (instancetype)initWithFrame:(CGRect)frame placementId:(NSString *)placementId { self = [self initWithFrame:frame]; if (self != nil) { @@ -120,7 +121,7 @@ - (id)initWithFrame:(CGRect)frame placementId:(NSString *)placementId { return self; } -- (id)initWithFrame:(CGRect)frame placementId:(NSString *)placementId adSize:(CGSize)size { +- (instancetype)initWithFrame:(CGRect)frame placementId:(NSString *)placementId adSize:(CGSize)size { self = [self initWithFrame:frame placementId:placementId]; if (self != nil) { @@ -192,13 +193,6 @@ - (void)setFrame:(CGRect)frame { } else { [super setFrame:frame]; } - // center the contentview - CGFloat contentWidth = self.contentView.frame.size.width; - CGFloat contentHeight = self.contentView.frame.size.height; - CGFloat centerX = (self.frame.size.width - contentWidth) / 2; - CGFloat centerY = (self.frame.size.height - contentHeight) / 2; - [self.contentView setFrame: - CGRectMake(centerX, centerY, contentWidth, contentHeight)]; } - (void)setFrame:(CGRect)frame animated:(BOOL)animated { @@ -220,196 +214,21 @@ - (void)setFrame:(CGRect)frame animated:(BOOL)animated { #pragma mark - Transitions - (void)setContentView:(UIView *)newContentView { - NSLog(@"Setting content view!"); if (newContentView != _contentView) { [self removeCloseButton]; - UIView *oldContentView = _contentView; - _contentView = newContentView; - if ([newContentView isKindOfClass:[UIWebView class]]) { UIWebView *webView = (UIWebView *)newContentView; [webView removeDocumentPadding]; [webView setMediaProperties]; } - [self swapOldContentView:oldContentView - withNewContentView:newContentView]; - } -} - -- (void)swapOldContentView:(UIView *)oldContentView - withNewContentView:(UIView *)newContentView { - if (self.transitionType == ANBannerViewAdTransitionTypeNone) { - if (newContentView) { - [self addSubview:newContentView]; - [self removeSubviewsWithException:newContentView]; - } else { - [self removeSubviews]; - } - return; - } - - ANBannerViewAdTransitionType transitionType = self.transitionType; - if ((oldContentView && !newContentView) || (newContentView && !oldContentView)) { - transitionType = ANBannerViewAdTransitionTypeFade; - } - - ANBannerViewAdTransitionDirection transitionDirection = self.transitionDirection; - if (transitionDirection == ANBannerViewAdTransitionDirectionRandom) { - transitionDirection = arc4random_uniform(4); - } - - if (transitionType != ANBannerViewAdTransitionTypeFlip) { - newContentView.hidden = YES; - } - - if (newContentView) { - [self addSubview:newContentView]; - } - - self.transitionInProgress = @(YES); - - [UIView animateWithDuration:self.transitionDuration - animations:^{ - if (transitionType == ANBannerViewAdTransitionTypeFlip) { - CAKeyframeAnimation *oldContentViewAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; - oldContentViewAnimation.values = [self keyFrameValuesForOldContentViewFlipAnimationWithDirection:transitionDirection]; - oldContentViewAnimation.delegate = self; - oldContentViewAnimation.duration = self.transitionDuration; - [oldContentView.layer addAnimation:oldContentViewAnimation - forKey:@"oldContentView"]; - - CAKeyframeAnimation *newContentViewAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; - newContentViewAnimation.values = [self keyFrameValuesForNewContentViewFlipAnimationWithDirection:transitionDirection]; - newContentViewAnimation.duration = self.transitionDuration; - [newContentView.layer addAnimation:newContentViewAnimation - forKey:@"newContentView"]; - } else { - CATransition *transition = [CATransition animation]; - transition.startProgress = 0; - transition.endProgress = 1.0; - transition.type = [[self class] CATransitionTypeFromANTransitionType:transitionType]; - transition.subtype = [[self class] CATransitionSubtypeFromANTransitionDirection:transitionDirection - withANTransitionType:transitionType]; - transition.duration = self.transitionDuration; - transition.delegate = self; - - [oldContentView.layer addAnimation:transition - forKey:@"transition"]; - [newContentView.layer addAnimation:transition - forKey:@"transition"]; - - newContentView.hidden = NO; - oldContentView.hidden = YES; - } - }]; -} - -+ (NSString *)CATransitionSubtypeFromANTransitionDirection:(ANBannerViewAdTransitionDirection)transitionDirection - withANTransitionType:(ANBannerViewAdTransitionType)transitionType { - if (transitionType == ANBannerViewAdTransitionTypeFade) { - return kCATransitionFade; - } - - switch (transitionDirection) { - case ANBannerViewAdTransitionDirectionUp: - return kCATransitionFromTop; - case ANBannerViewAdTransitionDirectionDown: - return kCATransitionFromBottom; - case ANBannerViewAdTransitionDirectionLeft: - return kCATransitionFromRight; - case ANBannerViewAdTransitionDirectionRight: - return kCATransitionFromLeft; - default: - return kCATransitionFade; - } -} - -+ (NSString *)CATransitionTypeFromANTransitionType:(ANBannerViewAdTransitionType)transitionType { - switch (transitionType) { - case ANBannerViewAdTransitionTypeFade: - return kCATransitionPush; - case ANBannerViewAdTransitionTypePush: - return kCATransitionPush; - case ANBannerViewAdTransitionTypeMoveIn: - return kCATransitionMoveIn; - case ANBannerViewAdTransitionTypeReveal: - return kCATransitionReveal; - default: - return kCATransitionPush; - } -} - -static NSInteger const kANBannerAdViewNumberOfKeyframeValuesToGenerate = 35; -static CGFloat kANBannerAdViewPerspectiveValue = -1.0 / 750.0; - -- (NSArray *)keyFrameValuesForContentViewFlipAnimationWithDirection:(ANBannerViewAdTransitionDirection)direction - forOldContentView:(BOOL)isOldContentView { - CGFloat angle = 0.0f; - CGFloat x; - CGFloat y; - CGFloat frameFlipDimensionLength = 0.0f; - - switch (direction) { - case ANBannerViewAdTransitionDirectionUp: - x = 1; - y = 0; - angle = isOldContentView ? M_PI_2 : -M_PI_2; - frameFlipDimensionLength = CGRectGetHeight(self.frame); - break; - case ANBannerViewAdTransitionDirectionDown: - x = 1; - y = 0; - angle = isOldContentView ? -M_PI_2: M_PI_2; - frameFlipDimensionLength = CGRectGetHeight(self.frame); - break; - case ANBannerViewAdTransitionDirectionLeft: - x = 0; - y = 1; - angle = isOldContentView ? -M_PI_2 : M_PI_2; - frameFlipDimensionLength = CGRectGetWidth(self.frame); - break; - case ANBannerViewAdTransitionDirectionRight: - x = 0; - y = 1; - angle = isOldContentView ? M_PI_2 : -M_PI_2; - frameFlipDimensionLength = CGRectGetWidth(self.frame); - break; - default: - x = 1; - y = 0; - angle = isOldContentView ? M_PI_2 : -M_PI_2; - frameFlipDimensionLength = CGRectGetHeight(self.frame); - break; - } + UIView *oldContentView = _contentView; + _contentView = newContentView; - NSMutableArray *keyframeValues = [[NSMutableArray alloc] init]; - for (NSInteger valueNumber=0; valueNumber <= kANBannerAdViewNumberOfKeyframeValuesToGenerate; valueNumber++) { - CATransform3D transform = CATransform3DIdentity; - transform.m34 = kANBannerAdViewPerspectiveValue; - transform = CATransform3DTranslate(transform, 0, 0, -frameFlipDimensionLength / 2.0); - transform = CATransform3DRotate(transform, angle * valueNumber / kANBannerAdViewNumberOfKeyframeValuesToGenerate, x, y, 0); - transform = CATransform3DTranslate(transform, 0, 0, frameFlipDimensionLength / 2.0); - [keyframeValues addObject:[NSValue valueWithCATransform3D:transform]]; + [self performTransitionFromContentView:oldContentView + toContentView:newContentView]; } - return isOldContentView ? keyframeValues : [[keyframeValues reverseObjectEnumerator] allObjects]; -} - -- (NSArray *)keyFrameValuesForOldContentViewFlipAnimationWithDirection:(ANBannerViewAdTransitionDirection)direction { - return [self keyFrameValuesForContentViewFlipAnimationWithDirection:direction - forOldContentView:YES]; -} - -- (NSArray *)keyFrameValuesForNewContentViewFlipAnimationWithDirection:(ANBannerViewAdTransitionDirection)direction { - return [self keyFrameValuesForContentViewFlipAnimationWithDirection:direction - forOldContentView:NO]; -} - -- (void)animationDidStop:(CAAnimation *)anim - finished:(BOOL)flag { - [self removeSubviewsWithException:self.contentView]; - self.transitionInProgress = @(NO); } - (NSNumber *)transitionInProgress { @@ -420,16 +239,14 @@ - (NSNumber *)transitionInProgress { #pragma mark Implementation of abstract methods from ANAdView - (void)openInBrowserWithController:(ANBrowserViewController *)browserViewController { - [self adWillPresent]; - if (self.rootViewController.presentingViewController) { // RVC is modal view + BOOL rvcAttachedToWindow = self.rootViewController.view.window ? YES : NO; + if (rvcAttachedToWindow) { + [self adWillPresent]; [self.rootViewController presentViewController:browserViewController animated:YES completion:^{ [self adDidPresent]; }]; } else { - UIViewController *presentingController = [UIApplication sharedApplication].keyWindow.rootViewController; - [presentingController presentViewController:browserViewController animated:YES completion:^{ - [self adDidPresent]; - }]; + ANLogError(@"Cannot present in-app browser - rootViewController not set, or rootViewController not attached to window"); } } @@ -461,10 +278,7 @@ - (NSString *)orientationParameter { #pragma mark ANAdFetcherDelegate - (NSArray *)extraParameters { - return [NSArray arrayWithObjects: - [self sizeParameter], - [self orientationParameter], - nil]; + return @[[self sizeParameter],[self orientationParameter]]; } - (void)adFetcher:(ANAdFetcher *)fetcher didFinishRequestWithResponse:(ANAdResponse *)response { @@ -474,20 +288,11 @@ - (void)adFetcher:(ANAdFetcher *)fetcher didFinishRequestWithResponse:(ANAdRespo UIView *contentView = response.adObject; if ([contentView isKindOfClass:[UIView class]]) { - // center the contentview - CGFloat centerX = (self.frame.size.width - contentView.frame.size.width) / 2; - CGFloat centerY = (self.frame.size.height - contentView.frame.size.height) / 2; - [contentView setFrame: - CGRectMake(centerX, centerY, - contentView.frame.size.width, - contentView.frame.size.height)]; self.contentView = contentView; - [self adDidReceiveAd]; } else { - NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:NSLocalizedString(@"Requested a banner ad but received a non-view object as response.", @"Error: We did not get a viewable object as a response for a banner ad request.") - forKey:NSLocalizedDescriptionKey]; + NSDictionary *errorInfo = @{NSLocalizedDescriptionKey: NSLocalizedString(@"Requested a banner ad but received a non-view object as response.", @"Error: We did not get a viewable object as a response for a banner ad request.")}; error = [NSError errorWithDomain:AN_ERROR_DOMAIN code:ANAdResponseNonViewResponse userInfo:errorInfo]; @@ -527,6 +332,8 @@ - (UIViewController *)displayController { - (void)adShouldExpandToFrame:(CGRect)frame closeButton:(UIButton *)closeButton { + [self resetContentViewForMRAID]; + [super mraidExpandAd:frame.size contentView:self.contentView defaultParentView:self @@ -541,6 +348,8 @@ - (void)adShouldExpandToFrame:(CGRect)frame - (void)adShouldResizeToFrame:(CGRect)frame allowOffscreen:(BOOL)allowOffscreen closeButton:(UIButton *)closeButton closePosition:(ANMRAIDCustomClosePosition)closePosition { + [self resetContentViewForMRAID]; + // resized ads are never modal UIView *contentView = self.contentView; @@ -569,6 +378,15 @@ - (void)adShouldResizeToFrame:(CGRect)frame allowOffscreen:(BOOL)allowOffscreen - (void)adShouldResetToDefault { self.adjustFramesInResizeState = NO; [super adShouldResetToDefault:self.contentView parentView:self]; + [self constrainContentView]; +} + +- (void)resetContentViewForMRAID { + CGRect contentViewFrame = self.contentView.frame; + [self.contentView removeSizeConstraint]; + [self.contentView removeAlignmentConstraintsToSuperview]; + self.contentView.translatesAutoresizingMaskIntoConstraints = YES; + [self.contentView setFrame:contentViewFrame]; } #pragma mark delegate selector helper method diff --git a/sdk/internal/ANBrowserViewController.h b/sdk/internal/ANBrowserViewController.h index 1dcc5218c..c824b5e76 100644 --- a/sdk/internal/ANBrowserViewController.h +++ b/sdk/internal/ANBrowserViewController.h @@ -22,26 +22,30 @@ @property (nonatomic, readwrite, weak) IBOutlet UIBarButtonItem *forwardButton; @property (nonatomic, readwrite, weak) IBOutlet UIBarButtonItem *backButton; @property (nonatomic, readwrite, weak) IBOutlet UIBarButtonItem *doneButton; -@property (nonatomic, readwrite, weak) IBOutlet UIActivityIndicatorView *activityIndicatorView; @property (nonatomic, readwrite, weak) IBOutlet UIBarButtonItem *openInButton; @property (nonatomic, readwrite, weak) IBOutlet UIWebView *webView; -@property (nonatomic, readwrite, weak) id delegate; -- (id)initWithURL:(NSURL *)url; - (IBAction)closeAction:(id)sender; - (IBAction)forwardAction:(id)sender; - (IBAction)backAction:(id)sender; - (IBAction)openInAction:(id)sender; +@property (nonatomic, readonly, assign) BOOL completedInitialLoad; +@property (nonatomic, readonly, assign, getter=isLoading) BOOL loading; +@property (nonatomic, readwrite, strong) NSURL *url; +@property (nonatomic, readwrite, weak) id delegate; + +- (instancetype)initWithURL:(NSURL *)url; + (void)launchURL:(NSURL *)url withDelegate:(id)delegate; @end @protocol ANBrowserViewControllerDelegate +@optional - (void)browserViewControllerShouldDismiss:(ANBrowserViewController *)controller; - (void)browserViewControllerShouldPresent:(ANBrowserViewController *)controller; - (void)browserViewControllerWillLaunchExternalApplication; -- (void)browserViewControllerWillNotPresent:(ANBrowserViewController *)controller; +- (void)browserViewController:(ANBrowserViewController *)controller browserIsLoading:(BOOL)isLoading; -@end +@end \ No newline at end of file diff --git a/sdk/internal/ANBrowserViewController.m b/sdk/internal/ANBrowserViewController.m index c690f31dc..8bf419ac6 100644 --- a/sdk/internal/ANBrowserViewController.m +++ b/sdk/internal/ANBrowserViewController.m @@ -20,56 +20,35 @@ #import "UIWebView+ANCategory.h" @interface ANBrowserViewController () - -@property (nonatomic, readwrite, strong) NSMutableURLRequest *urlRequest; @property (nonatomic, readwrite, strong) UIActionSheet *openInSheet; -@property (nonatomic, readwrite, assign) BOOL isPresented; +@property (nonatomic, readwrite, assign) BOOL completedInitialLoad; +@property (nonatomic, readwrite, assign, getter=isLoading) BOOL loading; @end @implementation ANBrowserViewController -@synthesize forwardButton = __forwardButton; -@synthesize backButton = __backButton; -@synthesize openInButton = __openInButton; -@synthesize doneButton = __doneButton; -@synthesize activityIndicatorView = __activityIndicatorView; -@synthesize webView = __webView; -@synthesize urlRequest = __urlRequest; -@synthesize openInSheet = __openInSheet; -@synthesize delegate = __delegate; - -- (id)init -{ + +- (instancetype)initWithURL:(NSURL *)url { NSBundle *resBundle = ANResourcesBundle(); if (!resBundle) { ANLogError(@"Resource not found. Make sure the AppNexusSDKResources bundle is included in project"); return nil; } - + self = [super initWithNibName:NSStringFromClass([self class]) bundle:ANResourcesBundle()]; - if (self) - { - self.urlRequest = [[NSMutableURLRequest alloc] initWithURL:nil - cachePolicy:NSURLRequestReloadIgnoringLocalCacheData - timeoutInterval:kAppNexusRequestTimeoutInterval]; - [self.urlRequest setValue:ANUserAgent() forHTTPHeaderField:@"User-Agent"]; + if (self) { + _url = url; + [self.view description]; // A call to self.view is needed for the webView to be created and the load to begin } - self.isPresented = NO; - [self.view description]; // A call to self.view (however trivial) is needed for our view to be created - - return self; + return self; } -- (id)initWithURL:(NSURL *)url -{ - self = [self init]; - - if (self != nil) - { - self.urlRequest.URL = url; - } - - return self; ++ (NSURLRequest *)requestForURL:(NSURL *)URL { + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL + cachePolicy:NSURLRequestReloadIgnoringLocalCacheData + timeoutInterval:kAppNexusRequestTimeoutInterval]; + [request setValue:ANUserAgent() forHTTPHeaderField:@"User-Agent"]; + return [request copy]; } + (void)launchURL:(NSURL *)url withDelegate:(id)delegate { @@ -77,30 +56,25 @@ + (void)launchURL:(NSURL *)url withDelegate:(id controller.delegate = delegate; if ([controller.delegate respondsToSelector:@selector(browserViewControllerShouldPresent:)]) { [controller.delegate browserViewControllerShouldPresent:controller]; - controller.isPresented = YES; } } -- (IBAction)closeAction:(id)sender -{ +- (IBAction)closeAction:(id)sender { [self.openInSheet dismissWithClickedButtonIndex:1 animated:NO]; if ([self.delegate respondsToSelector:@selector(browserViewControllerShouldDismiss:)]) { [self.delegate browserViewControllerShouldDismiss:self]; } } -- (IBAction)forwardAction:(id)sender -{ +- (IBAction)forwardAction:(id)sender { [self.webView goForward]; } -- (IBAction)backAction:(id)sender -{ +- (IBAction)backAction:(id)sender { [self.webView goBack]; } -- (IBAction)openInAction:(id)sender -{ +- (IBAction)openInAction:(id)sender { self.openInSheet = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Open In Browser", @"Title: Open in browser option") delegate:self @@ -111,41 +85,48 @@ - (IBAction)openInAction:(id)sender [self.openInSheet showFromBarButtonItem:sender animated:YES]; } -- (void)viewDidLoad -{ +- (void)viewDidLoad { + [super viewDidLoad]; [self refreshButtons]; - [self.webView loadRequest:self.urlRequest]; + [self.webView loadRequest:[[self class] requestForURL:self.url]]; } -- (void)viewWillDisappear:(BOOL)animated -{ +- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - [__webView stopLoading]; + [self.webView stopLoading]; } -- (void)refreshButtons -{ +- (void)refreshButtons { self.backButton.enabled = [self.webView canGoBack]; self.forwardButton.enabled = [self.webView canGoForward]; } - (void)setWebView:(UIWebView *)webView { + _webView = webView; [webView setMediaProperties]; - __webView = webView; } -- (void)dealloc -{ - __webView.delegate = nil; - [__webView stopLoading]; +- (void)dealloc { + self.webView.delegate = nil; + [self.webView stopLoading]; +} + +- (void)setUrl:(NSURL *)url { + if (![[url absoluteString] isEqualToString:[_url absoluteString]] || (!self.loading && !self.completedInitialLoad)) { + _url = url; + [self.webView stopLoading]; + self.completedInitialLoad = NO; + [self.webView loadRequest:[[self class] requestForURL:url]]; + } else { + ANLogWarn(@"In-app browser ignoring request to load - request is already loading"); + } } #pragma mark UIWebViewDelegate -- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType -{ +- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { + [self handleWebViewLoadingChange]; NSURL *URL = [request URL]; - if (!self.isPresented) ANLogDebug(@"%@ | Loading URL: %@", NSStringFromSelector(_cmd), URL); if (hasHttpPrefix([URL scheme])) { return YES; @@ -156,12 +137,7 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *) if ([self.delegate respondsToSelector:@selector(browserViewControllerWillLaunchExternalApplication)]) { [self.delegate browserViewControllerWillLaunchExternalApplication]; } - if (!self.isPresented) { - ANLogDebug(@"%@ | Opening URL in external application: %@", NSStringFromSelector(_cmd), URL); - if ([self.delegate respondsToSelector:@selector(browserViewControllerWillNotPresent:)]) { - [self.delegate browserViewControllerWillNotPresent:self]; - } - } + ANLogDebug(@"%@ | Opening URL in external application: %@", NSStringFromSelector(_cmd), URL); [webView stopLoading]; [[UIApplication sharedApplication] openURL:URL]; return NO; @@ -171,47 +147,44 @@ - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *) } } -- (void)webViewDidStartLoad:(UIWebView *)webView -{ +- (void)webViewDidStartLoad:(UIWebView *)webView { + [self handleWebViewLoadingChange]; [self refreshButtons]; } -- (void)webViewDidFinishLoad:(UIWebView *)webView -{ - [self refreshButtons]; - if (!self.isPresented) { +- (void)webViewDidFinishLoad:(UIWebView *)webView { + [self handleWebViewLoadingChange]; + if (!self.completedInitialLoad) { + self.completedInitialLoad = YES; if ([self.delegate respondsToSelector:@selector(browserViewControllerShouldPresent:)]) { [self.delegate browserViewControllerShouldPresent:self]; - self.isPresented = YES; } } + [self refreshButtons]; } -- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error -{ +- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { + [self handleWebViewLoadingChange]; + [self refreshButtons]; ANLogWarn(@"In-app browser failed with error: %@", error); - if (!self.isPresented) { - NSString *errorUrlString = [error.userInfo objectForKey:NSURLErrorFailingURLStringErrorKey]; - NSString *mainDocumentURL = [[webView.request mainDocumentURL] absoluteString]; - if (([errorUrlString isEqualToString:mainDocumentURL] || !mainDocumentURL) && ([error.domain isEqualToString:@"NSURLErrorDomain"] || [error.domain isEqualToString:@"WebKitErrorDomain"])) { - if ([self.delegate respondsToSelector:@selector(browserViewControllerWillNotPresent:)]) { - [self.delegate browserViewControllerWillNotPresent:self]; - [webView stopLoading]; - } - } +} + +- (void)handleWebViewLoadingChange { + BOOL oldValue = self.loading; + self.loading = self.webView.loading; + if (oldValue != self.loading && [self.delegate respondsToSelector:@selector(browserViewController:browserIsLoading:)]) { + [self.delegate browserViewController:self + browserIsLoading:self.loading]; } } #pragma mark UIActionSheetDelegate -- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex -{ - if (buttonIndex == 0) - { +- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { + if (buttonIndex == 0) { NSURL *URL = self.webView.request.URL; - if ([[UIApplication sharedApplication] canOpenURL:URL]) - { + if ([[UIApplication sharedApplication] canOpenURL:URL]) { if ([self.delegate respondsToSelector:@selector(browserViewControllerShouldDismiss:)]) { [self.delegate browserViewControllerShouldDismiss:self]; } @@ -223,10 +196,8 @@ - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger } } -- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex -{ - if (actionSheet == self.openInSheet) - { +- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex { + if (actionSheet == self.openInSheet) { self.openInSheet = nil; } } diff --git a/sdk/internal/ANClickOverlayView.m b/sdk/internal/ANClickOverlayView.m index cc942b1a7..384d47e81 100644 --- a/sdk/internal/ANClickOverlayView.m +++ b/sdk/internal/ANClickOverlayView.m @@ -24,7 +24,7 @@ @interface ANClickOverlayView () @implementation ANClickOverlayView -- (id)initWithFrame:(CGRect)frame { +- (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self setBackgroundColor:[UIColor clearColor]]; diff --git a/sdk/internal/ANGlobal.h b/sdk/internal/ANGlobal.h index f2b927bdd..4cb0fe231 100644 --- a/sdk/internal/ANGlobal.h +++ b/sdk/internal/ANGlobal.h @@ -35,7 +35,7 @@ #define AN_ERROR_TABLE @"errors" #define AN_DEFAULT_PLACEMENT_ID @"default_placement_id" -#define AN_SDK_VERSION @"1.19" +#define AN_SDK_VERSION @"1.20" #define APPNEXUS_BANNER_SIZE CGSizeMake(320, 50) #define APPNEXUS_MEDIUM_RECT_SIZE CGSizeMake(300, 250) @@ -94,4 +94,4 @@ NSMutableSet *ANInvalidNetworks(); void ANAddInvalidNetwork(NSString *network); void ANSetNotificationsEnabled(BOOL enabled); void ANPostNotifications(NSString *name, id object, NSDictionary *userInfo); - +CGRect ANPortraitScreenBounds(); diff --git a/sdk/internal/ANGlobal.m b/sdk/internal/ANGlobal.m index cc4a4d80e..c6ac209c0 100644 --- a/sdk/internal/ANGlobal.m +++ b/sdk/internal/ANGlobal.m @@ -43,8 +43,7 @@ struct utsname systemInfo; uname(&systemInfo); - return [NSString stringWithCString:systemInfo.machine - encoding:NSUTF8StringEncoding]; + return @(systemInfo.machine); } BOOL ANAdvertisingTrackingEnabled() @@ -120,7 +119,18 @@ BOOL isFirstLaunch() } CGRect adjustAbsoluteRectInWindowCoordinatesForOrientationGivenRect(CGRect rect) { + // If portrait, no adjustment is necessary. + if ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) { + return rect; + } + CGRect screenBounds = [UIScreen mainScreen].bounds; + // iOS 8 + if (!CGPointEqualToPoint(screenBounds.origin, CGPointZero) || screenBounds.size.width > screenBounds.size.height) { + return rect; + } + + // iOS 7 and below CGFloat flippedOriginX = screenBounds.size.height - (rect.origin.y + rect.size.height); CGFloat flippedOriginY = screenBounds.size.width - (rect.origin.x + rect.size.width); @@ -149,7 +159,7 @@ CGRect adjustAbsoluteRectInWindowCoordinatesForOrientationGivenRect(CGRect rect) ANLogError(@"Resource not found. Make sure the %@ bundle is included in project", AN_RESOURCE_BUNDLE); return @""; } - NSString *mraidBundlePath = [resBundle pathForResource:@"MRAID" ofType:@"bundle"]; + NSString *mraidBundlePath = [resBundle pathForResource:@"ANMRAID" ofType:@"bundle"]; if (!mraidBundlePath) { ANLogError(@"Resource not found. Make sure the %@ bundle is included in project", AN_RESOURCE_BUNDLE); return @""; @@ -189,4 +199,27 @@ void ANPostNotifications(NSString *name, id object, NSDictionary *userInfo) { object:object userInfo:userInfo]; } +} + +CGRect ANPortraitScreenBounds() { + CGRect screenBounds = [UIScreen mainScreen].bounds; + if ([UIApplication sharedApplication].statusBarOrientation != UIInterfaceOrientationPortrait) { + if (!CGPointEqualToPoint(screenBounds.origin, CGPointZero) || screenBounds.size.width > screenBounds.size.height) { + // need to orient screen bounds + switch ([UIApplication sharedApplication].statusBarOrientation) { + case UIInterfaceOrientationLandscapeLeft: + return CGRectMake(0, 0, screenBounds.size.height, screenBounds.size.width); + break; + case UIInterfaceOrientationLandscapeRight: + return CGRectMake(0, 0, screenBounds.size.height, screenBounds.size.width); + break; + case UIInterfaceOrientationPortraitUpsideDown: + return CGRectMake(0, 0, screenBounds.size.width, screenBounds.size.height); + break; + default: + break; + } + } + } + return screenBounds; } \ No newline at end of file diff --git a/sdk/internal/ANInterstitialAd.m b/sdk/internal/ANInterstitialAd.m index 8e0dc16ba..3cc4c4d57 100644 --- a/sdk/internal/ANInterstitialAd.m +++ b/sdk/internal/ANInterstitialAd.m @@ -94,7 +94,7 @@ - (void)initialize { _closeDelay = kANInterstitialDefaultCloseButtonDelay; } -- (id)initWithPlacementId:(NSString *)placementId { +- (instancetype)initWithPlacementId:(NSString *)placementId { self = [super init]; if (self != nil) { @@ -121,15 +121,15 @@ - (void)displayAdFromViewController:(UIViewController *)controller { while ([self.precachedAdObjects count] > 0 && self.controller.contentView == nil) { // Pull the first ad off - NSDictionary *adDict = [self.precachedAdObjects objectAtIndex:0]; + NSDictionary *adDict = self.precachedAdObjects[0]; // Check to see if the date this was loaded is no more than 60 seconds ago - NSDate *dateLoaded = [adDict objectForKey:kANInterstitialAdViewDateLoadedKey]; - - if (([dateLoaded timeIntervalSinceNow] * -1) < AN_INTERSTITIAL_AD_TIMEOUT) { + NSDate *dateLoaded = adDict[kANInterstitialAdViewDateLoadedKey]; + NSTimeInterval timeIntervalSinceDateLoaded = [dateLoaded timeIntervalSinceNow] * -1; + if (timeIntervalSinceDateLoaded >= 0 && timeIntervalSinceDateLoaded < AN_INTERSTITIAL_AD_TIMEOUT) { // If ad is still valid, save a reference to it. We'll use it later - adToShow = [adDict objectForKey:kANInterstitialAdViewKey]; - auctionID = [adDict objectForKey:kANInterstitialAdViewAuctionInfoKey]; + adToShow = adDict[kANInterstitialAdViewKey]; + auctionID = adDict[kANInterstitialAdViewAuctionInfoKey]; } // This ad is now stale, so remove it from our cached ads. @@ -183,12 +183,10 @@ - (void)displayAdFromViewController:(UIViewController *)controller { - (NSMutableSet *)getDefaultAllowedAdSizes { NSMutableSet *defaultAllowedSizes = [NSMutableSet set]; - NSArray *possibleSizesArray = [NSArray arrayWithObjects: - [NSValue valueWithCGSize:kANInterstitialAdSize1024x1024], + NSArray *possibleSizesArray = @[[NSValue valueWithCGSize:kANInterstitialAdSize1024x1024], [NSValue valueWithCGSize:kANInterstitialAdSize900x500], [NSValue valueWithCGSize:kANInterstitialAdSize320x480], - [NSValue valueWithCGSize:kANInterstitialAdSize300x250], - nil]; + [NSValue valueWithCGSize:kANInterstitialAdSize300x250]]; for (NSValue *sizeValue in possibleSizesArray) { CGSize possibleSize = [sizeValue CGSizeValue]; CGRect possibleSizeRect = CGRectMake(self.frame.origin.x, self.frame.origin.y, possibleSize.width, possibleSize.height); @@ -202,13 +200,14 @@ - (NSMutableSet *)getDefaultAllowedAdSizes { - (BOOL)isReady { // check the cache for a valid ad while ([self.precachedAdObjects count] > 0) { - NSDictionary *adDict = [self.precachedAdObjects objectAtIndex:0]; + NSDictionary *adDict = self.precachedAdObjects[0]; // Check to see if the ad has expired - NSDate *dateLoaded = [adDict objectForKey:kANInterstitialAdViewDateLoadedKey]; - if (([dateLoaded timeIntervalSinceNow] * -1) < AN_INTERSTITIAL_AD_TIMEOUT) { + NSDate *dateLoaded = adDict[kANInterstitialAdViewDateLoadedKey]; + NSTimeInterval timeIntervalSinceDateLoaded = [dateLoaded timeIntervalSinceNow] * -1; + if (timeIntervalSinceDateLoaded >= 0 && timeIntervalSinceDateLoaded < AN_INTERSTITIAL_AD_TIMEOUT) { // Found a valid ad - id readyAd = [adDict objectForKey:kANInterstitialAdViewKey]; + id readyAd = adDict[kANInterstitialAdViewKey]; if ([readyAd conformsToProtocol:@protocol(ANCUSTOMADAPTERINTERSTITIAL)]) { // if it's a mediated ad, check if it is ready if ([readyAd respondsToSelector:@selector(isReady)]) { @@ -232,7 +231,7 @@ - (BOOL)isReady { - (CGRect)frame { // By definition, interstitials can only ever have the entire screen's bounds as its frame - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); if (UIInterfaceOrientationIsLandscape(self.controller.orientation)) { return CGRectMake(screenBounds.origin.y, screenBounds.origin.x, screenBounds.size.height, screenBounds.size.width); } @@ -293,11 +292,9 @@ - (NSString *)orientationParameter { #pragma mark ANAdFetcherDelegate - (NSArray *)extraParameters { - return [NSArray arrayWithObjects: - [self sizeParameter], + return @[[self sizeParameter], [self promoSizesParameter], - [self orientationParameter], - nil]; + [self orientationParameter]]; } - (void)adFetcher:(ANAdFetcher *)fetcher didFinishRequestWithResponse:(ANAdResponse *)response { @@ -308,7 +305,7 @@ - (void)adFetcher:(ANAdFetcher *)fetcher didFinishRequestWithResponse:(ANAdRespo nil]; // cannot insert nil objects if (response.auctionID) { - [adViewWithDateLoaded setObject:response.auctionID forKey:kANInterstitialAdViewAuctionInfoKey]; + adViewWithDateLoaded[kANInterstitialAdViewAuctionInfoKey] = response.auctionID; } [self.precachedAdObjects addObject:adViewWithDateLoaded]; ANLogDebug(@"Stored ad %@ in precached ad views", adViewWithDateLoaded); diff --git a/sdk/internal/ANInterstitialAdViewController.m b/sdk/internal/ANInterstitialAdViewController.m index 88da17fae..04666153c 100644 --- a/sdk/internal/ANInterstitialAdViewController.m +++ b/sdk/internal/ANInterstitialAdViewController.m @@ -32,7 +32,7 @@ @implementation ANInterstitialAdViewController @synthesize contentView = __contentView; @synthesize backgroundColor = __backgroundColor; -- (id)init { +- (instancetype)init { NSBundle *resBundle = ANResourcesBundle(); if (!resBundle) { ANLogError(@"Resource not found. Make sure the AppNexusSDKResources bundle is included in project"); @@ -46,6 +46,7 @@ - (id)init { } - (void)viewDidLoad { + [super viewDidLoad]; if (!self.backgroundColor) { self.backgroundColor = [UIColor whiteColor]; // Default white color, clear color background doesn't work with interstitial modal view } diff --git a/sdk/internal/ANLocation.m b/sdk/internal/ANLocation.m index 2bebc6f6c..660404d01 100644 --- a/sdk/internal/ANLocation.m +++ b/sdk/internal/ANLocation.m @@ -15,45 +15,65 @@ #import "ANBasicConfig.h" #import ANLOCATIONHEADER +#import "ANLogging.h" -@implementation ANLOCATION - -@synthesize latitude; -@synthesize longitude; -@synthesize timestamp; -@synthesize horizontalAccuracy; +static NSInteger const kANLocationMaxLocationPrecision = 6; +static NSInteger const kANLocationDefaultHorizontalAccuracy = 100; -#define DEFAULT_HOR_ACC 100 +@implementation ANLOCATION + (ANLOCATION *)getLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude timestamp:(NSDate *)timestamp + horizontalAccuracy:(CGFloat)horizontalAccuracy { + return [ANLOCATION getLocationWithLatitude:latitude + longitude:longitude + timestamp:timestamp + horizontalAccuracy:horizontalAccuracy + precision:-1]; +} + ++ (ANLocation *)getLocationWithLatitude:(CGFloat)latitude + longitude:(CGFloat)longitude + timestamp:(NSDate *)timestamp horizontalAccuracy:(CGFloat)horizontalAccuracy -{ - // verify that lat and long are valid - if ((latitude < -90) || (latitude > 90)) - return nil; - if ((longitude < -180) || (longitude > 180)) + precision:(NSInteger)precision { + BOOL invalidLatitude = latitude < -90 || latitude > 90; + BOOL invalidLongitude = longitude < -180 || longitude > 180; + BOOL invalidHorizontalAccuracy = horizontalAccuracy < 0; + if (invalidLatitude || invalidLongitude || invalidHorizontalAccuracy) { return nil; + } + + BOOL invalidPrecision = precision < -1; + if (invalidPrecision) { + ANLogWarn(@"Invalid precision passed in (%d) with location, no rounding will occur", (int)precision); + } - // negative accuracy means the location is invalid; don't accept it - if (horizontalAccuracy < 0) - return nil; - // default value if no accuracy was passed - else if (horizontalAccuracy == 0) - horizontalAccuracy = DEFAULT_HOR_ACC; + if (horizontalAccuracy == 0) + horizontalAccuracy = kANLocationDefaultHorizontalAccuracy; - // if given timestamp is nil, set time to now - if (!timestamp) + if (timestamp == nil) timestamp = [NSDate date]; // make a new object every time to make sure we don't use old data ANLOCATION *location = [[ANLOCATION alloc] init]; - location.latitude = latitude; - location.longitude = longitude; + if (precision <= -1) { + location.latitude = latitude; + location.longitude = longitude; + } else { + NSInteger effectivePrecision = precision; + if (precision > kANLocationMaxLocationPrecision) { + effectivePrecision = kANLocationMaxLocationPrecision; + } + + CGFloat precisionFloat = powf(10, effectivePrecision); + location.latitude = roundf(latitude * precisionFloat) / precisionFloat; + location.longitude = roundf(longitude * precisionFloat) / precisionFloat; + } location.timestamp = timestamp; location.horizontalAccuracy = horizontalAccuracy; return location; } -@end +@end \ No newline at end of file diff --git a/sdk/internal/ANLogging.m b/sdk/internal/ANLogging.m index 5d07216e6..3694bf888 100644 --- a/sdk/internal/ANLogging.m +++ b/sdk/internal/ANLogging.m @@ -38,5 +38,5 @@ void notifyListener(NSString *message, NSInteger messageLevel) { ANPostNotifications(kANLoggingNotification, nil, @{kANLogMessageKey: message, - kANLogMessageLevelKey: [NSNumber numberWithInteger:messageLevel]}); + kANLogMessageLevelKey: @(messageLevel)}); } diff --git a/sdk/internal/ANMRAIDProperties.h b/sdk/internal/ANMRAIDProperties.h index 3fd620480..bd517a1c6 100644 --- a/sdk/internal/ANMRAIDProperties.h +++ b/sdk/internal/ANMRAIDProperties.h @@ -13,41 +13,32 @@ limitations under the License. */ -#ifndef _ANMRAIDConstants -#define _ANMRAIDConstants +#import +#import -typedef enum _ANMRAIDOrientation -{ +typedef NS_ENUM(NSUInteger, ANMRAIDOrientation) { ANMRAIDOrientationPortrait, ANMRAIDOrientationLandscape, ANMRAIDOrientationNone -} ANMRAIDOrientation; +}; -typedef enum _ANMRAIDCustomClosePosition -{ +typedef NS_ENUM(NSUInteger, ANMRAIDCustomClosePosition) { ANMRAIDTopLeft, ANMRAIDTopCenter, ANMRAIDTopRight, ANMRAIDCenter, ANMRAIDBottomLeft, ANMRAIDBottomCenter, - ANMRAIDBottomRight, -} ANMRAIDCustomClosePosition; + ANMRAIDBottomRight +}; -typedef enum _ANMRAIDState -{ +typedef NS_ENUM(NSUInteger, ANMRAIDState) { ANMRAIDStateLoading, ANMRAIDStateDefault, ANMRAIDStateExpanded, ANMRAIDStateHidden, ANMRAIDStateResized -} ANMRAIDState; - - -#endif - -#import -#import +}; @protocol ANMRAIDEventReceiver diff --git a/sdk/internal/ANMRAIDViewController.m b/sdk/internal/ANMRAIDViewController.m index 7a22a9f53..719f626d6 100644 --- a/sdk/internal/ANMRAIDViewController.m +++ b/sdk/internal/ANMRAIDViewController.m @@ -14,6 +14,7 @@ */ #import "ANMRAIDViewController.h" +#import "ANGlobal.h" @interface ANMRAIDViewController () @property (nonatomic, readwrite, assign) BOOL originalHiddenState; @@ -21,7 +22,7 @@ @interface ANMRAIDViewController () @implementation ANMRAIDViewController -- (id)init { +- (instancetype)init { self = [super init]; if (self) { _allowOrientationChange = YES; @@ -53,7 +54,7 @@ - (void)resetViewForRotations:(UIInterfaceOrientation)orientation { orientationAfterRotation = self.orientation; } - CGRect mainBounds = [[UIScreen mainScreen] bounds]; + CGRect mainBounds = ANPortraitScreenBounds(); if (UIInterfaceOrientationIsLandscape(orientationAfterRotation)) { CGFloat portraitHeight = mainBounds.size.height; CGFloat portraitWidth = mainBounds.size.width; diff --git a/sdk/internal/ANMediationAdViewController.m b/sdk/internal/ANMediationAdViewController.m index 06bc3af69..b5c007dbd 100644 --- a/sdk/internal/ANMediationAdViewController.m +++ b/sdk/internal/ANMediationAdViewController.m @@ -353,7 +353,7 @@ - (void)didReceiveAd:(id)adObject { - (void)didFailToReceiveAd:(ANADRESPONSECODE)errorCode { if ([self checkIfHasResponded]) return; [self markLatencyStop]; - + self.hasFailed = YES; [self finish:errorCode withAdObject:nil auctionID:nil]; } diff --git a/sdk/internal/ANPBBuffer.m b/sdk/internal/ANPBBuffer.m index a734620a8..dbeb53094 100644 --- a/sdk/internal/ANPBBuffer.m +++ b/sdk/internal/ANPBBuffer.m @@ -59,13 +59,13 @@ + (void)handleUrl:(NSURL *)URL forView:(UIView *)view { } else if ([host isEqualToString:@"app"]) { // record auction_info into buffer NSDictionary *queryComponents = [[URL query] queryComponents]; - NSString *auctionInfo = [queryComponents objectForKey:kANPBBufferAuctionInfoKey]; + NSString *auctionInfo = queryComponents[kANPBBufferAuctionInfoKey]; [ANPBBuffer saveAuctionInfo:auctionInfo]; } else if ([host isEqualToString:@"capture"]) { // take a screenshot and attach it to the info for this auction ID NSDictionary *queryComponents = [[URL query] queryComponents]; - NSString *auctionID = [queryComponents objectForKey:kANPBBufferAuctionIDKey]; + NSString *auctionID = queryComponents[kANPBBufferAuctionIDKey]; [ANPBBuffer captureImage:view forAuctionID:auctionID]; } @@ -83,7 +83,7 @@ + (NSString *)saveAuctionInfo:(NSString *)auctionInfo { error:&jsonParsingError]; if (!jsonParsingError) { - NSString *auctionID = [jsonDict objectForKey:kANPBBufferAuctionIDKey]; + NSString *auctionID = jsonDict[kANPBBufferAuctionIDKey]; if (auctionID && ![ANPBBuffer containsAuctionInfoForID:auctionID]) { [ANPBBuffer trimBuffer]; [ANPBBuffer saveAuctionInfo:auctionInfo forAuctionID:auctionID]; @@ -119,7 +119,7 @@ + (void)resetBuffer { // trim the buffer if necessary + (void)trimBuffer { if ([pbBuffer count] >= kANPBBufferLimit) { - id key = [pbKeys objectAtIndex:0]; + id key = pbKeys[0]; // remove first object and shift forward [pbKeys removeObjectAtIndex:0]; [pbBuffer removeObjectForKey:key]; @@ -137,9 +137,9 @@ + (void)saveAuctionInfo:(NSString *)auctionInfo + (void)addAdditionalInfo:(NSDictionary *)additionalInfo forAuctionID:(NSString *)auctionID { - NSMutableDictionary *auctionInfo = [[pbBuffer objectForKey:auctionID] mutableCopy]; + NSMutableDictionary *auctionInfo = [pbBuffer[auctionID] mutableCopy]; if (auctionInfo) { - NSString *oldText = [auctionInfo objectForKey:kANPBBufferTextKey]; + NSString *oldText = auctionInfo[kANPBBufferTextKey]; NSData *oldData = [oldText dataUsingEncoding:NSUTF8StringEncoding]; NSError *jsonParsingError = nil; NSMutableDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:oldData @@ -152,10 +152,8 @@ + (void)addAdditionalInfo:(NSDictionary *)additionalInfo error:nil]; NSString *newText = [[NSString alloc] initWithData:newData encoding:NSUTF8StringEncoding]; if (newText) { - [auctionInfo setObject:newText - forKey:kANPBBufferTextKey]; - [pbBuffer setObject:auctionInfo - forKey:auctionID]; + auctionInfo[kANPBBufferTextKey] = newText; + pbBuffer[auctionID] = auctionInfo; } else { ANLogDebug(@"Error passing additional info into adtrace object"); } @@ -170,7 +168,7 @@ + (BOOL)containsAuctionInfoForID:(NSString *)auctionID { // check if the pbBuffer contains an image for auctionID + (BOOL)containsImageForID:(NSString *)auctionID { - NSDictionary *item = [pbBuffer objectForKey:auctionID]; + NSDictionary *item = pbBuffer[auctionID]; return item && [item valueForKey:kANPBBufferImageKey]; } @@ -179,7 +177,7 @@ + (BOOL)containsImageForID:(NSString *)auctionID { + (NSArray *)getPasteboardArray { NSMutableArray *array = [NSMutableArray new]; for (id key in pbKeys) { - id value = [pbBuffer objectForKey:key]; + id value = pbBuffer[key]; [array addObject:value]; } return array; @@ -206,10 +204,10 @@ + (void)launchPitbullApp { /* Capture Image methods */ + (void)saveImage:(UIImage *)image forAuctionID:(NSString *)auctionID { - NSMutableDictionary *item = [[pbBuffer objectForKey:auctionID] mutableCopy]; + NSMutableDictionary *item = [pbBuffer[auctionID] mutableCopy]; if (item) { [item setValue:[ANPBBuffer compressImage:image] forKeyPath:kANPBBufferImageKey]; - [pbBuffer setObject:item forKey:auctionID]; + pbBuffer[auctionID] = item; } } diff --git a/sdk/internal/ANPBContainerView.m b/sdk/internal/ANPBContainerView.m index bbec38634..6a14ae85d 100644 --- a/sdk/internal/ANPBContainerView.m +++ b/sdk/internal/ANPBContainerView.m @@ -15,6 +15,7 @@ #import "ANPBContainerView.h" #import "ANPBBuffer.h" +#import "ANLogging.h" static CGFloat const kANPBContainerViewLogoWidth = 50.0f; static CGFloat const kANPBContainerViewLogoAlpha = 0.6f; @@ -44,7 +45,13 @@ - (void)launchPitbullApp { } - (void)setupButton { - UIImage *icon = [UIImage imageNamed:kANPBContainerViewIconName]; + NSBundle *resBundle = ANResourcesBundle(); + if (!resBundle) { + ANLogError(@"Resource not found. Make sure the AppNexusSDKResources bundle is included in project"); + } + + UIImage *icon = [UIImage imageWithContentsOfFile:[resBundle pathForResource:kANPBContainerViewIconName + ofType:@"png"]]; if (icon) { UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, kANPBContainerViewLogoWidth, kANPBContainerViewLogoWidth)]; [button setImage:icon diff --git a/sdk/internal/ANWebView.m b/sdk/internal/ANWebView.m index e56f2be91..c761eea79 100644 --- a/sdk/internal/ANWebView.m +++ b/sdk/internal/ANWebView.m @@ -21,7 +21,7 @@ @implementation ANWebView --(id)initWithFrame:(CGRect)frame { +-(instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.backgroundColor = [UIColor clearColor]; @@ -32,6 +32,10 @@ -(id)initWithFrame:(CGRect)frame { return self; } +- (void)dealloc { + self.delegate = nil; +} + @end @implementation ANWebView (MRAIDExtensions) diff --git a/tests/Classes/ANDemoAdsViewController.xib b/tests/Classes/ANDemoAdsViewController.xib deleted file mode 100644 index 11c68a9b6..000000000 --- a/tests/Classes/ANDemoAdsViewController.xib +++ /dev/null @@ -1,892 +0,0 @@ - - - - 1552 - 11G63b - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBProxyObject - IBUIBarButtonItem - IBUIButton - IBUILabel - IBUIPickerView - IBUIScrollView - IBUISegmentedControl - IBUITextField - IBUIToolbar - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 258 - {{0, 44}, {333, 216}} - - _NS:9 - IBCocoaTouchFramework - YES - - - - 290 - {333, 44} - - - _NS:9 - NO - NO - IBCocoaTouchFramework - - - IBCocoaTouchFramework - - 5 - - - Done - IBCocoaTouchFramework - 1 - - - - - - {333, 260} - - - - 1 - MCAwIDAAA - darkTextColor - - - IBUISimulatedFreeformSizeMetricsSentinel - Freeform - - IBCocoaTouchFramework - - - - 274 - - - - 274 - - - - 290 - - - - 258 - - - - 293 - {{23, 0}, {274, 57}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Please choose options for the type of ad you would like displayed - - 1 - MSAxIDEgMC42AA - lightTextColor - - - 0 - 2 - 1 - - 1 - 17 - - - Helvetica - 17 - 16 - - NO - 274 - - - - 290 - {{20, 65}, {280, 44}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 2 - 0 - - Banner - Interstitial - - - - - - - - - - - {0, 0} - {0, 0} - - - - - - - - - 292 - {{20, 126}, {38, 30}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Size: - - 1 - MSAxIDEAA - - 1 - - - - 0 - - - NO - - - - 292 - {{20, 165}, {125, 30}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Refresh Interval: - - 1 - MSAxIDEAA - - - - 0 - - - NO - - - - 293 - {{118, 273}, {84, 44}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Load Ad - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 289 - {{165, 126}, {135, 30}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - 320 x 50 - 3 - - 3 - MAA - - 2 - - - YES - 17 - - IBCocoaTouchFramework - - - 1 - 14 - - - Helvetica - 14 - 16 - - - - - 289 - {{165, 165}, {135, 30}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - 30 - 3 - - 3 - MAA - - - YES - 17 - - 2 - 9 - IBCocoaTouchFramework - - - - - - - 292 - {{20, 203}, {56, 30}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Tag ID: - - 1 - MSAxIDEAA - - - - 0 - - - NO - - - - 289 - {{165, 203}, {135, 30}} - - - - _NS:9 - NO - YES - IBCocoaTouchFramework - 0 - 1281482 - 3 - - 3 - MAA - - - YES - 17 - - 9 - IBCocoaTouchFramework - - - - - - {{0, 50}, {320, 350}} - - - - _NS:9 - - 3 - MAA - - IBCocoaTouchFramework - - - - 289 - {{10, 0}, {300, 50}} - - - - _NS:9 - - 3 - MQA - - - IBCocoaTouchFramework - - - {320, 400} - - - - _NS:9 - - - IBCocoaTouchFramework - - - {320, 466} - - - - _NS:9 - - 1 - MCAwIDAAA - - YES - YES - - IBCocoaTouchFramework - - - {{0, 20}, {320, 466}} - - - - - - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - pickerInputView - - - - 530 - - - - pickerView - - - - 532 - - - - bannerAdView - - - - 553 - - - - scrollView - - - - 861 - - - - containerView - - - - 862 - - - - tagTextField - - - - 408 - - - - refreshTextField - - - - 407 - - - - segmentedControl - - - - 537 - - - - sizeTextField - - - - 294 - - - - controlsView - - - - 864 - - - - segementedControlDidChange: - - - 13 - - 865 - - - - loadAd: - - - 7 - - 536 - - - - delegate - - - - 295 - - - - delegate - - - - 405 - - - - delegate - - - - 406 - - - - dataSource - - - - 528 - - - - delegate - - - - 529 - - - - pickerInputViewDone: - - - - 531 - - - - - - 0 - - - - - - 1 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 455 - - - - - - - - - 512 - - - - - - - - - 501 - - - - - 526 - - - - - 527 - - - - - 578 - - - - - - - - 685 - - - - - - - - - 538 - - - - - - 863 - - - - - - - - - - - - - - - - 338 - - - - - 337 - - - - - 329 - - - - - 281 - - - - - 226 - - - - - 324 - - - - - 184 - - - - - 4 - - - - - 11 - - - - - - - ANDemoAdsViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - ANBannerAdView - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 865 - - - - - ANAdView - UIView - - IBProjectSource - ./Classes/ANAdView.h - - - - ANBannerAdView - ANAdView - - IBProjectSource - ./Classes/ANBannerAdView.h - - - - ANDemoAdsViewController - UIViewController - - id - id - id - id - - - - : - id - - - loadAd: - id - - - pickerInputViewDone: - id - - - segementedControlDidChange: - id - - - - ANBannerAdView - UIView - UIView - UIView - UIPickerView - UITextField - UIScrollView - UISegmentedControl - UITextField - UITextField - - - - bannerAdView - ANBannerAdView - - - containerView - UIView - - - controlsView - UIView - - - pickerInputView - UIView - - - pickerView - UIPickerView - - - refreshTextField - UITextField - - - scrollView - UIScrollView - - - segmentedControl - UISegmentedControl - - - sizeTextField - UITextField - - - tagTextField - UITextField - - - - IBProjectSource - ./Classes/ANDemoAdsViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 2083 - - diff --git a/tests/Classes/ANDemoConsoleViewController.xib b/tests/Classes/ANDemoConsoleViewController.xib deleted file mode 100644 index 780d88427..000000000 --- a/tests/Classes/ANDemoConsoleViewController.xib +++ /dev/null @@ -1,612 +0,0 @@ - - - - 1552 - 11G63b - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBNSLayoutConstraint - IBProxyObject - IBUIButton - IBUIScrollView - IBUITextView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 274 - - - - 274 - {320, 548} - - - - _NS:9 - - 3 - MC4zMzMzMzMzMzMzAA - - YES - YES - IBCocoaTouchFramework - NO - Console: - - 1 - MCAxIDAuMTMzMzEyMjA3NAA - - - 2 - IBCocoaTouchFramework - - - Helvetica - Helvetica - 0 - 14 - - - Helvetica - 14 - 16 - - - - - 292 - {{48, 485}, {225, 44}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - 1 - E-mail Logs - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - {320, 548} - - - - _NS:9 - YES - YES - IBCocoaTouchFramework - - - {{0, 20}, {320, 548}} - - - - - 3 - MQA - - 2 - - - - - IBUIScreenMetrics - - YES - - - - - - {320, 568} - {568, 320} - - - IBCocoaTouchFramework - Retina 4 Full Screen - 2 - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - textView - - - - 16 - - - - emailLogs: - - - 7 - - 42 - - - - - - 0 - - - - - - 1 - - - - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 4 - 0 - - 4 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 6 - 0 - - 6 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 3 - 0 - - 3 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - 4 - 0 - - 4 - 1 - - 20 - - 1000 - - 8 - 29 - 3 - - - - 9 - 0 - - 9 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 9 - 0 - - 9 - 1 - - 0.0 - - 1000 - - 5 - 22 - 2 - - - - 10 - 0 - - 10 - 1 - - 0.0 - - 1000 - - 5 - 22 - 2 - - - - 4 - 0 - - 4 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 6 - 0 - - 6 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 3 - 0 - - 3 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - - - - 5 - - - - - 6 - - - - - 7 - - - - - 8 - - - - - 9 - - - - - - 12 - - - - - 13 - - - - - 14 - - - - - 17 - - - - - 7 - 0 - - 0 - 1 - - 225 - - 1000 - - 3 - 9 - 1 - - - - - - 36 - - - - - 37 - - - - - 38 - - - - - 39 - - - - - 40 - - - - - 41 - - - - - - - ANDemoConsoleViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - - 42 - - - - - ANDemoConsoleViewController - UIViewController - - emailLogs: - id - - - emailLogs: - - emailLogs: - id - - - - textView - UITextView - - - textView - - textView - UITextView - - - - IBProjectSource - ./Classes/ANDemoConsoleViewController.h - - - - NSLayoutConstraint - NSObject - - IBProjectSource - ./Classes/NSLayoutConstraint.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - YES - 2083 - - diff --git a/tests/Classes/RootViewController.xib b/tests/Classes/RootViewController.xib deleted file mode 100644 index 9dd1caaad..000000000 --- a/tests/Classes/RootViewController.xib +++ /dev/null @@ -1,407 +0,0 @@ - - - - 1552 - 11G63b - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - IBNSLayoutConstraint - IBProxyObject - IBUIPageControl - IBUIScrollView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 268 - {320, 504} - - - - YES - YES - IBCocoaTouchFramework - NO - - - - 1316 - - {{46, 507}, {228, 36}} - - - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 2 - - - {{0, 20}, {320, 548}} - - - - - 1 - MCAwIDAAA - darkTextColor - - - - IBUISimulatedFreeformSizeMetricsSentinel - Freeform - - IBCocoaTouchFramework - - - - - - - view - - - - 3 - - - - scrollView - - - - 22 - - - - pageControl - - - - 23 - - - - changePage: - - - 3 - - 43 - - - - changePage: - - - 7 - - 58 - - - - - - 0 - - - - - - 1 - - - - - 4 - 0 - - 4 - 1 - - 5 - - 1000 - - 3 - 9 - 3 - - - - 9 - 0 - - 9 - 1 - - 0.0 - - 1000 - - 6 - 24 - 2 - - - - 4 - 0 - - 4 - 1 - - 44 - - 1000 - - 3 - 9 - 3 - - - - 3 - 0 - - 3 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 5 - 0 - - 5 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - 6 - 0 - - 6 - 1 - - 0.0 - - 1000 - - 8 - 29 - 3 - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - 5 - - - - - 7 - 0 - - 0 - 1 - - 228 - - 1000 - - 3 - 9 - 1 - - - - - - 14 - - - - - 15 - - - - - 38 - - - - - 39 - - - - - 47 - - - - - 62 - - - - - 63 - - - - - - - RootViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 63 - - - - - NSLayoutConstraint - NSObject - - IBProjectSource - ./Classes/NSLayoutConstraint.h - - - - RootViewController - UIViewController - - changePage: - id - - - changePage: - - changePage: - id - - - - UIPageControl - UIScrollView - - - - pageControl - UIPageControl - - - scrollView - UIScrollView - - - - IBProjectSource - ./Classes/RootViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - YES - 2083 - - diff --git a/tests/MediationAdapterApp/ANMediationAdapterViewController.h b/tests/MediationAdapterApp/ANMediationAdapterViewController.h new file mode 100644 index 000000000..37e44fb82 --- /dev/null +++ b/tests/MediationAdapterApp/ANMediationAdapterViewController.h @@ -0,0 +1,40 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANBannerAdView.h" +#import "ANInterstitialAd.h" + +@interface ANMediationAdapterViewController : UIViewController + +- (ANBannerAdView *)loadFacebookBannerWithDelegate:(id)delegate; +- (ANInterstitialAd *)loadFacebookInterstitialWithDelegate:(id)delegate; + +- (ANBannerAdView *)loadAmazonBannerWithDelegate:(id)delegate; +- (ANInterstitialAd *)loadAmazonInterstitialWithDelegate:(id)delegate; + +- (ANBannerAdView *)loadiAdBannerWithDelegate:(id)delegate; +- (ANInterstitialAd *)loadiAdInterstitialWithDelegate:(id)delegate; + +- (ANBannerAdView *)loadAdMobBannerWithDelegate:(id)delegate; +- (ANInterstitialAd *)loadAdMobInterstitialWithDelegate:(id)delegate; + +- (ANBannerAdView *)loadMillennialMediaBannerWithDelegate:(id)delegate; +- (ANInterstitialAd *)loadMillennialMediaInterstitialWithDelegate:(id)delegate; + +- (ANBannerAdView *)loadMoPubBannerWithDelegate:(id)delegate; +- (ANInterstitialAd *)loadMoPubInterstitialWithDelegate:(id)delegate; + +@end \ No newline at end of file diff --git a/tests/MediationAdapterApp/ANMediationAdapterViewController.m b/tests/MediationAdapterApp/ANMediationAdapterViewController.m new file mode 100644 index 000000000..f558443e2 --- /dev/null +++ b/tests/MediationAdapterApp/ANMediationAdapterViewController.m @@ -0,0 +1,263 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANMediationAdapterViewController.h" +#import "ANURLConnectionStub.h" +#import "ANHTTPStubbingManager.h" +#import "ANLogManager.h" +#import "ANAdAdapterBaseAmazon.h" + +@interface ANMediationAdapterViewController () +@property (weak, nonatomic) IBOutlet UIPickerView *pickerView; +@property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator; +@property (nonatomic) ANInterstitialAd *interstitialAd; +@property (nonatomic, weak) ANBannerAdView *bannerAdView; +@end + +@implementation ANMediationAdapterViewController + ++ (NSArray *)networks { + return @[@"FacebookBanner", + @"FacebookInterstitial", + @"MoPubBanner", + @"MoPubInterstitial", + @"iAdBanner", + @"iAdInterstitial", + @"AmazonBanner", + @"AmazonInterstitial", + @"MillennialMediaBanner", + @"MillennialMediaInterstitial", + @"AdMobBanner", + @"AdMobInterstitial"]; +} + +#pragma mark - Picker View + +- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { + return 1; +} + +- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component { + return [[[self class] networks] count]; +} + +- (NSString *)pickerView:(UIPickerView *)pickerView + titleForRow:(NSInteger)row + forComponent:(NSInteger)component { + return [[self class] networks][row]; +} + +- (void)pickerView:(UIPickerView *)pickerView + didSelectRow:(NSInteger)row + inComponent:(NSInteger)component { + [self clearCurrentAd]; + [self.activityIndicator startAnimating]; + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Warc-performSelector-leaks" + id ad = [self performSelector:NSSelectorFromString([NSString stringWithFormat:@"load%@WithDelegate:", [[self class] networks][row]]) + withObject:self]; + #pragma clang diagnostic pop + if ([ad isKindOfClass:[ANBannerAdView class]]) { + self.bannerAdView = (ANBannerAdView *)ad; + } else { + self.interstitialAd = (ANInterstitialAd *)ad; + } +} + +- (void)clearCurrentAd { + [self.bannerAdView removeFromSuperview]; + self.interstitialAd = nil; +} + +#pragma mark - Facebook + +- (ANBannerAdView *)loadFacebookBannerWithDelegate:(id)delegate { + [self stubFacebookBanner]; + return [self bannerWithDelegate:delegate]; +} + +- (ANInterstitialAd *)loadFacebookInterstitialWithDelegate:(id)delegate { + [self stubFacebookInterstitial]; + return [self interstitialWithDelegate:delegate]; +} + +- (void)stubFacebookBanner { + [self stubMediatedAdCallWithJSONResource:@"FacebookBanner"]; +} + +- (void)stubFacebookInterstitial { + [self stubMediatedAdCallWithJSONResource:@"FacebookInterstitial"]; +} + +#pragma mark - Amazon + +- (ANBannerAdView *)loadAmazonBannerWithDelegate:(id)delegate { + [self stubAmazonBanner]; + return [self bannerWithDelegate:delegate]; +} + +- (ANInterstitialAd *)loadAmazonInterstitialWithDelegate:(id)delegate { + [self stubAmazonInterstitial]; + return [self interstitialWithDelegate:delegate]; +} + +- (void)stubAmazonBanner { + [self stubMediatedAdCallWithJSONResource:@"AmazonBanner"]; +} + +- (void)stubAmazonInterstitial { + [self stubMediatedAdCallWithJSONResource:@"AmazonInterstitial"]; +} + +#pragma mark - iAd + +- (ANBannerAdView *)loadiAdBannerWithDelegate:(id)delegate { + [self stubiAdBanner]; + return [self bannerWithDelegate:delegate]; +} + +- (ANInterstitialAd *)loadiAdInterstitialWithDelegate:(id)delegate { + [self stubiAdInterstitial]; + return [self interstitialWithDelegate:delegate]; +} + +- (void)stubiAdBanner { + [self stubMediatedAdCallWithJSONResource:@"iAdBanner"]; +} + +- (void)stubiAdInterstitial { + [self stubMediatedAdCallWithJSONResource:@"iAdInterstitial"]; +} + +#pragma mark - MoPub + +- (ANBannerAdView *)loadMoPubBannerWithDelegate:(id)delegate { + [self stubMoPubBanner]; + return [self bannerWithDelegate:delegate]; +} + +- (ANInterstitialAd *)loadMoPubInterstitialWithDelegate:(id)delegate { + [self stubMoPubInterstitial]; + return [self interstitialWithDelegate:delegate]; +} + +- (void)stubMoPubBanner { + [self stubMediatedAdCallWithJSONResource:@"MoPubBanner"]; +} + +- (void)stubMoPubInterstitial { + [self stubMediatedAdCallWithJSONResource:@"MoPubInterstitial"]; +} + +#pragma mark - Millennial Media + +- (ANBannerAdView *)loadMillennialMediaBannerWithDelegate:(id)delegate { + [self stubMillennialMediaBanner]; + return [self bannerWithDelegate:delegate]; +} + +- (ANInterstitialAd *)loadMillennialMediaInterstitialWithDelegate:(id)delegate { + [self stubMillennialMediaInterstitial]; + return [self interstitialWithDelegate:delegate]; +} + +- (void)stubMillennialMediaBanner { + [self stubMediatedAdCallWithJSONResource:@"MillennialMediaBanner"]; +} + +- (void)stubMillennialMediaInterstitial { + [self stubMediatedAdCallWithJSONResource:@"MillennialMediaInterstitial"]; +} + +#pragma mark - Ad Mob + +- (ANBannerAdView *)loadAdMobBannerWithDelegate:(id)delegate { + [self stubAdMobBanner]; + return [self bannerWithDelegate:delegate]; +} + +- (ANInterstitialAd *)loadAdMobInterstitialWithDelegate:(id)delegate { + [self stubAdMobInterstitial]; + return [self interstitialWithDelegate:delegate]; +} + +- (void)stubAdMobBanner { + [self stubMediatedAdCallWithJSONResource:@"AdMobBanner"]; +} + +- (void)stubAdMobInterstitial { + [self stubMediatedAdCallWithJSONResource:@"AdMobInterstitial"]; +} + +#pragma mark - ANAdProtocol + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error { + NSLog(@"%@", NSStringFromSelector(_cmd)); + [self.activityIndicator stopAnimating]; +} + +- (void)adDidReceiveAd:(id)ad { + NSLog(@"%@", NSStringFromSelector(_cmd)); + if (self.interstitialAd == ad) { + [self.interstitialAd displayAdFromViewController:self]; + } + [self.activityIndicator stopAnimating]; +} + +# pragma mark - General + +- (void)stubMediatedAdCallWithJSONResource:(NSString *)resource { + [[ANHTTPStubbingManager sharedStubbingManager] removeAllStubs]; + ANURLConnectionStub *mediatedResponseStub = [ANURLConnectionStub stubForResource:resource + ofType:@"json" + withRequestURLRegexPatternString:@"http://mediation.adnxs.com/mob\\?.*" + inBundle:[NSBundle bundleForClass:[self class]]]; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:mediatedResponseStub]; + [self stubResultCBResponse]; +} + +- (void)stubResultCBResponse { + ANURLConnectionStub *resultCBStub = [[ANURLConnectionStub alloc] init]; + resultCBStub.requestURLRegexPatternString = @"http://nym1.mobile.adnxs.com/mediation.*"; + resultCBStub.responseCode = 200; + resultCBStub.responseBody = @""; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:resultCBStub]; +} + +- (ANBannerAdView *)bannerWithDelegate:(id)delegate { + ANBannerAdView *bannerAdView = [[ANBannerAdView alloc] initWithFrame:CGRectMake(0, 0, 320, 50) + placementId:@"2054679" + adSize:CGSizeMake(320, 50)]; + bannerAdView.rootViewController = self; + bannerAdView.backgroundColor = [UIColor blackColor]; + [self.view addSubview:bannerAdView]; + [bannerAdView loadAd]; + bannerAdView.delegate = delegate; + bannerAdView.autoRefreshInterval = 0; + return bannerAdView; +} + +- (ANInterstitialAd *)interstitialWithDelegate:(id)delegate { + ANInterstitialAd *interstitialAd = [[ANInterstitialAd alloc] initWithPlacementId:@"2054679"]; + interstitialAd.delegate = delegate; + [interstitialAd loadAd]; + return interstitialAd; +} + +- (BOOL)prefersStatusBarHidden { + return YES; +} + +@end \ No newline at end of file diff --git a/tests/MediationAdapterApp/AppDelegate.h b/tests/MediationAdapterApp/AppDelegate.h new file mode 100644 index 000000000..a7e0fe995 --- /dev/null +++ b/tests/MediationAdapterApp/AppDelegate.h @@ -0,0 +1,23 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end + diff --git a/tests/MediationAdapterApp/AppDelegate.m b/tests/MediationAdapterApp/AppDelegate.m new file mode 100644 index 000000000..154e79a4e --- /dev/null +++ b/tests/MediationAdapterApp/AppDelegate.m @@ -0,0 +1,33 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "AppDelegate.h" +#import "ANLogManager.h" +#import "ANHTTPStubbingManager.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [ANLogManager setANLogLevel:ANLogLevelAll]; + [[ANHTTPStubbingManager sharedStubbingManager] enable]; + [ANHTTPStubbingManager sharedStubbingManager].ignoreUnstubbedRequests = YES; + return YES; +} + +@end \ No newline at end of file diff --git a/tests/MediationAdapterApp/Base.lproj/LaunchScreen.xib b/tests/MediationAdapterApp/Base.lproj/LaunchScreen.xib new file mode 100644 index 000000000..01115e6cc --- /dev/null +++ b/tests/MediationAdapterApp/Base.lproj/LaunchScreen.xib @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/MediationAdapterApp/Base.lproj/Main.storyboard b/tests/MediationAdapterApp/Base.lproj/Main.storyboard new file mode 100644 index 000000000..1f4d6185a --- /dev/null +++ b/tests/MediationAdapterApp/Base.lproj/Main.storyboard @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/MediationAdapterApp/Images.xcassets/AppIcon.appiconset/Contents.json b/tests/MediationAdapterApp/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..118c98f74 --- /dev/null +++ b/tests/MediationAdapterApp/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tests/MediationAdapterApp/Info.plist b/tests/MediationAdapterApp/Info.plist new file mode 100644 index 000000000..f2ebc04c3 --- /dev/null +++ b/tests/MediationAdapterApp/Info.plist @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + corp.appnexus.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/tests/MediationAdapterApp/MediationAdapterPrefixHeader.pch b/tests/MediationAdapterApp/MediationAdapterPrefixHeader.pch new file mode 100644 index 000000000..0825484a3 --- /dev/null +++ b/tests/MediationAdapterApp/MediationAdapterPrefixHeader.pch @@ -0,0 +1,21 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#ifndef NewTestApp_MediationAdapterPrefixHeader_pch +#define NewTestApp_MediationAdapterPrefixHeader_pch + +#import + +#endif diff --git a/tests/MediationAdapterApp/main.m b/tests/MediationAdapterApp/main.m new file mode 100644 index 000000000..d6c09c484 --- /dev/null +++ b/tests/MediationAdapterApp/main.m @@ -0,0 +1,16 @@ +// +// main.m +// MediationAdapterApp +// +// Created by Jose Cabal-Ugaz on 9/23/14. +// Copyright (c) 2014 AppNexus. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/tests/MediationAdapterAppTests/FacebookAdapter.m b/tests/MediationAdapterAppTests/FacebookAdapter.m new file mode 100644 index 000000000..ab894579f --- /dev/null +++ b/tests/MediationAdapterAppTests/FacebookAdapter.m @@ -0,0 +1,167 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "ANMediationAdapterViewController.h" +#import "ANHTTPStubbingManager.h" +#import "ANURLConnectionStub.h" +#import "ANBannerAdView.h" +#import "ANGlobal.h" +#import "ANLogManager.h" +#import "XCTestCase+ANCategory.h" +#import "ANInterstitialAd.h" +#import "ANBannerAdView+ANTest.h" +#import "ANMediationContainerView.h" +#import "ANAdAdapterBannerFacebook.h" +#import "ANAdAdapterInterstitialFacebook.h" +#import "ANMediationAdViewController.h" +#import "ANMediationAdViewController+ANTest.h" +#import +#import "ANAdView+ANTest.h" +#import "ANInterstitialAd+ANTest.h" + +@interface FacebookAdapter : XCTestCase +@property (nonatomic) XCTestExpectation *adProtocolCallbackExpectation; +@property (nonatomic) BOOL adDidLoad; +@end + +@implementation FacebookAdapter + +- (void)tearDown { + [super tearDown]; + self.adProtocolCallbackExpectation = nil; + self.adDidLoad = NO; +} + +- (void)testBanner { + ANMediationAdapterViewController *rootVC = (ANMediationAdapterViewController *)[UIApplication sharedApplication].keyWindow.rootViewController; + ANBannerAdView *bannerAdView = [rootVC loadFacebookBannerWithDelegate:self]; + + self.adProtocolCallbackExpectation = [self expectationWithDescription:@"ANAdProtocolCallback"]; + [self waitForExpectationsWithTimeout:kAppNexusRequestTimeoutInterval + handler:^(NSError *error) { + XCTAssertTrue(self.adDidLoad); + }]; + BOOL isMediatedContainerView = [bannerAdView.contentView isKindOfClass:[ANMediationContainerView class]]; + XCTAssertTrue(isMediatedContainerView); + if (!isMediatedContainerView) return; + + ANMediationContainerView *mediatedContainerView = (ANMediationContainerView *)bannerAdView.contentView; + BOOL isFacebookAdapter = [mediatedContainerView.controller.currentAdapter isKindOfClass:[ANAdAdapterBannerFacebook class]]; + XCTAssertTrue(isFacebookAdapter); + if (!isFacebookAdapter) return; + + BOOL conformsToFBProtocol = [mediatedContainerView.controller.currentAdapter conformsToProtocol:@protocol(FBAdViewDelegate)]; + XCTAssertTrue(conformsToFBProtocol); + if (!conformsToFBProtocol) return; + + ANAdAdapterBannerFacebook *facebookAdapter = (ANAdAdapterBannerFacebook *)mediatedContainerView.controller.currentAdapter; + + // [id adViewDidClick:view]; + [self expectationForNotification:kANAdViewAdWasClickedNotification + object:bannerAdView + handler:nil]; + [self expectationForNotification:kANAdViewAdWillPresentNotification + object:bannerAdView + handler:nil]; + [self expectationForNotification:kANAdViewAdDidPresentNotification + object:bannerAdView + handler:nil]; + [facebookAdapter adViewDidClick:nil]; + [self waitForExpectationsWithTimeout:1.0 + handler:nil]; + + // [id adViewDidFinishHandlingClick:view]; + [self expectationForNotification:kANAdViewAdWillCloseNotification + object:bannerAdView + handler:nil]; + [self expectationForNotification:kANAdViewAdDidCloseNotification + object:bannerAdView + handler:nil]; + [facebookAdapter adViewDidFinishHandlingClick:nil]; + [self waitForExpectationsWithTimeout:1.0 + handler:nil]; + + [bannerAdView removeFromSuperview]; +} + +- (void)testInterstitial { + ANMediationAdapterViewController *rootVC = (ANMediationAdapterViewController *)[UIApplication sharedApplication].keyWindow.rootViewController; + ANInterstitialAd *interstitialAd = [rootVC loadFacebookInterstitialWithDelegate:self]; + + self.adProtocolCallbackExpectation = [self expectationWithDescription:@"ANAdProtocolCallback"]; + [self waitForExpectationsWithTimeout:kAppNexusRequestTimeoutInterval + handler:^(NSError *error) { + XCTAssertTrue(self.adDidLoad); + XCTAssertTrue(interstitialAd.isReady); + }]; + + id adapter = [interstitialAd.precachedAdObjects firstObject][@"kANInterstitialAdViewKey"]; + + UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; + [interstitialAd displayAdFromViewController:rootViewController]; + XCTAssertFalse(interstitialAd.isReady); + + BOOL isFacebookAdapter = [adapter isKindOfClass:[ANAdAdapterInterstitialFacebook class]]; + XCTAssertTrue(isFacebookAdapter); + if (!isFacebookAdapter) return; + + BOOL conformsToFBProtocol = [adapter conformsToProtocol:@protocol(FBInterstitialAdDelegate)]; + XCTAssertTrue(conformsToFBProtocol); + if (!conformsToFBProtocol) return; + + [XCTestCase delayForTimeInterval:1.5]; + + XCTAssertTrue(rootViewController.presentedViewController); + + // [id interstitialAdDidClick:interstitial] + ANAdAdapterInterstitialFacebook *fbAdapter = (ANAdAdapterInterstitialFacebook *)adapter; + [self expectationForNotification:kANAdViewAdWasClickedNotification + object:interstitialAd + handler:nil]; + [fbAdapter interstitialAdDidClick:nil]; + [self waitForExpectationsWithTimeout:1.0 + handler:nil]; + + // [id interstitialAdWillClose:interstitial] + [self expectationForNotification:kANAdViewAdWillCloseNotification + object:interstitialAd + handler:nil]; + [fbAdapter interstitialAdWillClose:nil]; + [self waitForExpectationsWithTimeout:1.0 + handler:nil]; + + [rootViewController dismissViewControllerAnimated:NO completion:nil]; + + // [id interstitialAdDidClose:interstitial] + [self expectationForNotification:kANAdViewAdDidCloseNotification + object:interstitialAd + handler:nil]; + [fbAdapter interstitialAdDidClose:nil]; + [self waitForExpectationsWithTimeout:1.0 + handler:nil]; +} + +- (void)adDidReceiveAd:(id)ad { + self.adDidLoad = YES; + [self.adProtocolCallbackExpectation fulfill]; +} + +- (void)ad:(id)ad requestFailedWithError:(NSError *)error { + [self.adProtocolCallbackExpectation fulfill]; +} + +@end diff --git a/tests/MediationAdapterAppTests/Info.plist b/tests/MediationAdapterAppTests/Info.plist new file mode 100644 index 000000000..2984231fe --- /dev/null +++ b/tests/MediationAdapterAppTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + corp.appnexus.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/tests/NewTestApp.xcodeproj/project.pbxproj b/tests/NewTestApp.xcodeproj/project.pbxproj new file mode 100644 index 000000000..f6a559de0 --- /dev/null +++ b/tests/NewTestApp.xcodeproj/project.pbxproj @@ -0,0 +1,1915 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 8A0AA45519DB2CB4005EC52C /* ANAdFetcher+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009FD19DB1E150090EBED /* ANAdFetcher+ANTest.m */; }; + 8A0AA45619DB2CB4005EC52C /* ANAdView+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009FF19DB1E150090EBED /* ANAdView+ANTest.m */; }; + 8A0AA45719DB2CB4005EC52C /* ANAdWebViewController+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0119DB1E150090EBED /* ANAdWebViewController+ANTest.m */; }; + 8A0AA45819DB2CB4005EC52C /* ANBannerAdView+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0319DB1E150090EBED /* ANBannerAdView+ANTest.m */; }; + 8A0AA45919DB2CB4005EC52C /* ANInterstitialAd+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0519DB1E150090EBED /* ANInterstitialAd+ANTest.m */; }; + 8A0AA45A19DB2CB4005EC52C /* NSObject+Swizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0919DB1E150090EBED /* NSObject+Swizzling.m */; }; + 8A0AA46A19DB30A2005EC52C /* ANAdResponseTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA46319DB30A2005EC52C /* ANAdResponseTestCase.m */; }; + 8A0AA46B19DB30A2005EC52C /* ANAdViewMRAIDCreativeTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA46419DB30A2005EC52C /* ANAdViewMRAIDCreativeTestCase.m */; }; + 8A0AA46C19DB30A2005EC52C /* ANBannerAdViewTransitionsTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA46519DB30A2005EC52C /* ANBannerAdViewTransitionsTestCase.m */; }; + 8A0AA46D19DB30A2005EC52C /* ANLocationTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA46619DB30A2005EC52C /* ANLocationTestCase.m */; }; + 8A0AA46E19DB30A2005EC52C /* ANMediationAdViewControllerTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA46719DB30A2005EC52C /* ANMediationAdViewControllerTestCase.m */; }; + 8A0AA46F19DB30A2005EC52C /* ANMRAIDViewControllerTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA46819DB30A2005EC52C /* ANMRAIDViewControllerTestCase.m */; }; + 8A0AA47019DB30A2005EC52C /* UIViewConstraintsTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA46919DB30A2005EC52C /* UIViewConstraintsTestCase.m */; }; + 8A0AA47719DB314C005EC52C /* ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA47219DB314C005EC52C /* ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m */; }; + 8A0AA47819DB314C005EC52C /* ANFailedMultiple.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA47419DB314C005EC52C /* ANFailedMultiple.m */; }; + 8A0AA47919DB314C005EC52C /* ANLoadAndHitOtherCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA47619DB314C005EC52C /* ANLoadAndHitOtherCallbacks.m */; }; + 8A0AA48E19DB3453005EC52C /* ANAdAdapterBannerMultipleFailureCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA47B19DB3453005EC52C /* ANAdAdapterBannerMultipleFailureCallbacks.m */; }; + 8A0AA48F19DB3453005EC52C /* ANAdAdapterBannerMultipleSuccessCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA47D19DB3453005EC52C /* ANAdAdapterBannerMultipleSuccessCallbacks.m */; }; + 8A0AA49019DB3453005EC52C /* ANAdAdapterBannerNetworkError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA47F19DB3453005EC52C /* ANAdAdapterBannerNetworkError.m */; }; + 8A0AA49119DB3453005EC52C /* ANAdAdapterBannerNoDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA48119DB3453005EC52C /* ANAdAdapterBannerNoDelegate.m */; }; + 8A0AA49219DB3453005EC52C /* ANAdAdapterBannerNoRequestMethod.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA48319DB3453005EC52C /* ANAdAdapterBannerNoRequestMethod.m */; }; + 8A0AA49319DB3453005EC52C /* ANAdAdapterBannerSuccessful.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA48519DB3453005EC52C /* ANAdAdapterBannerSuccessful.m */; }; + 8A0AA49419DB3453005EC52C /* ANAdAdapterBannerSuccessfulThenUnableToFill.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA48719DB3453005EC52C /* ANAdAdapterBannerSuccessfulThenUnableToFill.m */; }; + 8A0AA49519DB3453005EC52C /* ANAdAdapterBannerTimeoutThenSuccessful.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA48919DB3453005EC52C /* ANAdAdapterBannerTimeoutThenSuccessful.m */; }; + 8A0AA49619DB3453005EC52C /* ANAdAdapterBannerUnableToFill.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA48B19DB3453005EC52C /* ANAdAdapterBannerUnableToFill.m */; }; + 8A0AA49719DB3453005EC52C /* ANAdAdapterBannerUnableToFillThenSuccessful.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A0AA48D19DB3453005EC52C /* ANAdAdapterBannerUnableToFillThenSuccessful.m */; }; + 8A3B37AF19D62A4E00CE24A5 /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A5D27CA199AB26B00F2A516 /* iAd.framework */; }; + 8A742A8E19CB2E4700D2AE6F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8AD0183A199932F9007874BA /* Main.storyboard */; }; + 8A7F4CC519DB3976003ECC5C /* MPAdBrowserController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8A7F4CC119DB3976003ECC5C /* MPAdBrowserController.xib */; }; + 8A7F4CC619DB3976003ECC5C /* MPCloseButtonX.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A7F4CC219DB3976003ECC5C /* MPCloseButtonX.png */; }; + 8A7F4CC719DB3976003ECC5C /* MPCloseButtonX@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A7F4CC319DB3976003ECC5C /* MPCloseButtonX@2x.png */; }; + 8A7F4CC819DB3976003ECC5C /* MRAID.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A7F4CC419DB3976003ECC5C /* MRAID.bundle */; }; + 8AA0095A19DB16C50090EBED /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0095519DB16C50090EBED /* AppDelegate.m */; }; + 8AA0095B19DB16C50090EBED /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0095619DB16C50090EBED /* main.m */; }; + 8AA0095C19DB16C50090EBED /* TestsStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8AA0095719DB16C50090EBED /* TestsStoryboard.storyboard */; }; + 8AA0095D19DB16C50090EBED /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0095919DB16C50090EBED /* ViewController.m */; }; + 8AA0098919DB16CD0090EBED /* BasicTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0095F19DB16CD0090EBED /* BasicTests.m */; }; + 8AA0098A19DB16CD0090EBED /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 8AA0096019DB16CD0090EBED /* InfoPlist.strings */; }; + 8AA0098B19DB16CD0090EBED /* MediationCallbacksTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0096219DB16CD0090EBED /* MediationCallbacksTests.m */; }; + 8AA0098C19DB16CD0090EBED /* MediationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0096319DB16CD0090EBED /* MediationTests.m */; }; + 8AA0098D19DB16CD0090EBED /* MRAIDTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0096419DB16CD0090EBED /* MRAIDTests.m */; }; + 8AA0098F19DB16CD0090EBED /* ANBaseTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0096919DB16CD0090EBED /* ANBaseTestCase.m */; }; + 8AA0099019DB16CD0090EBED /* ANMRAIDTestResponses.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0096B19DB16CD0090EBED /* ANMRAIDTestResponses.m */; }; + 8AA0099119DB16CD0090EBED /* ANTestResponses.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0096D19DB16CD0090EBED /* ANTestResponses.m */; }; + 8AA0099219DB16CD0090EBED /* ANAdAdapterBannerDummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097019DB16CD0090EBED /* ANAdAdapterBannerDummy.m */; }; + 8AA0099319DB16CD0090EBED /* ANAdAdapterBannerNoAds.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097219DB16CD0090EBED /* ANAdAdapterBannerNoAds.m */; }; + 8AA0099419DB16CD0090EBED /* ANAdAdapterBannerRequestFail.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097419DB16CD0090EBED /* ANAdAdapterBannerRequestFail.m */; }; + 8AA0099519DB16CD0090EBED /* ANAdAdapterErrorCode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097619DB16CD0090EBED /* ANAdAdapterErrorCode.m */; }; + 8AA0099619DB16CD0090EBED /* ANFailAndHitOtherCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097819DB16CD0090EBED /* ANFailAndHitOtherCallbacks.m */; }; + 8AA0099719DB16CD0090EBED /* ANFailedMultiple.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097A19DB16CD0090EBED /* ANFailedMultiple.m */; }; + 8AA0099819DB16CD0090EBED /* ANFailThenLoad.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097C19DB16CD0090EBED /* ANFailThenLoad.m */; }; + 8AA0099919DB16CD0090EBED /* ANLoadAndHitOtherCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0097E19DB16CD0090EBED /* ANLoadAndHitOtherCallbacks.m */; }; + 8AA0099A19DB16CD0090EBED /* ANLoadedMultiple.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0098019DB16CD0090EBED /* ANLoadedMultiple.m */; }; + 8AA0099B19DB16CD0090EBED /* ANLoadThenFail.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0098219DB16CD0090EBED /* ANLoadThenFail.m */; }; + 8AA0099C19DB16CD0090EBED /* ANSuccessfulBanner.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0098419DB16CD0090EBED /* ANSuccessfulBanner.m */; }; + 8AA0099D19DB16CD0090EBED /* ANSuccessfulBannerNeverCalled.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0098619DB16CD0090EBED /* ANSuccessfulBannerNeverCalled.m */; }; + 8AA0099E19DB16CD0090EBED /* ANTimeout.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA0098819DB16CD0090EBED /* ANTimeout.m */; }; + 8AA009A319DB16F30090EBED /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094019DB169B0090EBED /* libANSDK.a */; }; + 8AA009AC19DB18AE0090EBED /* ANHTTPStubbingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009A719DB18AE0090EBED /* ANHTTPStubbingManager.m */; }; + 8AA009AD19DB18AE0090EBED /* ANHTTPStubURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009A919DB18AE0090EBED /* ANHTTPStubURLProtocol.m */; }; + 8AA009AE19DB18AE0090EBED /* ANURLConnectionStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009AB19DB18AE0090EBED /* ANURLConnectionStub.m */; }; + 8AA009B019DB18CC0090EBED /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AA009AF19DB18CC0090EBED /* Default-568h@2x.png */; }; + 8AA009B319DB19790090EBED /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8AA009B119DB19120090EBED /* Images.xcassets */; }; + 8AA009B619DB1A290090EBED /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8AA0094219DB169B0090EBED /* ANSDKResources.bundle */; }; + 8AA009C419DB1B200090EBED /* ANMediationAdapterViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009B919DB1B200090EBED /* ANMediationAdapterViewController.m */; }; + 8AA009C519DB1B200090EBED /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009BB19DB1B200090EBED /* AppDelegate.m */; }; + 8AA009CA19DB1B200090EBED /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009C219DB1B200090EBED /* main.m */; }; + 8AA009E119DB1CEC0090EBED /* FacebookAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009DF19DB1CEC0090EBED /* FacebookAdapter.m */; }; + 8AA009E419DB1D270090EBED /* AmazonAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA009E319DB1D270090EBED /* AmazonAd.framework */; }; + 8AA009E619DB1D320090EBED /* FBAudienceNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA009E519DB1D320090EBED /* FBAudienceNetwork.framework */; }; + 8AA009E819DB1D3C0090EBED /* libGoogleAdMobAds.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA009E719DB1D3C0090EBED /* libGoogleAdMobAds.a */; }; + 8AA009EA19DB1D480090EBED /* MillennialMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA009E919DB1D480090EBED /* MillennialMedia.framework */; }; + 8AA009EC19DB1D530090EBED /* libMoPubSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA009EB19DB1D530090EBED /* libMoPubSDK.a */; }; + 8AA009ED19DB1D670090EBED /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 8AA009C019DB1B200090EBED /* Images.xcassets */; }; + 8AA009EE19DB1D790090EBED /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8AA009BC19DB1B200090EBED /* LaunchScreen.xib */; }; + 8AA009EF19DB1D790090EBED /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8AA009BE19DB1B200090EBED /* Main.storyboard */; }; + 8AA009F019DB1DA50090EBED /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094019DB169B0090EBED /* libANSDK.a */; }; + 8AA009F219DB1DA50090EBED /* libANSDKGoogleAdMobAdapter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094419DB169B0090EBED /* libANSDKGoogleAdMobAdapter.a */; }; + 8AA009F319DB1DA50090EBED /* libANSDKiAdAdapter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094619DB169B0090EBED /* libANSDKiAdAdapter.a */; }; + 8AA009F419DB1DA50090EBED /* libANSDKMillennialMediaAdapter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094819DB169B0090EBED /* libANSDKMillennialMediaAdapter.a */; }; + 8AA009F519DB1DA50090EBED /* libANSDKMoPubAdapter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094A19DB169B0090EBED /* libANSDKMoPubAdapter.a */; }; + 8AA009F619DB1DA50090EBED /* libANSDKFacebookAdapter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094C19DB169B0090EBED /* libANSDKFacebookAdapter.a */; }; + 8AA009F719DB1DA50090EBED /* libANSDKAmazonAdapter.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0095219DB169B0090EBED /* libANSDKAmazonAdapter.a */; }; + 8AA009F819DB1DE60090EBED /* ANHTTPStubbingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009A719DB18AE0090EBED /* ANHTTPStubbingManager.m */; }; + 8AA009F919DB1DE60090EBED /* ANHTTPStubURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009A919DB18AE0090EBED /* ANHTTPStubURLProtocol.m */; }; + 8AA009FA19DB1DE60090EBED /* ANURLConnectionStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009AB19DB18AE0090EBED /* ANURLConnectionStub.m */; }; + 8AA00A2319DB1F290090EBED /* FacebookBanner.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1819DB1E150090EBED /* FacebookBanner.json */; }; + 8AA00A2419DB1F290090EBED /* FacebookInterstitial.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1919DB1E150090EBED /* FacebookInterstitial.json */; }; + 8AA00A2519DB1F290090EBED /* iAdBanner.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1A19DB1E150090EBED /* iAdBanner.json */; }; + 8AA00A2619DB1F290090EBED /* iAdInterstitial.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1B19DB1E150090EBED /* iAdInterstitial.json */; }; + 8AA00A2719DB1F290090EBED /* MillennialMediaBanner.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1C19DB1E150090EBED /* MillennialMediaBanner.json */; }; + 8AA00A2819DB1F290090EBED /* MillennialMediaInterstitial.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1D19DB1E150090EBED /* MillennialMediaInterstitial.json */; }; + 8AA00A2919DB1F290090EBED /* MoPubBanner.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1E19DB1E150090EBED /* MoPubBanner.json */; }; + 8AA00A2A19DB1F290090EBED /* MoPubInterstitial.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1F19DB1E150090EBED /* MoPubInterstitial.json */; }; + 8AA00A2D19DB1FC20090EBED /* ANAdAdapterBaseAmazon+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A2C19DB1FC20090EBED /* ANAdAdapterBaseAmazon+ANTest.m */; }; + 8AA00A2F19DB1FD70090EBED /* AmazonBanner.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A2E19DB1FD70090EBED /* AmazonBanner.json */; }; + 8AA00A3119DB1FFB0090EBED /* AmazonInterstitial.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A3019DB1FFB0090EBED /* AmazonInterstitial.json */; }; + 8AA00A3219DB204A0090EBED /* NSObject+Swizzling.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0919DB1E150090EBED /* NSObject+Swizzling.m */; }; + 8AA00A3519DB20A00090EBED /* AdMobBanner.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A3319DB20A00090EBED /* AdMobBanner.json */; }; + 8AA00A3619DB20A00090EBED /* AdMobInterstitial.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A3419DB20A00090EBED /* AdMobInterstitial.json */; }; + 8AA00A3719DB21FA0090EBED /* XCTestCase+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0F19DB1E150090EBED /* XCTestCase+ANCategory.m */; }; + 8AA00A3919DB22410090EBED /* ANAdView+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA009FF19DB1E150090EBED /* ANAdView+ANTest.m */; }; + 8AA00A4219DB2A3A0090EBED /* libANSDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AA0094019DB169B0090EBED /* libANSDK.a */; }; + 8AA00A4319DB2A410090EBED /* ANSDKResources.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8AA0094219DB169B0090EBED /* ANSDKResources.bundle */; }; + 8AA00A4819DB2A9A0090EBED /* dogSelfie.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1319DB1E150090EBED /* dogSelfie.jpg */; }; + 8AA00A4919DB2A9A0090EBED /* dogSelfie@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1419DB1E150090EBED /* dogSelfie@2x.jpg */; }; + 8AA00A4A19DB2A9A0090EBED /* GreyWhiteCat.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1519DB1E150090EBED /* GreyWhiteCat.jpg */; }; + 8AA00A4B19DB2A9A0090EBED /* GreyWhiteCat@2x.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A1619DB1E150090EBED /* GreyWhiteCat@2x.jpg */; }; + 8AA00A4C19DB2AA60090EBED /* SuccessfulMediationResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A2019DB1E150090EBED /* SuccessfulMediationResponse.json */; }; + 8AA00A4D19DB2AA60090EBED /* SuccessfulMRAIDListenerResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A2119DB1E150090EBED /* SuccessfulMRAIDListenerResponse.json */; }; + 8AA00A4E19DB2AA60090EBED /* SuccessfulMRAIDResponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AA00A2219DB1E150090EBED /* SuccessfulMRAIDResponse.json */; }; + 8AA00A4F19DB2B160090EBED /* XCTestCase+ANAdResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0B19DB1E150090EBED /* XCTestCase+ANAdResponse.m */; }; + 8AA00A5019DB2B160090EBED /* XCTestCase+ANBannerAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0D19DB1E150090EBED /* XCTestCase+ANBannerAdView.m */; }; + 8AA00A5119DB2B160090EBED /* XCTestCase+ANCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0F19DB1E150090EBED /* XCTestCase+ANCategory.m */; }; + 8AA00A5219DB2B160090EBED /* XCTestCase+ANMediatedAd.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A1119DB1E150090EBED /* XCTestCase+ANMediatedAd.m */; }; + 8AA00A5519DB2BF40090EBED /* ANMediationAdViewController+ANTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA00A0719DB1E150090EBED /* ANMediationAdViewController+ANTest.m */; }; + 8AB387F819DB1245006F9E15 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AB387F719DB1245006F9E15 /* UIKit.framework */; }; + 8AB387F919DB1297006F9E15 /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AF3659319D479130097019F /* AdSupport.framework */; }; + 8AD01833199932F9007874BA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD01832199932F9007874BA /* main.m */; }; + 8AD01836199932F9007874BA /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD01835199932F9007874BA /* AppDelegate.m */; }; + 8AD01839199932F9007874BA /* ANNewTestAppViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AD01838199932F9007874BA /* ANNewTestAppViewController.m */; }; + 8AD0DBFD19CA40AE00170BCB /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8AD0DBFC19CA40AE00170BCB /* Default-568h@2x.png */; }; + 8AF3659419D479130097019F /* AdSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AF3659319D479130097019F /* AdSupport.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 8A9F94D919D1C37700AB739F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AD01825199932F9007874BA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8A9F94BF19D1C37700AB739F; + remoteInfo = MediationAdapterApp; + }; + 8AA0093F19DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EC3E5CDC1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AA0094119DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EC48177B1845046A0066BBFE; + remoteInfo = ANSDKResources; + }; + 8AA0094319DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D6D119CC874B00001B70; + remoteInfo = ANSDKGoogleAdMobAdapter; + }; + 8AA0094519DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D70219CC878300001B70; + remoteInfo = ANSDKiAdAdapter; + }; + 8AA0094719DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D73319CC879900001B70; + remoteInfo = ANSDKMillennialMediaAdapter; + }; + 8AA0094919DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D76419CC87B200001B70; + remoteInfo = ANSDKMoPubAdapter; + }; + 8AA0094B19DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D79519CC87CC00001B70; + remoteInfo = ANSDKFacebookAdapter; + }; + 8AA0094D19DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D85319CC9A6F00001B70; + remoteInfo = ANAdapterForGoogleAdMobSDK; + }; + 8AA0094F19DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AE2D86119CC9B0F00001B70; + remoteInfo = ANAdapterForMoPubSDK; + }; + 8AA0095119DB169B0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8AD5154019D214CA002E53D6; + remoteInfo = ANSDKAmazonAdapter; + }; + 8AA0099F19DB16EC0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AA009A119DB16EF0090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC48177A1845046A0066BBFE; + remoteInfo = ANSDKResources; + }; + 8AA009CE19DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AA009D019DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC48177A1845046A0066BBFE; + remoteInfo = ANSDKResources; + }; + 8AA009D219DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8AE2D6A119CC874B00001B70; + remoteInfo = ANSDKGoogleAdMobAdapter; + }; + 8AA009D419DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8AE2D6D219CC878300001B70; + remoteInfo = ANSDKiAdAdapter; + }; + 8AA009D619DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8AE2D70319CC879900001B70; + remoteInfo = ANSDKMillennialMediaAdapter; + }; + 8AA009D819DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8AE2D73419CC87B200001B70; + remoteInfo = ANSDKMoPubAdapter; + }; + 8AA009DA19DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8AE2D76519CC87CC00001B70; + remoteInfo = ANSDKFacebookAdapter; + }; + 8AA009DC19DB1BC10090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 8AD5153219D214CA002E53D6; + remoteInfo = ANSDKAmazonAdapter; + }; + 8AA00A3E19DB2A200090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC48177A1845046A0066BBFE; + remoteInfo = ANSDKResources; + }; + 8AA00A4019DB2A230090EBED /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = EC3E5CDB1843C6D50070315E; + remoteInfo = ANSDK; + }; + 8AB387BE19DB0CA8006F9E15 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AD01825199932F9007874BA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8AB387A419DB0CA8006F9E15; + remoteInfo = OriginalUnitTestApp; + }; + 8AD01844199932F9007874BA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8AD01825199932F9007874BA /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8AD0182C199932F9007874BA; + remoteInfo = NewTestApp; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 8A0AA46319DB30A2005EC52C /* ANAdResponseTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdResponseTestCase.m; sourceTree = ""; }; + 8A0AA46419DB30A2005EC52C /* ANAdViewMRAIDCreativeTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdViewMRAIDCreativeTestCase.m; sourceTree = ""; }; + 8A0AA46519DB30A2005EC52C /* ANBannerAdViewTransitionsTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBannerAdViewTransitionsTestCase.m; sourceTree = ""; }; + 8A0AA46619DB30A2005EC52C /* ANLocationTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLocationTestCase.m; sourceTree = ""; }; + 8A0AA46719DB30A2005EC52C /* ANMediationAdViewControllerTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediationAdViewControllerTestCase.m; sourceTree = ""; }; + 8A0AA46819DB30A2005EC52C /* ANMRAIDViewControllerTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDViewControllerTestCase.m; sourceTree = ""; }; + 8A0AA46919DB30A2005EC52C /* UIViewConstraintsTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIViewConstraintsTestCase.m; sourceTree = ""; }; + 8A0AA47119DB314C005EC52C /* ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h; path = "Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h"; sourceTree = ""; }; + 8A0AA47219DB314C005EC52C /* ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m; path = "Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m"; sourceTree = ""; }; + 8A0AA47319DB314C005EC52C /* ANFailedMultiple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANFailedMultiple.h; path = "Banner Adapters/ANFailedMultiple.h"; sourceTree = ""; }; + 8A0AA47419DB314C005EC52C /* ANFailedMultiple.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANFailedMultiple.m; path = "Banner Adapters/ANFailedMultiple.m"; sourceTree = ""; }; + 8A0AA47519DB314C005EC52C /* ANLoadAndHitOtherCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANLoadAndHitOtherCallbacks.h; path = "Banner Adapters/ANLoadAndHitOtherCallbacks.h"; sourceTree = ""; }; + 8A0AA47619DB314C005EC52C /* ANLoadAndHitOtherCallbacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANLoadAndHitOtherCallbacks.m; path = "Banner Adapters/ANLoadAndHitOtherCallbacks.m"; sourceTree = ""; }; + 8A0AA47A19DB3453005EC52C /* ANAdAdapterBannerMultipleFailureCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerMultipleFailureCallbacks.h; path = "Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.h"; sourceTree = ""; }; + 8A0AA47B19DB3453005EC52C /* ANAdAdapterBannerMultipleFailureCallbacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerMultipleFailureCallbacks.m; path = "Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.m"; sourceTree = ""; }; + 8A0AA47C19DB3453005EC52C /* ANAdAdapterBannerMultipleSuccessCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerMultipleSuccessCallbacks.h; path = "Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.h"; sourceTree = ""; }; + 8A0AA47D19DB3453005EC52C /* ANAdAdapterBannerMultipleSuccessCallbacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerMultipleSuccessCallbacks.m; path = "Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.m"; sourceTree = ""; }; + 8A0AA47E19DB3453005EC52C /* ANAdAdapterBannerNetworkError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerNetworkError.h; path = "Banner Adapters/ANAdAdapterBannerNetworkError.h"; sourceTree = ""; }; + 8A0AA47F19DB3453005EC52C /* ANAdAdapterBannerNetworkError.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerNetworkError.m; path = "Banner Adapters/ANAdAdapterBannerNetworkError.m"; sourceTree = ""; }; + 8A0AA48019DB3453005EC52C /* ANAdAdapterBannerNoDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerNoDelegate.h; path = "Banner Adapters/ANAdAdapterBannerNoDelegate.h"; sourceTree = ""; }; + 8A0AA48119DB3453005EC52C /* ANAdAdapterBannerNoDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerNoDelegate.m; path = "Banner Adapters/ANAdAdapterBannerNoDelegate.m"; sourceTree = ""; }; + 8A0AA48219DB3453005EC52C /* ANAdAdapterBannerNoRequestMethod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerNoRequestMethod.h; path = "Banner Adapters/ANAdAdapterBannerNoRequestMethod.h"; sourceTree = ""; }; + 8A0AA48319DB3453005EC52C /* ANAdAdapterBannerNoRequestMethod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerNoRequestMethod.m; path = "Banner Adapters/ANAdAdapterBannerNoRequestMethod.m"; sourceTree = ""; }; + 8A0AA48419DB3453005EC52C /* ANAdAdapterBannerSuccessful.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerSuccessful.h; path = "Banner Adapters/ANAdAdapterBannerSuccessful.h"; sourceTree = ""; }; + 8A0AA48519DB3453005EC52C /* ANAdAdapterBannerSuccessful.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerSuccessful.m; path = "Banner Adapters/ANAdAdapterBannerSuccessful.m"; sourceTree = ""; }; + 8A0AA48619DB3453005EC52C /* ANAdAdapterBannerSuccessfulThenUnableToFill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerSuccessfulThenUnableToFill.h; path = "Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.h"; sourceTree = ""; }; + 8A0AA48719DB3453005EC52C /* ANAdAdapterBannerSuccessfulThenUnableToFill.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerSuccessfulThenUnableToFill.m; path = "Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.m"; sourceTree = ""; }; + 8A0AA48819DB3453005EC52C /* ANAdAdapterBannerTimeoutThenSuccessful.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerTimeoutThenSuccessful.h; path = "Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.h"; sourceTree = ""; }; + 8A0AA48919DB3453005EC52C /* ANAdAdapterBannerTimeoutThenSuccessful.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerTimeoutThenSuccessful.m; path = "Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.m"; sourceTree = ""; }; + 8A0AA48A19DB3453005EC52C /* ANAdAdapterBannerUnableToFill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerUnableToFill.h; path = "Banner Adapters/ANAdAdapterBannerUnableToFill.h"; sourceTree = ""; }; + 8A0AA48B19DB3453005EC52C /* ANAdAdapterBannerUnableToFill.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerUnableToFill.m; path = "Banner Adapters/ANAdAdapterBannerUnableToFill.m"; sourceTree = ""; }; + 8A0AA48C19DB3453005EC52C /* ANAdAdapterBannerUnableToFillThenSuccessful.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ANAdAdapterBannerUnableToFillThenSuccessful.h; path = "Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.h"; sourceTree = ""; }; + 8A0AA48D19DB3453005EC52C /* ANAdAdapterBannerUnableToFillThenSuccessful.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ANAdAdapterBannerUnableToFillThenSuccessful.m; path = "Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.m"; sourceTree = ""; }; + 8A5D27BC199A9DAB00F2A516 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; + 8A5D27CA199AB26B00F2A516 /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; + 8A64C0B519D1CBE000B92D30 /* NewTestAppPrefixHeader.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewTestAppPrefixHeader.pch; sourceTree = ""; }; + 8A7F4CC119DB3976003ECC5C /* MPAdBrowserController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = MPAdBrowserController.xib; path = ../mediation/mediatedviews/MoPub/MoPubSDK/MPAdBrowserController.xib; sourceTree = ""; }; + 8A7F4CC219DB3976003ECC5C /* MPCloseButtonX.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = MPCloseButtonX.png; path = ../mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX.png; sourceTree = ""; }; + 8A7F4CC319DB3976003ECC5C /* MPCloseButtonX@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "MPCloseButtonX@2x.png"; path = "../mediation/mediatedviews/MoPub/MoPubSDK/MPCloseButtonX@2x.png"; sourceTree = ""; }; + 8A7F4CC419DB3976003ECC5C /* MRAID.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = MRAID.bundle; path = ../mediation/mediatedviews/MoPub/MoPubSDK/MRAID.bundle; sourceTree = ""; }; + 8A9F94C019D1C37700AB739F /* MediationAdapterApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MediationAdapterApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8A9F94D819D1C37700AB739F /* MediationAdapterAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MediationAdapterAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AA0095419DB16C50090EBED /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 8AA0095519DB16C50090EBED /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 8AA0095619DB16C50090EBED /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 8AA0095719DB16C50090EBED /* TestsStoryboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TestsStoryboard.storyboard; sourceTree = ""; }; + 8AA0095819DB16C50090EBED /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 8AA0095919DB16C50090EBED /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 8AA0095F19DB16CD0090EBED /* BasicTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BasicTests.m; sourceTree = ""; }; + 8AA0096119DB16CD0090EBED /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 8AA0096219DB16CD0090EBED /* MediationCallbacksTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MediationCallbacksTests.m; sourceTree = ""; }; + 8AA0096319DB16CD0090EBED /* MediationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MediationTests.m; sourceTree = ""; }; + 8AA0096419DB16CD0090EBED /* MRAIDTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MRAIDTests.m; sourceTree = ""; }; + 8AA0096519DB16CD0090EBED /* TestsTests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TestsTests-Info.plist"; sourceTree = ""; }; + 8AA0096619DB16CD0090EBED /* TestsTests-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TestsTests-Prefix.pch"; sourceTree = ""; }; + 8AA0096819DB16CD0090EBED /* ANBaseTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANBaseTestCase.h; sourceTree = ""; }; + 8AA0096919DB16CD0090EBED /* ANBaseTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBaseTestCase.m; sourceTree = ""; }; + 8AA0096A19DB16CD0090EBED /* ANMRAIDTestResponses.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDTestResponses.h; sourceTree = ""; }; + 8AA0096B19DB16CD0090EBED /* ANMRAIDTestResponses.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDTestResponses.m; sourceTree = ""; }; + 8AA0096C19DB16CD0090EBED /* ANTestResponses.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTestResponses.h; sourceTree = ""; }; + 8AA0096D19DB16CD0090EBED /* ANTestResponses.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANTestResponses.m; sourceTree = ""; }; + 8AA0096F19DB16CD0090EBED /* ANAdAdapterBannerDummy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerDummy.h; sourceTree = ""; }; + 8AA0097019DB16CD0090EBED /* ANAdAdapterBannerDummy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerDummy.m; sourceTree = ""; }; + 8AA0097119DB16CD0090EBED /* ANAdAdapterBannerNoAds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerNoAds.h; sourceTree = ""; }; + 8AA0097219DB16CD0090EBED /* ANAdAdapterBannerNoAds.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerNoAds.m; sourceTree = ""; }; + 8AA0097319DB16CD0090EBED /* ANAdAdapterBannerRequestFail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterBannerRequestFail.h; sourceTree = ""; }; + 8AA0097419DB16CD0090EBED /* ANAdAdapterBannerRequestFail.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterBannerRequestFail.m; sourceTree = ""; }; + 8AA0097519DB16CD0090EBED /* ANAdAdapterErrorCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANAdAdapterErrorCode.h; sourceTree = ""; }; + 8AA0097619DB16CD0090EBED /* ANAdAdapterErrorCode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANAdAdapterErrorCode.m; sourceTree = ""; }; + 8AA0097719DB16CD0090EBED /* ANFailAndHitOtherCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANFailAndHitOtherCallbacks.h; sourceTree = ""; }; + 8AA0097819DB16CD0090EBED /* ANFailAndHitOtherCallbacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANFailAndHitOtherCallbacks.m; sourceTree = ""; }; + 8AA0097919DB16CD0090EBED /* ANFailedMultiple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANFailedMultiple.h; sourceTree = ""; }; + 8AA0097A19DB16CD0090EBED /* ANFailedMultiple.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANFailedMultiple.m; sourceTree = ""; }; + 8AA0097B19DB16CD0090EBED /* ANFailThenLoad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANFailThenLoad.h; sourceTree = ""; }; + 8AA0097C19DB16CD0090EBED /* ANFailThenLoad.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANFailThenLoad.m; sourceTree = ""; }; + 8AA0097D19DB16CD0090EBED /* ANLoadAndHitOtherCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLoadAndHitOtherCallbacks.h; sourceTree = ""; }; + 8AA0097E19DB16CD0090EBED /* ANLoadAndHitOtherCallbacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLoadAndHitOtherCallbacks.m; sourceTree = ""; }; + 8AA0097F19DB16CD0090EBED /* ANLoadedMultiple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLoadedMultiple.h; sourceTree = ""; }; + 8AA0098019DB16CD0090EBED /* ANLoadedMultiple.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLoadedMultiple.m; sourceTree = ""; }; + 8AA0098119DB16CD0090EBED /* ANLoadThenFail.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANLoadThenFail.h; sourceTree = ""; }; + 8AA0098219DB16CD0090EBED /* ANLoadThenFail.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANLoadThenFail.m; sourceTree = ""; }; + 8AA0098319DB16CD0090EBED /* ANSuccessfulBanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSuccessfulBanner.h; sourceTree = ""; }; + 8AA0098419DB16CD0090EBED /* ANSuccessfulBanner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSuccessfulBanner.m; sourceTree = ""; }; + 8AA0098519DB16CD0090EBED /* ANSuccessfulBannerNeverCalled.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANSuccessfulBannerNeverCalled.h; sourceTree = ""; }; + 8AA0098619DB16CD0090EBED /* ANSuccessfulBannerNeverCalled.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANSuccessfulBannerNeverCalled.m; sourceTree = ""; }; + 8AA0098719DB16CD0090EBED /* ANTimeout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANTimeout.h; sourceTree = ""; }; + 8AA0098819DB16CD0090EBED /* ANTimeout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANTimeout.m; sourceTree = ""; }; + 8AA009A619DB18AE0090EBED /* ANHTTPStubbingManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANHTTPStubbingManager.h; sourceTree = ""; }; + 8AA009A719DB18AE0090EBED /* ANHTTPStubbingManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANHTTPStubbingManager.m; sourceTree = ""; }; + 8AA009A819DB18AE0090EBED /* ANHTTPStubURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANHTTPStubURLProtocol.h; sourceTree = ""; }; + 8AA009A919DB18AE0090EBED /* ANHTTPStubURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANHTTPStubURLProtocol.m; sourceTree = ""; }; + 8AA009AA19DB18AE0090EBED /* ANURLConnectionStub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANURLConnectionStub.h; sourceTree = ""; }; + 8AA009AB19DB18AE0090EBED /* ANURLConnectionStub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANURLConnectionStub.m; sourceTree = ""; }; + 8AA009AF19DB18CC0090EBED /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 8AA009B119DB19120090EBED /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 8AA009B819DB1B200090EBED /* ANMediationAdapterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediationAdapterViewController.h; sourceTree = ""; }; + 8AA009B919DB1B200090EBED /* ANMediationAdapterViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediationAdapterViewController.m; sourceTree = ""; }; + 8AA009BA19DB1B200090EBED /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 8AA009BB19DB1B200090EBED /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 8AA009BD19DB1B200090EBED /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + 8AA009BF19DB1B200090EBED /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 8AA009C019DB1B200090EBED /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 8AA009C119DB1B200090EBED /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8AA009C219DB1B200090EBED /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 8AA009C319DB1B200090EBED /* MediationAdapterPrefixHeader.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediationAdapterPrefixHeader.pch; sourceTree = ""; }; + 8AA009DF19DB1CEC0090EBED /* FacebookAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FacebookAdapter.m; sourceTree = ""; }; + 8AA009E019DB1CEC0090EBED /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8AA009E319DB1D270090EBED /* AmazonAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AmazonAd.framework; path = ../mediation/mediatedviews/Amazon/AmazonSDK/AmazonAd.framework; sourceTree = ""; }; + 8AA009E519DB1D320090EBED /* FBAudienceNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FBAudienceNetwork.framework; path = ../mediation/mediatedviews/Facebook/FacebookSDK/FBAudienceNetwork.framework; sourceTree = ""; }; + 8AA009E719DB1D3C0090EBED /* libGoogleAdMobAds.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libGoogleAdMobAds.a; path = ../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK/libGoogleAdMobAds.a; sourceTree = ""; }; + 8AA009E919DB1D480090EBED /* MillennialMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MillennialMedia.framework; path = ../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK/MillennialMedia.framework; sourceTree = ""; }; + 8AA009EB19DB1D530090EBED /* libMoPubSDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libMoPubSDK.a; path = ../mediation/mediatedviews/MoPub/MoPubSDK/libMoPubSDK.a; sourceTree = ""; }; + 8AA009FC19DB1E150090EBED /* ANAdFetcher+ANTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANAdFetcher+ANTest.h"; sourceTree = ""; }; + 8AA009FD19DB1E150090EBED /* ANAdFetcher+ANTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ANAdFetcher+ANTest.m"; sourceTree = ""; }; + 8AA009FE19DB1E150090EBED /* ANAdView+ANTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANAdView+ANTest.h"; sourceTree = ""; }; + 8AA009FF19DB1E150090EBED /* ANAdView+ANTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ANAdView+ANTest.m"; sourceTree = ""; }; + 8AA00A0019DB1E150090EBED /* ANAdWebViewController+ANTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANAdWebViewController+ANTest.h"; sourceTree = ""; }; + 8AA00A0119DB1E150090EBED /* ANAdWebViewController+ANTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ANAdWebViewController+ANTest.m"; sourceTree = ""; }; + 8AA00A0219DB1E150090EBED /* ANBannerAdView+ANTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANBannerAdView+ANTest.h"; sourceTree = ""; }; + 8AA00A0319DB1E150090EBED /* ANBannerAdView+ANTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ANBannerAdView+ANTest.m"; sourceTree = ""; }; + 8AA00A0419DB1E150090EBED /* ANInterstitialAd+ANTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANInterstitialAd+ANTest.h"; sourceTree = ""; }; + 8AA00A0519DB1E150090EBED /* ANInterstitialAd+ANTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ANInterstitialAd+ANTest.m"; sourceTree = ""; }; + 8AA00A0619DB1E150090EBED /* ANMediationAdViewController+ANTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ANMediationAdViewController+ANTest.h"; sourceTree = ""; }; + 8AA00A0719DB1E150090EBED /* ANMediationAdViewController+ANTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "ANMediationAdViewController+ANTest.m"; sourceTree = ""; }; + 8AA00A0819DB1E150090EBED /* NSObject+Swizzling.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSObject+Swizzling.h"; sourceTree = ""; }; + 8AA00A0919DB1E150090EBED /* NSObject+Swizzling.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSObject+Swizzling.m"; sourceTree = ""; }; + 8AA00A0A19DB1E150090EBED /* XCTestCase+ANAdResponse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "XCTestCase+ANAdResponse.h"; sourceTree = ""; }; + 8AA00A0B19DB1E150090EBED /* XCTestCase+ANAdResponse.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "XCTestCase+ANAdResponse.m"; sourceTree = ""; }; + 8AA00A0C19DB1E150090EBED /* XCTestCase+ANBannerAdView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "XCTestCase+ANBannerAdView.h"; sourceTree = ""; }; + 8AA00A0D19DB1E150090EBED /* XCTestCase+ANBannerAdView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "XCTestCase+ANBannerAdView.m"; sourceTree = ""; }; + 8AA00A0E19DB1E150090EBED /* XCTestCase+ANCategory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "XCTestCase+ANCategory.h"; sourceTree = ""; }; + 8AA00A0F19DB1E150090EBED /* XCTestCase+ANCategory.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "XCTestCase+ANCategory.m"; sourceTree = ""; }; + 8AA00A1019DB1E150090EBED /* XCTestCase+ANMediatedAd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "XCTestCase+ANMediatedAd.h"; sourceTree = ""; }; + 8AA00A1119DB1E150090EBED /* XCTestCase+ANMediatedAd.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "XCTestCase+ANMediatedAd.m"; sourceTree = ""; }; + 8AA00A1319DB1E150090EBED /* dogSelfie.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = dogSelfie.jpg; sourceTree = ""; }; + 8AA00A1419DB1E150090EBED /* dogSelfie@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "dogSelfie@2x.jpg"; sourceTree = ""; }; + 8AA00A1519DB1E150090EBED /* GreyWhiteCat.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = GreyWhiteCat.jpg; sourceTree = ""; }; + 8AA00A1619DB1E150090EBED /* GreyWhiteCat@2x.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = "GreyWhiteCat@2x.jpg"; sourceTree = ""; }; + 8AA00A1819DB1E150090EBED /* FacebookBanner.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = FacebookBanner.json; sourceTree = ""; }; + 8AA00A1919DB1E150090EBED /* FacebookInterstitial.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = FacebookInterstitial.json; sourceTree = ""; }; + 8AA00A1A19DB1E150090EBED /* iAdBanner.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = iAdBanner.json; sourceTree = ""; }; + 8AA00A1B19DB1E150090EBED /* iAdInterstitial.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = iAdInterstitial.json; sourceTree = ""; }; + 8AA00A1C19DB1E150090EBED /* MillennialMediaBanner.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = MillennialMediaBanner.json; sourceTree = ""; }; + 8AA00A1D19DB1E150090EBED /* MillennialMediaInterstitial.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = MillennialMediaInterstitial.json; sourceTree = ""; }; + 8AA00A1E19DB1E150090EBED /* MoPubBanner.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = MoPubBanner.json; sourceTree = ""; }; + 8AA00A1F19DB1E150090EBED /* MoPubInterstitial.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = MoPubInterstitial.json; sourceTree = ""; }; + 8AA00A2019DB1E150090EBED /* SuccessfulMediationResponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = SuccessfulMediationResponse.json; sourceTree = ""; }; + 8AA00A2119DB1E150090EBED /* SuccessfulMRAIDListenerResponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = SuccessfulMRAIDListenerResponse.json; sourceTree = ""; }; + 8AA00A2219DB1E150090EBED /* SuccessfulMRAIDResponse.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = SuccessfulMRAIDResponse.json; sourceTree = ""; }; + 8AA00A2B19DB1FC20090EBED /* ANAdAdapterBaseAmazon+ANTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANAdAdapterBaseAmazon+ANTest.h"; sourceTree = ""; }; + 8AA00A2C19DB1FC20090EBED /* ANAdAdapterBaseAmazon+ANTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ANAdAdapterBaseAmazon+ANTest.m"; sourceTree = ""; }; + 8AA00A2E19DB1FD70090EBED /* AmazonBanner.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = AmazonBanner.json; path = Shared/Responses/AmazonBanner.json; sourceTree = SOURCE_ROOT; }; + 8AA00A3019DB1FFB0090EBED /* AmazonInterstitial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AmazonInterstitial.json; sourceTree = ""; }; + 8AA00A3319DB20A00090EBED /* AdMobBanner.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AdMobBanner.json; sourceTree = ""; }; + 8AA00A3419DB20A00090EBED /* AdMobInterstitial.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = AdMobInterstitial.json; sourceTree = ""; }; + 8AB387A519DB0CA8006F9E15 /* OriginalUnitTestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OriginalUnitTestApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AB387BD19DB0CA8006F9E15 /* OriginalUnitTestAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OriginalUnitTestAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AB387F719DB1245006F9E15 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 8AD0182D199932F9007874BA /* NewTestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NewTestApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AD01831199932F9007874BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8AD01832199932F9007874BA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 8AD01834199932F9007874BA /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 8AD01835199932F9007874BA /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 8AD01837199932F9007874BA /* ANNewTestAppViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ANNewTestAppViewController.h; sourceTree = ""; }; + 8AD01838199932F9007874BA /* ANNewTestAppViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ANNewTestAppViewController.m; sourceTree = ""; }; + 8AD0183B199932F9007874BA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 8AD0183D199932F9007874BA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 8AD01843199932F9007874BA /* NewTestAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NewTestAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AD01848199932F9007874BA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8AD0DBFC19CA40AE00170BCB /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ANSDK.xcodeproj; path = ../BinaryProjects/ANSDK.xcodeproj; sourceTree = ""; }; + 8AF3657F19D473B00097019F /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + 8AF3658319D474650097019F /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + 8AF3658519D4746E0097019F /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 8AF3659319D479130097019F /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8A9F94BD19D1C37700AB739F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA009F019DB1DA50090EBED /* libANSDK.a in Frameworks */, + 8AA009F219DB1DA50090EBED /* libANSDKGoogleAdMobAdapter.a in Frameworks */, + 8AA009F319DB1DA50090EBED /* libANSDKiAdAdapter.a in Frameworks */, + 8AA009F419DB1DA50090EBED /* libANSDKMillennialMediaAdapter.a in Frameworks */, + 8AA009F519DB1DA50090EBED /* libANSDKMoPubAdapter.a in Frameworks */, + 8AA009F619DB1DA50090EBED /* libANSDKFacebookAdapter.a in Frameworks */, + 8AA009F719DB1DA50090EBED /* libANSDKAmazonAdapter.a in Frameworks */, + 8AA009E619DB1D320090EBED /* FBAudienceNetwork.framework in Frameworks */, + 8AA009E819DB1D3C0090EBED /* libGoogleAdMobAds.a in Frameworks */, + 8A3B37AF19D62A4E00CE24A5 /* iAd.framework in Frameworks */, + 8AA009EA19DB1D480090EBED /* MillennialMedia.framework in Frameworks */, + 8AA009EC19DB1D530090EBED /* libMoPubSDK.a in Frameworks */, + 8AA009E419DB1D270090EBED /* AmazonAd.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8A9F94D519D1C37700AB739F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB387A219DB0CA8006F9E15 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA009A319DB16F30090EBED /* libANSDK.a in Frameworks */, + 8AB387F919DB1297006F9E15 /* AdSupport.framework in Frameworks */, + 8AB387F819DB1245006F9E15 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB387BA19DB0CA8006F9E15 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AD0182A199932F9007874BA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AF3659419D479130097019F /* AdSupport.framework in Frameworks */, + 8AA00A4219DB2A3A0090EBED /* libANSDK.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AD01840199932F9007874BA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8A0AA46219DB30A2005EC52C /* Tests */ = { + isa = PBXGroup; + children = ( + 8A0AA46319DB30A2005EC52C /* ANAdResponseTestCase.m */, + 8A0AA46419DB30A2005EC52C /* ANAdViewMRAIDCreativeTestCase.m */, + 8A0AA46519DB30A2005EC52C /* ANBannerAdViewTransitionsTestCase.m */, + 8A0AA46619DB30A2005EC52C /* ANLocationTestCase.m */, + 8A0AA46719DB30A2005EC52C /* ANMediationAdViewControllerTestCase.m */, + 8A0AA46819DB30A2005EC52C /* ANMRAIDViewControllerTestCase.m */, + 8A0AA46919DB30A2005EC52C /* UIViewConstraintsTestCase.m */, + ); + path = Tests; + sourceTree = ""; + }; + 8A3D2E3A199BD0F400B82C36 /* Untested Dummy Banner Adapters */ = { + isa = PBXGroup; + children = ( + 8A0AA47119DB314C005EC52C /* ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h */, + 8A0AA47219DB314C005EC52C /* ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m */, + 8A0AA47319DB314C005EC52C /* ANFailedMultiple.h */, + 8A0AA47419DB314C005EC52C /* ANFailedMultiple.m */, + 8A0AA47519DB314C005EC52C /* ANLoadAndHitOtherCallbacks.h */, + 8A0AA47619DB314C005EC52C /* ANLoadAndHitOtherCallbacks.m */, + ); + name = "Untested Dummy Banner Adapters"; + sourceTree = ""; + }; + 8A3D2E62199BD3C300B82C36 /* Valid Dummy Banner Adapters */ = { + isa = PBXGroup; + children = ( + 8A0AA47A19DB3453005EC52C /* ANAdAdapterBannerMultipleFailureCallbacks.h */, + 8A0AA47B19DB3453005EC52C /* ANAdAdapterBannerMultipleFailureCallbacks.m */, + 8A0AA47C19DB3453005EC52C /* ANAdAdapterBannerMultipleSuccessCallbacks.h */, + 8A0AA47D19DB3453005EC52C /* ANAdAdapterBannerMultipleSuccessCallbacks.m */, + 8A0AA47E19DB3453005EC52C /* ANAdAdapterBannerNetworkError.h */, + 8A0AA47F19DB3453005EC52C /* ANAdAdapterBannerNetworkError.m */, + 8A0AA48419DB3453005EC52C /* ANAdAdapterBannerSuccessful.h */, + 8A0AA48519DB3453005EC52C /* ANAdAdapterBannerSuccessful.m */, + 8A0AA48619DB3453005EC52C /* ANAdAdapterBannerSuccessfulThenUnableToFill.h */, + 8A0AA48719DB3453005EC52C /* ANAdAdapterBannerSuccessfulThenUnableToFill.m */, + 8A0AA48819DB3453005EC52C /* ANAdAdapterBannerTimeoutThenSuccessful.h */, + 8A0AA48919DB3453005EC52C /* ANAdAdapterBannerTimeoutThenSuccessful.m */, + 8A0AA48A19DB3453005EC52C /* ANAdAdapterBannerUnableToFill.h */, + 8A0AA48B19DB3453005EC52C /* ANAdAdapterBannerUnableToFill.m */, + 8A0AA48C19DB3453005EC52C /* ANAdAdapterBannerUnableToFillThenSuccessful.h */, + 8A0AA48D19DB3453005EC52C /* ANAdAdapterBannerUnableToFillThenSuccessful.m */, + ); + name = "Valid Dummy Banner Adapters"; + sourceTree = ""; + }; + 8A3D2E63199BD85200B82C36 /* Invalid Dummy Banner Adapters */ = { + isa = PBXGroup; + children = ( + 8A0AA48019DB3453005EC52C /* ANAdAdapterBannerNoDelegate.h */, + 8A0AA48119DB3453005EC52C /* ANAdAdapterBannerNoDelegate.m */, + 8A0AA48219DB3453005EC52C /* ANAdAdapterBannerNoRequestMethod.h */, + 8A0AA48319DB3453005EC52C /* ANAdAdapterBannerNoRequestMethod.m */, + ); + name = "Invalid Dummy Banner Adapters"; + sourceTree = ""; + }; + 8A3D2E7D199C12F600B82C36 /* Banner Adapters */ = { + isa = PBXGroup; + children = ( + 8A3D2E63199BD85200B82C36 /* Invalid Dummy Banner Adapters */, + 8A3D2E62199BD3C300B82C36 /* Valid Dummy Banner Adapters */, + 8A3D2E3A199BD0F400B82C36 /* Untested Dummy Banner Adapters */, + ); + name = "Banner Adapters"; + sourceTree = ""; + }; + 8A65BE8A19A4FCDF00A72571 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8AA009EB19DB1D530090EBED /* libMoPubSDK.a */, + 8AA009E919DB1D480090EBED /* MillennialMedia.framework */, + 8AA009E719DB1D3C0090EBED /* libGoogleAdMobAds.a */, + 8AA009E519DB1D320090EBED /* FBAudienceNetwork.framework */, + 8AA009E319DB1D270090EBED /* AmazonAd.framework */, + 8AB387F719DB1245006F9E15 /* UIKit.framework */, + 8AF3659319D479130097019F /* AdSupport.framework */, + 8AF3658519D4746E0097019F /* AudioToolbox.framework */, + 8AF3658319D474650097019F /* CoreAudio.framework */, + 8AF3657F19D473B00097019F /* AVFoundation.framework */, + 8A5D27CA199AB26B00F2A516 /* iAd.framework */, + 8A5D27BC199A9DAB00F2A516 /* CoreMotion.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 8A7F4CBD19DB395D003ECC5C /* MPResources */ = { + isa = PBXGroup; + children = ( + 8A7F4CC119DB3976003ECC5C /* MPAdBrowserController.xib */, + 8A7F4CC219DB3976003ECC5C /* MPCloseButtonX.png */, + 8A7F4CC319DB3976003ECC5C /* MPCloseButtonX@2x.png */, + 8A7F4CC419DB3976003ECC5C /* MRAID.bundle */, + ); + name = MPResources; + sourceTree = ""; + }; + 8AA0093219DB169B0090EBED /* Products */ = { + isa = PBXGroup; + children = ( + 8AA0094019DB169B0090EBED /* libANSDK.a */, + 8AA0094219DB169B0090EBED /* ANSDKResources.bundle */, + 8AA0094419DB169B0090EBED /* libANSDKGoogleAdMobAdapter.a */, + 8AA0094619DB169B0090EBED /* libANSDKiAdAdapter.a */, + 8AA0094819DB169B0090EBED /* libANSDKMillennialMediaAdapter.a */, + 8AA0094A19DB169B0090EBED /* libANSDKMoPubAdapter.a */, + 8AA0094C19DB169B0090EBED /* libANSDKFacebookAdapter.a */, + 8AA0094E19DB169B0090EBED /* libANAdapterForGoogleAdMobSDK.a */, + 8AA0095019DB169B0090EBED /* libANAdapterForMoPubSDK.a */, + 8AA0095219DB169B0090EBED /* libANSDKAmazonAdapter.a */, + ); + name = Products; + sourceTree = ""; + }; + 8AA0095319DB16C50090EBED /* OriginalUnitTestApp */ = { + isa = PBXGroup; + children = ( + 8AA0095419DB16C50090EBED /* AppDelegate.h */, + 8AA0095519DB16C50090EBED /* AppDelegate.m */, + 8AA0095619DB16C50090EBED /* main.m */, + 8AA0095719DB16C50090EBED /* TestsStoryboard.storyboard */, + 8AA0095819DB16C50090EBED /* ViewController.h */, + 8AA0095919DB16C50090EBED /* ViewController.m */, + 8AA009B119DB19120090EBED /* Images.xcassets */, + ); + path = OriginalUnitTestApp; + sourceTree = ""; + }; + 8AA0095E19DB16CD0090EBED /* OriginalUnitTestAppTests */ = { + isa = PBXGroup; + children = ( + 8AA0095F19DB16CD0090EBED /* BasicTests.m */, + 8AA0096019DB16CD0090EBED /* InfoPlist.strings */, + 8AA0096219DB16CD0090EBED /* MediationCallbacksTests.m */, + 8AA0096319DB16CD0090EBED /* MediationTests.m */, + 8AA0096419DB16CD0090EBED /* MRAIDTests.m */, + 8AA0096519DB16CD0090EBED /* TestsTests-Info.plist */, + 8AA0096619DB16CD0090EBED /* TestsTests-Prefix.pch */, + 8AA0096719DB16CD0090EBED /* TestUtils */, + 8AA0096E19DB16CD0090EBED /* TestViews */, + ); + path = OriginalUnitTestAppTests; + sourceTree = ""; + }; + 8AA0096719DB16CD0090EBED /* TestUtils */ = { + isa = PBXGroup; + children = ( + 8AA0096819DB16CD0090EBED /* ANBaseTestCase.h */, + 8AA0096919DB16CD0090EBED /* ANBaseTestCase.m */, + 8AA0096A19DB16CD0090EBED /* ANMRAIDTestResponses.h */, + 8AA0096B19DB16CD0090EBED /* ANMRAIDTestResponses.m */, + 8AA0096C19DB16CD0090EBED /* ANTestResponses.h */, + 8AA0096D19DB16CD0090EBED /* ANTestResponses.m */, + ); + path = TestUtils; + sourceTree = ""; + }; + 8AA0096E19DB16CD0090EBED /* TestViews */ = { + isa = PBXGroup; + children = ( + 8AA0096F19DB16CD0090EBED /* ANAdAdapterBannerDummy.h */, + 8AA0097019DB16CD0090EBED /* ANAdAdapterBannerDummy.m */, + 8AA0097119DB16CD0090EBED /* ANAdAdapterBannerNoAds.h */, + 8AA0097219DB16CD0090EBED /* ANAdAdapterBannerNoAds.m */, + 8AA0097319DB16CD0090EBED /* ANAdAdapterBannerRequestFail.h */, + 8AA0097419DB16CD0090EBED /* ANAdAdapterBannerRequestFail.m */, + 8AA0097519DB16CD0090EBED /* ANAdAdapterErrorCode.h */, + 8AA0097619DB16CD0090EBED /* ANAdAdapterErrorCode.m */, + 8AA0097719DB16CD0090EBED /* ANFailAndHitOtherCallbacks.h */, + 8AA0097819DB16CD0090EBED /* ANFailAndHitOtherCallbacks.m */, + 8AA0097919DB16CD0090EBED /* ANFailedMultiple.h */, + 8AA0097A19DB16CD0090EBED /* ANFailedMultiple.m */, + 8AA0097B19DB16CD0090EBED /* ANFailThenLoad.h */, + 8AA0097C19DB16CD0090EBED /* ANFailThenLoad.m */, + 8AA0097D19DB16CD0090EBED /* ANLoadAndHitOtherCallbacks.h */, + 8AA0097E19DB16CD0090EBED /* ANLoadAndHitOtherCallbacks.m */, + 8AA0097F19DB16CD0090EBED /* ANLoadedMultiple.h */, + 8AA0098019DB16CD0090EBED /* ANLoadedMultiple.m */, + 8AA0098119DB16CD0090EBED /* ANLoadThenFail.h */, + 8AA0098219DB16CD0090EBED /* ANLoadThenFail.m */, + 8AA0098319DB16CD0090EBED /* ANSuccessfulBanner.h */, + 8AA0098419DB16CD0090EBED /* ANSuccessfulBanner.m */, + 8AA0098519DB16CD0090EBED /* ANSuccessfulBannerNeverCalled.h */, + 8AA0098619DB16CD0090EBED /* ANSuccessfulBannerNeverCalled.m */, + 8AA0098719DB16CD0090EBED /* ANTimeout.h */, + 8AA0098819DB16CD0090EBED /* ANTimeout.m */, + ); + path = TestViews; + sourceTree = ""; + }; + 8AA009A419DB18AE0090EBED /* Shared */ = { + isa = PBXGroup; + children = ( + 8AA009FB19DB1E150090EBED /* Categories */, + 8AA00A1219DB1E150090EBED /* Resources */, + 8AA00A1719DB1E150090EBED /* Responses */, + 8AA009AF19DB18CC0090EBED /* Default-568h@2x.png */, + 8AA009A519DB18AE0090EBED /* Stubbing */, + ); + path = Shared; + sourceTree = ""; + }; + 8AA009A519DB18AE0090EBED /* Stubbing */ = { + isa = PBXGroup; + children = ( + 8AA009A619DB18AE0090EBED /* ANHTTPStubbingManager.h */, + 8AA009A719DB18AE0090EBED /* ANHTTPStubbingManager.m */, + 8AA009A819DB18AE0090EBED /* ANHTTPStubURLProtocol.h */, + 8AA009A919DB18AE0090EBED /* ANHTTPStubURLProtocol.m */, + 8AA009AA19DB18AE0090EBED /* ANURLConnectionStub.h */, + 8AA009AB19DB18AE0090EBED /* ANURLConnectionStub.m */, + ); + path = Stubbing; + sourceTree = ""; + }; + 8AA009B719DB1B1F0090EBED /* MediationAdapterApp */ = { + isa = PBXGroup; + children = ( + 8AA009B819DB1B200090EBED /* ANMediationAdapterViewController.h */, + 8AA009B919DB1B200090EBED /* ANMediationAdapterViewController.m */, + 8AA009BA19DB1B200090EBED /* AppDelegate.h */, + 8AA009BB19DB1B200090EBED /* AppDelegate.m */, + 8AA009BC19DB1B200090EBED /* LaunchScreen.xib */, + 8AA009BE19DB1B200090EBED /* Main.storyboard */, + 8AA009C019DB1B200090EBED /* Images.xcassets */, + 8AA009C119DB1B200090EBED /* Info.plist */, + 8AA009C219DB1B200090EBED /* main.m */, + 8AA009C319DB1B200090EBED /* MediationAdapterPrefixHeader.pch */, + ); + path = MediationAdapterApp; + sourceTree = ""; + }; + 8AA009DE19DB1CEC0090EBED /* MediationAdapterAppTests */ = { + isa = PBXGroup; + children = ( + 8AA009DF19DB1CEC0090EBED /* FacebookAdapter.m */, + 8AA009E019DB1CEC0090EBED /* Info.plist */, + ); + path = MediationAdapterAppTests; + sourceTree = ""; + }; + 8AA009FB19DB1E150090EBED /* Categories */ = { + isa = PBXGroup; + children = ( + 8AA00A2B19DB1FC20090EBED /* ANAdAdapterBaseAmazon+ANTest.h */, + 8AA00A2C19DB1FC20090EBED /* ANAdAdapterBaseAmazon+ANTest.m */, + 8AA009FC19DB1E150090EBED /* ANAdFetcher+ANTest.h */, + 8AA009FD19DB1E150090EBED /* ANAdFetcher+ANTest.m */, + 8AA009FE19DB1E150090EBED /* ANAdView+ANTest.h */, + 8AA009FF19DB1E150090EBED /* ANAdView+ANTest.m */, + 8AA00A0019DB1E150090EBED /* ANAdWebViewController+ANTest.h */, + 8AA00A0119DB1E150090EBED /* ANAdWebViewController+ANTest.m */, + 8AA00A0219DB1E150090EBED /* ANBannerAdView+ANTest.h */, + 8AA00A0319DB1E150090EBED /* ANBannerAdView+ANTest.m */, + 8AA00A0419DB1E150090EBED /* ANInterstitialAd+ANTest.h */, + 8AA00A0519DB1E150090EBED /* ANInterstitialAd+ANTest.m */, + 8AA00A0619DB1E150090EBED /* ANMediationAdViewController+ANTest.h */, + 8AA00A0719DB1E150090EBED /* ANMediationAdViewController+ANTest.m */, + 8AA00A0819DB1E150090EBED /* NSObject+Swizzling.h */, + 8AA00A0919DB1E150090EBED /* NSObject+Swizzling.m */, + 8AA00A0A19DB1E150090EBED /* XCTestCase+ANAdResponse.h */, + 8AA00A0B19DB1E150090EBED /* XCTestCase+ANAdResponse.m */, + 8AA00A0C19DB1E150090EBED /* XCTestCase+ANBannerAdView.h */, + 8AA00A0D19DB1E150090EBED /* XCTestCase+ANBannerAdView.m */, + 8AA00A0E19DB1E150090EBED /* XCTestCase+ANCategory.h */, + 8AA00A0F19DB1E150090EBED /* XCTestCase+ANCategory.m */, + 8AA00A1019DB1E150090EBED /* XCTestCase+ANMediatedAd.h */, + 8AA00A1119DB1E150090EBED /* XCTestCase+ANMediatedAd.m */, + ); + path = Categories; + sourceTree = ""; + }; + 8AA00A1219DB1E150090EBED /* Resources */ = { + isa = PBXGroup; + children = ( + 8AA00A1319DB1E150090EBED /* dogSelfie.jpg */, + 8AA00A1419DB1E150090EBED /* dogSelfie@2x.jpg */, + 8AA00A1519DB1E150090EBED /* GreyWhiteCat.jpg */, + 8AA00A1619DB1E150090EBED /* GreyWhiteCat@2x.jpg */, + ); + path = Resources; + sourceTree = ""; + }; + 8AA00A1719DB1E150090EBED /* Responses */ = { + isa = PBXGroup; + children = ( + 8AA00A3319DB20A00090EBED /* AdMobBanner.json */, + 8AA00A3419DB20A00090EBED /* AdMobInterstitial.json */, + 8AA00A2E19DB1FD70090EBED /* AmazonBanner.json */, + 8AA00A3019DB1FFB0090EBED /* AmazonInterstitial.json */, + 8AA00A1819DB1E150090EBED /* FacebookBanner.json */, + 8AA00A1919DB1E150090EBED /* FacebookInterstitial.json */, + 8AA00A1A19DB1E150090EBED /* iAdBanner.json */, + 8AA00A1B19DB1E150090EBED /* iAdInterstitial.json */, + 8AA00A1C19DB1E150090EBED /* MillennialMediaBanner.json */, + 8AA00A1D19DB1E150090EBED /* MillennialMediaInterstitial.json */, + 8AA00A1E19DB1E150090EBED /* MoPubBanner.json */, + 8AA00A1F19DB1E150090EBED /* MoPubInterstitial.json */, + 8AA00A2019DB1E150090EBED /* SuccessfulMediationResponse.json */, + 8AA00A2119DB1E150090EBED /* SuccessfulMRAIDListenerResponse.json */, + 8AA00A2219DB1E150090EBED /* SuccessfulMRAIDResponse.json */, + ); + path = Responses; + sourceTree = ""; + }; + 8AD01824199932F9007874BA = { + isa = PBXGroup; + children = ( + 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */, + 8A65BE8A19A4FCDF00A72571 /* Frameworks */, + 8AA009B719DB1B1F0090EBED /* MediationAdapterApp */, + 8AA009DE19DB1CEC0090EBED /* MediationAdapterAppTests */, + 8A7F4CBD19DB395D003ECC5C /* MPResources */, + 8AD0182F199932F9007874BA /* NewTestApp */, + 8AD01846199932F9007874BA /* NewTestAppTests */, + 8AA0095319DB16C50090EBED /* OriginalUnitTestApp */, + 8AA0095E19DB16CD0090EBED /* OriginalUnitTestAppTests */, + 8AD0182E199932F9007874BA /* Products */, + 8AA009A419DB18AE0090EBED /* Shared */, + ); + sourceTree = ""; + }; + 8AD0182E199932F9007874BA /* Products */ = { + isa = PBXGroup; + children = ( + 8AD0182D199932F9007874BA /* NewTestApp.app */, + 8AD01843199932F9007874BA /* NewTestAppTests.xctest */, + 8A9F94C019D1C37700AB739F /* MediationAdapterApp.app */, + 8A9F94D819D1C37700AB739F /* MediationAdapterAppTests.xctest */, + 8AB387A519DB0CA8006F9E15 /* OriginalUnitTestApp.app */, + 8AB387BD19DB0CA8006F9E15 /* OriginalUnitTestAppTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 8AD0182F199932F9007874BA /* NewTestApp */ = { + isa = PBXGroup; + children = ( + 8A64C0B519D1CBE000B92D30 /* NewTestAppPrefixHeader.pch */, + 8AD01834199932F9007874BA /* AppDelegate.h */, + 8AD01835199932F9007874BA /* AppDelegate.m */, + 8AD01837199932F9007874BA /* ANNewTestAppViewController.h */, + 8AD01838199932F9007874BA /* ANNewTestAppViewController.m */, + 8AD0183A199932F9007874BA /* Main.storyboard */, + 8AD0183D199932F9007874BA /* Images.xcassets */, + 8AD01830199932F9007874BA /* Supporting Files */, + ); + path = NewTestApp; + sourceTree = ""; + }; + 8AD01830199932F9007874BA /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 8AD0DBFC19CA40AE00170BCB /* Default-568h@2x.png */, + 8AD01831199932F9007874BA /* Info.plist */, + 8AD01832199932F9007874BA /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 8AD01846199932F9007874BA /* NewTestAppTests */ = { + isa = PBXGroup; + children = ( + 8A0AA46219DB30A2005EC52C /* Tests */, + 8A3D2E7D199C12F600B82C36 /* Banner Adapters */, + 8AD01847199932F9007874BA /* Supporting Files */, + ); + path = NewTestAppTests; + sourceTree = ""; + }; + 8AD01847199932F9007874BA /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 8AD01848199932F9007874BA /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8A9F94BF19D1C37700AB739F /* MediationAdapterApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8A9F94E019D1C37800AB739F /* Build configuration list for PBXNativeTarget "MediationAdapterApp" */; + buildPhases = ( + 8A9F94BC19D1C37700AB739F /* Sources */, + 8A9F94BD19D1C37700AB739F /* Frameworks */, + 8A9F94BE19D1C37700AB739F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AA009CF19DB1BC10090EBED /* PBXTargetDependency */, + 8AA009D119DB1BC10090EBED /* PBXTargetDependency */, + 8AA009D319DB1BC10090EBED /* PBXTargetDependency */, + 8AA009D519DB1BC10090EBED /* PBXTargetDependency */, + 8AA009D719DB1BC10090EBED /* PBXTargetDependency */, + 8AA009D919DB1BC10090EBED /* PBXTargetDependency */, + 8AA009DB19DB1BC10090EBED /* PBXTargetDependency */, + 8AA009DD19DB1BC10090EBED /* PBXTargetDependency */, + ); + name = MediationAdapterApp; + productName = MediationAdapterApp; + productReference = 8A9F94C019D1C37700AB739F /* MediationAdapterApp.app */; + productType = "com.apple.product-type.application"; + }; + 8A9F94D719D1C37700AB739F /* MediationAdapterAppTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8A9F94E319D1C37800AB739F /* Build configuration list for PBXNativeTarget "MediationAdapterAppTests" */; + buildPhases = ( + 8A9F94D419D1C37700AB739F /* Sources */, + 8A9F94D519D1C37700AB739F /* Frameworks */, + 8A9F94D619D1C37700AB739F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8A9F94DA19D1C37700AB739F /* PBXTargetDependency */, + ); + name = MediationAdapterAppTests; + productName = MediationAdapterAppTests; + productReference = 8A9F94D819D1C37700AB739F /* MediationAdapterAppTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 8AB387A419DB0CA8006F9E15 /* OriginalUnitTestApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AB387C519DB0CA8006F9E15 /* Build configuration list for PBXNativeTarget "OriginalUnitTestApp" */; + buildPhases = ( + 8AB387A119DB0CA8006F9E15 /* Sources */, + 8AB387A219DB0CA8006F9E15 /* Frameworks */, + 8AB387A319DB0CA8006F9E15 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AA009A219DB16EF0090EBED /* PBXTargetDependency */, + 8AA009A019DB16EC0090EBED /* PBXTargetDependency */, + ); + name = OriginalUnitTestApp; + productName = OriginalUnitTestApp; + productReference = 8AB387A519DB0CA8006F9E15 /* OriginalUnitTestApp.app */; + productType = "com.apple.product-type.application"; + }; + 8AB387BC19DB0CA8006F9E15 /* OriginalUnitTestAppTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AB387C819DB0CA8006F9E15 /* Build configuration list for PBXNativeTarget "OriginalUnitTestAppTests" */; + buildPhases = ( + 8AB387B919DB0CA8006F9E15 /* Sources */, + 8AB387BA19DB0CA8006F9E15 /* Frameworks */, + 8AB387BB19DB0CA8006F9E15 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AB387BF19DB0CA8006F9E15 /* PBXTargetDependency */, + ); + name = OriginalUnitTestAppTests; + productName = OriginalUnitTestAppTests; + productReference = 8AB387BD19DB0CA8006F9E15 /* OriginalUnitTestAppTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 8AD0182C199932F9007874BA /* NewTestApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AD0184D199932F9007874BA /* Build configuration list for PBXNativeTarget "NewTestApp" */; + buildPhases = ( + 8AD01829199932F9007874BA /* Sources */, + 8AD0182A199932F9007874BA /* Frameworks */, + 8AD0182B199932F9007874BA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AA00A4119DB2A230090EBED /* PBXTargetDependency */, + 8AA00A3F19DB2A200090EBED /* PBXTargetDependency */, + ); + name = NewTestApp; + productName = NewTestApp; + productReference = 8AD0182D199932F9007874BA /* NewTestApp.app */; + productType = "com.apple.product-type.application"; + }; + 8AD01842199932F9007874BA /* NewTestAppTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AD01850199932F9007874BA /* Build configuration list for PBXNativeTarget "NewTestAppTests" */; + buildPhases = ( + 8AD0183F199932F9007874BA /* Sources */, + 8AD01840199932F9007874BA /* Frameworks */, + 8AD01841199932F9007874BA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AD01845199932F9007874BA /* PBXTargetDependency */, + ); + name = NewTestAppTests; + productName = NewTestAppTests; + productReference = 8AD01843199932F9007874BA /* NewTestAppTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8AD01825199932F9007874BA /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0600; + ORGANIZATIONNAME = AppNexus; + TargetAttributes = { + 8A9F94BF19D1C37700AB739F = { + CreatedOnToolsVersion = 6.0.1; + DevelopmentTeam = DC4W7ZY24G; + }; + 8A9F94D719D1C37700AB739F = { + CreatedOnToolsVersion = 6.0.1; + TestTargetID = 8A9F94BF19D1C37700AB739F; + }; + 8AB387A419DB0CA8006F9E15 = { + CreatedOnToolsVersion = 6.0.1; + }; + 8AB387BC19DB0CA8006F9E15 = { + CreatedOnToolsVersion = 6.0.1; + TestTargetID = 8AB387A419DB0CA8006F9E15; + }; + 8AD0182C199932F9007874BA = { + CreatedOnToolsVersion = 6.0; + DevelopmentTeam = DC4W7ZY24G; + }; + 8AD01842199932F9007874BA = { + CreatedOnToolsVersion = 6.0; + TestTargetID = 8AD0182C199932F9007874BA; + }; + }; + }; + buildConfigurationList = 8AD01828199932F9007874BA /* Build configuration list for PBXProject "NewTestApp" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 8AD01824199932F9007874BA; + productRefGroup = 8AD0182E199932F9007874BA /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 8AA0093219DB169B0090EBED /* Products */; + ProjectRef = 8AF3654C19D472A60097019F /* ANSDK.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 8AD0182C199932F9007874BA /* NewTestApp */, + 8AD01842199932F9007874BA /* NewTestAppTests */, + 8A9F94BF19D1C37700AB739F /* MediationAdapterApp */, + 8A9F94D719D1C37700AB739F /* MediationAdapterAppTests */, + 8AB387A419DB0CA8006F9E15 /* OriginalUnitTestApp */, + 8AB387BC19DB0CA8006F9E15 /* OriginalUnitTestAppTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 8AA0094019DB169B0090EBED /* libANSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDK.a; + remoteRef = 8AA0093F19DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0094219DB169B0090EBED /* ANSDKResources.bundle */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = ANSDKResources.bundle; + remoteRef = 8AA0094119DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0094419DB169B0090EBED /* libANSDKGoogleAdMobAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKGoogleAdMobAdapter.a; + remoteRef = 8AA0094319DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0094619DB169B0090EBED /* libANSDKiAdAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKiAdAdapter.a; + remoteRef = 8AA0094519DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0094819DB169B0090EBED /* libANSDKMillennialMediaAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKMillennialMediaAdapter.a; + remoteRef = 8AA0094719DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0094A19DB169B0090EBED /* libANSDKMoPubAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKMoPubAdapter.a; + remoteRef = 8AA0094919DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0094C19DB169B0090EBED /* libANSDKFacebookAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKFacebookAdapter.a; + remoteRef = 8AA0094B19DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0094E19DB169B0090EBED /* libANAdapterForGoogleAdMobSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANAdapterForGoogleAdMobSDK.a; + remoteRef = 8AA0094D19DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0095019DB169B0090EBED /* libANAdapterForMoPubSDK.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANAdapterForMoPubSDK.a; + remoteRef = 8AA0094F19DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 8AA0095219DB169B0090EBED /* libANSDKAmazonAdapter.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libANSDKAmazonAdapter.a; + remoteRef = 8AA0095119DB169B0090EBED /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 8A9F94BE19D1C37700AB739F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A7F4CC619DB3976003ECC5C /* MPCloseButtonX.png in Resources */, + 8AA009ED19DB1D670090EBED /* Images.xcassets in Resources */, + 8AA00A2F19DB1FD70090EBED /* AmazonBanner.json in Resources */, + 8AA009EE19DB1D790090EBED /* LaunchScreen.xib in Resources */, + 8AA009EF19DB1D790090EBED /* Main.storyboard in Resources */, + 8A7F4CC519DB3976003ECC5C /* MPAdBrowserController.xib in Resources */, + 8AA00A2319DB1F290090EBED /* FacebookBanner.json in Resources */, + 8AA00A2419DB1F290090EBED /* FacebookInterstitial.json in Resources */, + 8AA00A2519DB1F290090EBED /* iAdBanner.json in Resources */, + 8AA00A2619DB1F290090EBED /* iAdInterstitial.json in Resources */, + 8AA00A2719DB1F290090EBED /* MillennialMediaBanner.json in Resources */, + 8AA00A3119DB1FFB0090EBED /* AmazonInterstitial.json in Resources */, + 8AA00A3619DB20A00090EBED /* AdMobInterstitial.json in Resources */, + 8A7F4CC719DB3976003ECC5C /* MPCloseButtonX@2x.png in Resources */, + 8AA00A2819DB1F290090EBED /* MillennialMediaInterstitial.json in Resources */, + 8AA00A2919DB1F290090EBED /* MoPubBanner.json in Resources */, + 8AA00A2A19DB1F290090EBED /* MoPubInterstitial.json in Resources */, + 8AA00A3519DB20A00090EBED /* AdMobBanner.json in Resources */, + 8A7F4CC819DB3976003ECC5C /* MRAID.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8A9F94D619D1C37700AB739F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB387A319DB0CA8006F9E15 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA009B619DB1A290090EBED /* ANSDKResources.bundle in Resources */, + 8AA009B319DB19790090EBED /* Images.xcassets in Resources */, + 8AA0095C19DB16C50090EBED /* TestsStoryboard.storyboard in Resources */, + 8AA009B019DB18CC0090EBED /* Default-568h@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB387BB19DB0CA8006F9E15 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA0098A19DB16CD0090EBED /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AD0182B199932F9007874BA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A742A8E19CB2E4700D2AE6F /* Main.storyboard in Resources */, + 8AD0DBFD19CA40AE00170BCB /* Default-568h@2x.png in Resources */, + 8AA00A4319DB2A410090EBED /* ANSDKResources.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AD01841199932F9007874BA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA00A4C19DB2AA60090EBED /* SuccessfulMediationResponse.json in Resources */, + 8AA00A4D19DB2AA60090EBED /* SuccessfulMRAIDListenerResponse.json in Resources */, + 8AA00A4E19DB2AA60090EBED /* SuccessfulMRAIDResponse.json in Resources */, + 8AA00A4819DB2A9A0090EBED /* dogSelfie.jpg in Resources */, + 8AA00A4919DB2A9A0090EBED /* dogSelfie@2x.jpg in Resources */, + 8AA00A4A19DB2A9A0090EBED /* GreyWhiteCat.jpg in Resources */, + 8AA00A4B19DB2A9A0090EBED /* GreyWhiteCat@2x.jpg in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8A9F94BC19D1C37700AB739F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA009C519DB1B200090EBED /* AppDelegate.m in Sources */, + 8AA00A2D19DB1FC20090EBED /* ANAdAdapterBaseAmazon+ANTest.m in Sources */, + 8AA009CA19DB1B200090EBED /* main.m in Sources */, + 8AA00A3919DB22410090EBED /* ANAdView+ANTest.m in Sources */, + 8AA00A3219DB204A0090EBED /* NSObject+Swizzling.m in Sources */, + 8AA009F819DB1DE60090EBED /* ANHTTPStubbingManager.m in Sources */, + 8AA009C419DB1B200090EBED /* ANMediationAdapterViewController.m in Sources */, + 8AA009FA19DB1DE60090EBED /* ANURLConnectionStub.m in Sources */, + 8AA009F919DB1DE60090EBED /* ANHTTPStubURLProtocol.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8A9F94D419D1C37700AB739F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA009E119DB1CEC0090EBED /* FacebookAdapter.m in Sources */, + 8AA00A3719DB21FA0090EBED /* XCTestCase+ANCategory.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB387A119DB0CA8006F9E15 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA0095D19DB16C50090EBED /* ViewController.m in Sources */, + 8AA0095B19DB16C50090EBED /* main.m in Sources */, + 8AA0095A19DB16C50090EBED /* AppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB387B919DB0CA8006F9E15 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AA009AD19DB18AE0090EBED /* ANHTTPStubURLProtocol.m in Sources */, + 8AA0099C19DB16CD0090EBED /* ANSuccessfulBanner.m in Sources */, + 8AA0099619DB16CD0090EBED /* ANFailAndHitOtherCallbacks.m in Sources */, + 8AA0098919DB16CD0090EBED /* BasicTests.m in Sources */, + 8AA0099919DB16CD0090EBED /* ANLoadAndHitOtherCallbacks.m in Sources */, + 8AA0099019DB16CD0090EBED /* ANMRAIDTestResponses.m in Sources */, + 8AA0099A19DB16CD0090EBED /* ANLoadedMultiple.m in Sources */, + 8AA0098F19DB16CD0090EBED /* ANBaseTestCase.m in Sources */, + 8AA0099119DB16CD0090EBED /* ANTestResponses.m in Sources */, + 8AA0098B19DB16CD0090EBED /* MediationCallbacksTests.m in Sources */, + 8AA0099519DB16CD0090EBED /* ANAdAdapterErrorCode.m in Sources */, + 8AA009AC19DB18AE0090EBED /* ANHTTPStubbingManager.m in Sources */, + 8AA0099319DB16CD0090EBED /* ANAdAdapterBannerNoAds.m in Sources */, + 8AA0098D19DB16CD0090EBED /* MRAIDTests.m in Sources */, + 8AA0099B19DB16CD0090EBED /* ANLoadThenFail.m in Sources */, + 8AA0098C19DB16CD0090EBED /* MediationTests.m in Sources */, + 8AA0099719DB16CD0090EBED /* ANFailedMultiple.m in Sources */, + 8AA0099819DB16CD0090EBED /* ANFailThenLoad.m in Sources */, + 8AA0099E19DB16CD0090EBED /* ANTimeout.m in Sources */, + 8AA0099419DB16CD0090EBED /* ANAdAdapterBannerRequestFail.m in Sources */, + 8AA0099D19DB16CD0090EBED /* ANSuccessfulBannerNeverCalled.m in Sources */, + 8AA0099219DB16CD0090EBED /* ANAdAdapterBannerDummy.m in Sources */, + 8AA009AE19DB18AE0090EBED /* ANURLConnectionStub.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AD01829199932F9007874BA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AD01839199932F9007874BA /* ANNewTestAppViewController.m in Sources */, + 8AD01836199932F9007874BA /* AppDelegate.m in Sources */, + 8AD01833199932F9007874BA /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AD0183F199932F9007874BA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8A0AA45919DB2CB4005EC52C /* ANInterstitialAd+ANTest.m in Sources */, + 8A0AA48F19DB3453005EC52C /* ANAdAdapterBannerMultipleSuccessCallbacks.m in Sources */, + 8AA00A5119DB2B160090EBED /* XCTestCase+ANCategory.m in Sources */, + 8A0AA46E19DB30A2005EC52C /* ANMediationAdViewControllerTestCase.m in Sources */, + 8AA00A5019DB2B160090EBED /* XCTestCase+ANBannerAdView.m in Sources */, + 8A0AA48E19DB3453005EC52C /* ANAdAdapterBannerMultipleFailureCallbacks.m in Sources */, + 8A0AA47719DB314C005EC52C /* ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m in Sources */, + 8A0AA45719DB2CB4005EC52C /* ANAdWebViewController+ANTest.m in Sources */, + 8AA00A4F19DB2B160090EBED /* XCTestCase+ANAdResponse.m in Sources */, + 8A0AA46D19DB30A2005EC52C /* ANLocationTestCase.m in Sources */, + 8A0AA49219DB3453005EC52C /* ANAdAdapterBannerNoRequestMethod.m in Sources */, + 8A0AA45819DB2CB4005EC52C /* ANBannerAdView+ANTest.m in Sources */, + 8A0AA49519DB3453005EC52C /* ANAdAdapterBannerTimeoutThenSuccessful.m in Sources */, + 8AA00A5219DB2B160090EBED /* XCTestCase+ANMediatedAd.m in Sources */, + 8A0AA45A19DB2CB4005EC52C /* NSObject+Swizzling.m in Sources */, + 8A0AA47019DB30A2005EC52C /* UIViewConstraintsTestCase.m in Sources */, + 8A0AA46C19DB30A2005EC52C /* ANBannerAdViewTransitionsTestCase.m in Sources */, + 8A0AA49019DB3453005EC52C /* ANAdAdapterBannerNetworkError.m in Sources */, + 8A0AA49119DB3453005EC52C /* ANAdAdapterBannerNoDelegate.m in Sources */, + 8A0AA46A19DB30A2005EC52C /* ANAdResponseTestCase.m in Sources */, + 8A0AA47919DB314C005EC52C /* ANLoadAndHitOtherCallbacks.m in Sources */, + 8A0AA46B19DB30A2005EC52C /* ANAdViewMRAIDCreativeTestCase.m in Sources */, + 8A0AA49419DB3453005EC52C /* ANAdAdapterBannerSuccessfulThenUnableToFill.m in Sources */, + 8A0AA45619DB2CB4005EC52C /* ANAdView+ANTest.m in Sources */, + 8A0AA49719DB3453005EC52C /* ANAdAdapterBannerUnableToFillThenSuccessful.m in Sources */, + 8A0AA47819DB314C005EC52C /* ANFailedMultiple.m in Sources */, + 8A0AA45519DB2CB4005EC52C /* ANAdFetcher+ANTest.m in Sources */, + 8A0AA46F19DB30A2005EC52C /* ANMRAIDViewControllerTestCase.m in Sources */, + 8AA00A5519DB2BF40090EBED /* ANMediationAdViewController+ANTest.m in Sources */, + 8A0AA49619DB3453005EC52C /* ANAdAdapterBannerUnableToFill.m in Sources */, + 8A0AA49319DB3453005EC52C /* ANAdAdapterBannerSuccessful.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 8A9F94DA19D1C37700AB739F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8A9F94BF19D1C37700AB739F /* MediationAdapterApp */; + targetProxy = 8A9F94D919D1C37700AB739F /* PBXContainerItemProxy */; + }; + 8AA009A019DB16EC0090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDK; + targetProxy = 8AA0099F19DB16EC0090EBED /* PBXContainerItemProxy */; + }; + 8AA009A219DB16EF0090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKResources; + targetProxy = 8AA009A119DB16EF0090EBED /* PBXContainerItemProxy */; + }; + 8AA009CF19DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDK; + targetProxy = 8AA009CE19DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA009D119DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKResources; + targetProxy = 8AA009D019DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA009D319DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKGoogleAdMobAdapter; + targetProxy = 8AA009D219DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA009D519DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKiAdAdapter; + targetProxy = 8AA009D419DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA009D719DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKMillennialMediaAdapter; + targetProxy = 8AA009D619DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA009D919DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKMoPubAdapter; + targetProxy = 8AA009D819DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA009DB19DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKFacebookAdapter; + targetProxy = 8AA009DA19DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA009DD19DB1BC10090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKAmazonAdapter; + targetProxy = 8AA009DC19DB1BC10090EBED /* PBXContainerItemProxy */; + }; + 8AA00A3F19DB2A200090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDKResources; + targetProxy = 8AA00A3E19DB2A200090EBED /* PBXContainerItemProxy */; + }; + 8AA00A4119DB2A230090EBED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ANSDK; + targetProxy = 8AA00A4019DB2A230090EBED /* PBXContainerItemProxy */; + }; + 8AB387BF19DB0CA8006F9E15 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8AB387A419DB0CA8006F9E15 /* OriginalUnitTestApp */; + targetProxy = 8AB387BE19DB0CA8006F9E15 /* PBXContainerItemProxy */; + }; + 8AD01845199932F9007874BA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8AD0182C199932F9007874BA /* NewTestApp */; + targetProxy = 8AD01844199932F9007874BA /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 8AA0096019DB16CD0090EBED /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 8AA0096119DB16CD0090EBED /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 8AA009BC19DB1B200090EBED /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + 8AA009BD19DB1B200090EBED /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; + 8AA009BE19DB1B200090EBED /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8AA009BF19DB1B200090EBED /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 8AD0183A199932F9007874BA /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 8AD0183B199932F9007874BA /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 8A9F94E119D1C37800AB739F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_PREFIX_HEADER = MediationAdapterApp/MediationAdapterPrefixHeader.pch; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = MediationAdapterApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 8A9F94E219D1C37800AB739F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_PREFIX_HEADER = MediationAdapterApp/MediationAdapterPrefixHeader.pch; + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = MediationAdapterApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 8A9F94E419D1C37800AB739F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREFIX_HEADER = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = MediationAdapterAppTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MediationAdapterApp.app/MediationAdapterApp"; + }; + name = Debug; + }; + 8A9F94E519D1C37800AB739F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREFIX_HEADER = ""; + INFOPLIST_FILE = MediationAdapterAppTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MediationAdapterApp.app/MediationAdapterApp"; + }; + name = Release; + }; + 8AB387C619DB0CA8006F9E15 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_PREFIX_HEADER = "$(SRCROOT)/OriginalUnitTestApp/Tests_Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "$(SRCROOT)/OriginalUnitTestApp/Tests-Info.plist"; + INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/OriginalUnitTestApp/Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 8AB387C719DB0CA8006F9E15 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_PREFIX_HEADER = "$(SRCROOT)/OriginalUnitTestApp/Tests_Prefix.pch"; + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "$(SRCROOT)/OriginalUnitTestApp/Tests-Info.plist"; + INFOPLIST_PREFIX_HEADER = "$(SRCROOT)/OriginalUnitTestApp/Tests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 8AB387C919DB0CA8006F9E15 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREFIX_HEADER = "$(SRCROOT)/OriginalUnitTestAppTests/TestsTests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "$(SRCROOT)/OriginalUnitTestAppTests/TestsTests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/OriginalUnitTestApp.app/OriginalUnitTestApp"; + }; + name = Debug; + }; + 8AB387CA19DB0CA8006F9E15 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREFIX_HEADER = "$(SRCROOT)/OriginalUnitTestAppTests/TestsTests-Prefix.pch"; + HEADER_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "$(SRCROOT)/OriginalUnitTestAppTests/TestsTests-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/OriginalUnitTestApp.app/OriginalUnitTestApp"; + }; + name = Release; + }; + 8AD0184B199932F9007874BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK", + "$(PROJECT_DIR)/../mediation/mediatedviews/Amazon/AmazonSDK", + "$(PROJECT_DIR)/../mediation/mediatedviews/Facebook/FacebookSDK", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/../sdk/**", + "$(PROJECT_DIR)/../mediation/**", + ); + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LIBRARY_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK", + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 8AD0184C199932F9007874BA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../mediation/mediatedviews/MillennialMedia/MillennialMediaSDK", + "$(PROJECT_DIR)/../mediation/mediatedviews/Amazon/AmazonSDK", + "$(PROJECT_DIR)/../mediation/mediatedviews/Facebook/FacebookSDK", + ); + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/../sdk/**", + "$(PROJECT_DIR)/../mediation/**", + ); + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LIBRARY_SEARCH_PATHS = ( + "$(PROJECT_DIR)/../mediation/mediatedviews/GoogleAdMob/GoogleAdMobSDK", + "$(PROJECT_DIR)/../mediation/mediatedviews/MoPub/MoPubSDK", + ); + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 8AD0184E199932F9007874BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_PREFIX_HEADER = NewTestApp/NewTestAppPrefixHeader.pch; + GCC_WARN_UNDECLARED_SELECTOR = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "/Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", + ); + INFOPLIST_FILE = NewTestApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 8AD0184F199932F9007874BA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_PREFIX_HEADER = NewTestApp/NewTestAppPrefixHeader.pch; + GCC_WARN_UNDECLARED_SELECTOR = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "/Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", + ); + INFOPLIST_FILE = NewTestApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + 8AD01851199932F9007874BA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_UNDECLARED_SELECTOR = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "/Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", + ); + INFOPLIST_FILE = NewTestAppTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewTestApp.app/NewTestApp"; + }; + name = Debug; + }; + 8AD01852199932F9007874BA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + GCC_WARN_UNDECLARED_SELECTOR = NO; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "/Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", + ); + INFOPLIST_FILE = NewTestAppTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LIBRARY_SEARCH_PATHS = "$(inherited)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewTestApp.app/NewTestApp"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8A9F94E019D1C37800AB739F /* Build configuration list for PBXNativeTarget "MediationAdapterApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8A9F94E119D1C37800AB739F /* Debug */, + 8A9F94E219D1C37800AB739F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8A9F94E319D1C37800AB739F /* Build configuration list for PBXNativeTarget "MediationAdapterAppTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8A9F94E419D1C37800AB739F /* Debug */, + 8A9F94E519D1C37800AB739F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AB387C519DB0CA8006F9E15 /* Build configuration list for PBXNativeTarget "OriginalUnitTestApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AB387C619DB0CA8006F9E15 /* Debug */, + 8AB387C719DB0CA8006F9E15 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AB387C819DB0CA8006F9E15 /* Build configuration list for PBXNativeTarget "OriginalUnitTestAppTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AB387C919DB0CA8006F9E15 /* Debug */, + 8AB387CA19DB0CA8006F9E15 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AD01828199932F9007874BA /* Build configuration list for PBXProject "NewTestApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AD0184B199932F9007874BA /* Debug */, + 8AD0184C199932F9007874BA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AD0184D199932F9007874BA /* Build configuration list for PBXNativeTarget "NewTestApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AD0184E199932F9007874BA /* Debug */, + 8AD0184F199932F9007874BA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AD01850199932F9007874BA /* Build configuration list for PBXNativeTarget "NewTestAppTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AD01851199932F9007874BA /* Debug */, + 8AD01852199932F9007874BA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8AD01825199932F9007874BA /* Project object */; +} diff --git a/BinaryProjects/old/ANSDKFull.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/tests/NewTestApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata old mode 100755 new mode 100644 similarity index 70% rename from BinaryProjects/old/ANSDKFull.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to tests/NewTestApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 5ee86d4a6..a75bc8b7f --- a/BinaryProjects/old/ANSDKFull.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/tests/NewTestApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:NewTestApp.xcodeproj"> diff --git a/tests/NewTestApp.xcodeproj/xcshareddata/xcbaselines/8AD01842199932F9007874BA.xcbaseline/9ACE4C84-E859-4620-A93A-9769781B973B.plist b/tests/NewTestApp.xcodeproj/xcshareddata/xcbaselines/8AD01842199932F9007874BA.xcbaseline/9ACE4C84-E859-4620-A93A-9769781B973B.plist new file mode 100644 index 000000000..e6547fdb9 --- /dev/null +++ b/tests/NewTestApp.xcodeproj/xcshareddata/xcbaselines/8AD01842199932F9007874BA.xcbaseline/9ACE4C84-E859-4620-A93A-9769781B973B.plist @@ -0,0 +1,22 @@ + + + + + classNames + + ANAdResponseTests + + testSuccessfulMediationParse + + com.apple.XCTPerformanceMetric_WallClockTime + + baselineAverage + 0 + baselineIntegrationDisplayName + Local Baseline + + + + + + diff --git a/tests/NewTestApp.xcodeproj/xcshareddata/xcbaselines/8AD01842199932F9007874BA.xcbaseline/Info.plist b/tests/NewTestApp.xcodeproj/xcshareddata/xcbaselines/8AD01842199932F9007874BA.xcbaseline/Info.plist new file mode 100644 index 000000000..40250aac9 --- /dev/null +++ b/tests/NewTestApp.xcodeproj/xcshareddata/xcbaselines/8AD01842199932F9007874BA.xcbaseline/Info.plist @@ -0,0 +1,40 @@ + + + + + runDestinationsByUUID + + 9ACE4C84-E859-4620-A93A-9769781B973B + + localComputer + + busSpeedInMHz + 100 + cpuCount + 1 + cpuKind + Intel Core i7 + cpuSpeedInMHz + 2800 + logicalCPUCoresPerPackage + 4 + modelCode + MacBookPro8,1 + physicalCPUCoresPerPackage + 2 + platformIdentifier + com.apple.platform.macosx + + targetArchitecture + x86_64 + targetDevice + + modelCode + iPhone6,1 + platformIdentifier + com.apple.platform.iphonesimulator + + + + + diff --git a/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/NewTestApp.xcscheme b/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/NewTestApp.xcscheme new file mode 100644 index 000000000..8930f2bfd --- /dev/null +++ b/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/NewTestApp.xcscheme @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/OriginalUnitTestApp.xcscheme b/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/OriginalUnitTestApp.xcscheme new file mode 100644 index 000000000..b67063cff --- /dev/null +++ b/tests/NewTestApp.xcodeproj/xcshareddata/xcschemes/OriginalUnitTestApp.xcscheme @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/NewTestApp/ANNewTestAppViewController.h b/tests/NewTestApp/ANNewTestAppViewController.h new file mode 100644 index 000000000..8f35eb87f --- /dev/null +++ b/tests/NewTestApp/ANNewTestAppViewController.h @@ -0,0 +1,23 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +NSString *const kANAdAdapterBaseAmazonAppKey = @"123"; + +@interface ANNewTestAppViewController : UIViewController + +@end + diff --git a/tests/NewTestApp/ANNewTestAppViewController.m b/tests/NewTestApp/ANNewTestAppViewController.m new file mode 100644 index 000000000..7e34e72f1 --- /dev/null +++ b/tests/NewTestApp/ANNewTestAppViewController.m @@ -0,0 +1,25 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANNewTestAppViewController.h" +#import "ANBannerAdView.h" + +@interface ANNewTestAppViewController () + +@end + +@implementation ANNewTestAppViewController + +@end \ No newline at end of file diff --git a/tests/NewTestApp/AppDelegate.h b/tests/NewTestApp/AppDelegate.h new file mode 100644 index 000000000..a7e0fe995 --- /dev/null +++ b/tests/NewTestApp/AppDelegate.h @@ -0,0 +1,23 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end + diff --git a/tests/NewTestApp/AppDelegate.m b/tests/NewTestApp/AppDelegate.m new file mode 100644 index 000000000..922c19be3 --- /dev/null +++ b/tests/NewTestApp/AppDelegate.m @@ -0,0 +1,28 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + return YES; +} + +@end diff --git a/tests/NewTestApp/Base.lproj/Main.storyboard b/tests/NewTestApp/Base.lproj/Main.storyboard new file mode 100644 index 000000000..8a3f0fc76 --- /dev/null +++ b/tests/NewTestApp/Base.lproj/Main.storyboard @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/Default-568h@2x.png b/tests/NewTestApp/Default-568h@2x.png similarity index 100% rename from tests/Default-568h@2x.png rename to tests/NewTestApp/Default-568h@2x.png diff --git a/tests/NewTestApp/Images.xcassets/AppIcon.appiconset/Contents.json b/tests/NewTestApp/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..33ec0bc83 --- /dev/null +++ b/tests/NewTestApp/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tests/NewTestApp/Images.xcassets/LaunchImage.launchimage/Contents.json b/tests/NewTestApp/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 000000000..fadb8232c --- /dev/null +++ b/tests/NewTestApp/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "subtype" : "retina4", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tests/NewTestApp/Info.plist b/tests/NewTestApp/Info.plist new file mode 100644 index 000000000..2ab088b37 --- /dev/null +++ b/tests/NewTestApp/Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + corp.appnexus.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/tests/NewTestApp/NewTestAppPrefixHeader.pch b/tests/NewTestApp/NewTestAppPrefixHeader.pch new file mode 100644 index 000000000..533324a31 --- /dev/null +++ b/tests/NewTestApp/NewTestAppPrefixHeader.pch @@ -0,0 +1,14 @@ +// +// NewTestAppPrefixHeader.pch +// NewTestApp +// +// Created by Jose Cabal-Ugaz on 9/23/14. +// Copyright (c) 2014 AppNexus. All rights reserved. +// + +#ifndef NewTestApp_NewTestAppPrefixHeader_pch +#define NewTestApp_NewTestAppPrefixHeader_pch + +#import + +#endif diff --git a/tests/NewTestApp/main.m b/tests/NewTestApp/main.m new file mode 100644 index 000000000..a77e28d53 --- /dev/null +++ b/tests/NewTestApp/main.m @@ -0,0 +1,23 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.h new file mode 100644 index 000000000..12c4b7624 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerMultipleFailureCallbacks : NSObject + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.m new file mode 100644 index 000000000..a40b58a83 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleFailureCallbacks.m @@ -0,0 +1,30 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerMultipleFailureCallbacks.h" + +@implementation ANAdAdapterBannerMultipleFailureCallbacks +@synthesize delegate; + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didFailToLoadAd:ANAdResponseNetworkError]; + [self.delegate didFailToLoadAd:ANAdResponseUnableToFill]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.h new file mode 100644 index 000000000..0f3eb1e4b --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerMultipleSuccessCallbacks : NSObject + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.m new file mode 100644 index 000000000..1f354ba82 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerMultipleSuccessCallbacks.m @@ -0,0 +1,31 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerMultipleSuccessCallbacks.h" + +@implementation ANAdAdapterBannerMultipleSuccessCallbacks +@synthesize delegate; + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didLoadBannerAd:[UIView new]]; + [self.delegate didLoadBannerAd:[UIView new]]; + [self.delegate didLoadBannerAd:[UIView new]]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNetworkError.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNetworkError.h new file mode 100644 index 000000000..54511bef5 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNetworkError.h @@ -0,0 +1,20 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerNetworkError : NSObject + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNetworkError.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNetworkError.m new file mode 100644 index 000000000..b1faa1586 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNetworkError.m @@ -0,0 +1,31 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerNetworkError.h" + +@implementation ANAdAdapterBannerNetworkError +@synthesize delegate; + +#pragma mark ANCustomAdapterBanner + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didFailToLoadAd:ANAdResponseNetworkError]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoDelegate.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoDelegate.h new file mode 100644 index 000000000..bfd6a207c --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoDelegate.h @@ -0,0 +1,21 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerNoDelegate : NSObject + +@end diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoDelegate.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoDelegate.m new file mode 100644 index 000000000..7c4dfbdd4 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoDelegate.m @@ -0,0 +1,31 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerNoDelegate.h" + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wobjc-protocol-property-synthesis" +@implementation ANAdAdapterBannerNoDelegate +#pragma clang diagnostic pop + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoRequestMethod.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoRequestMethod.h new file mode 100644 index 000000000..9ac9fa520 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoRequestMethod.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerNoRequestMethod : NSObject + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoRequestMethod.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoRequestMethod.m new file mode 100644 index 000000000..f2e90612d --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerNoRequestMethod.m @@ -0,0 +1,24 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerNoRequestMethod.h" + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wprotocol" +@implementation ANAdAdapterBannerNoRequestMethod +#pragma clang diagnostic pop +@synthesize delegate; + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessful.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessful.h new file mode 100644 index 000000000..01fe2488b --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessful.h @@ -0,0 +1,21 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerSuccessful : NSObject + +@end diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessful.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessful.m new file mode 100644 index 000000000..051ad2d8e --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessful.m @@ -0,0 +1,31 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerSuccessful.h" + +@implementation ANAdAdapterBannerSuccessful +@synthesize delegate; + +#pragma mark ANCustomAdapterBanner + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didLoadBannerAd:[UIView new]]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.h new file mode 100644 index 000000000..ed55ccb96 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerSuccessfulThenUnableToFill : NSObject + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.m new file mode 100644 index 000000000..328bfb10b --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerSuccessfulThenUnableToFill.m @@ -0,0 +1,30 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerSuccessfulThenUnableToFill.h" + +@implementation ANAdAdapterBannerSuccessfulThenUnableToFill +@synthesize delegate; + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didLoadBannerAd:[UIView new]]; + [self.delegate didFailToLoadAd:ANAdResponseNetworkError]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.h new file mode 100644 index 000000000..77dadcbb1 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerTimeoutThenSuccessful : NSObject + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.m new file mode 100644 index 000000000..dec790390 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerTimeoutThenSuccessful.m @@ -0,0 +1,37 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerTimeoutThenSuccessful.h" +#import "NSTimer+ANCategory.h" +#import "ANGlobal.h" + +@implementation ANAdAdapterBannerTimeoutThenSuccessful +@synthesize delegate; + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + __weak ANAdAdapterBannerTimeoutThenSuccessful *weakSelf = self; + [NSTimer scheduledTimerWithTimeInterval:kAppNexusMediationNetworkTimeoutInterval + 1.0 + block:^{ + ANAdAdapterBannerTimeoutThenSuccessful *strongSelf = weakSelf; + [strongSelf.delegate didLoadBannerAd:[UIView new]]; + } + repeats:NO]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFill.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFill.h new file mode 100644 index 000000000..fcbe5bcab --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFill.h @@ -0,0 +1,20 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerUnableToFill : NSObject + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFill.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFill.m new file mode 100644 index 000000000..904f4cc64 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFill.m @@ -0,0 +1,31 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerUnableToFill.h" + +@implementation ANAdAdapterBannerUnableToFill +@synthesize delegate; + +#pragma mark ANCustomAdapterBanner + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didFailToLoadAd:ANAdResponseUnableToFill]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.h new file mode 100644 index 000000000..df4c9e32f --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerUnableToFillThenSuccessful : NSObject + +@end diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.m new file mode 100644 index 000000000..ab364d2c8 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillThenSuccessful.m @@ -0,0 +1,30 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerUnableToFillThenSuccessful.h" + +@implementation ANAdAdapterBannerUnableToFillThenSuccessful +@synthesize delegate; + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didFailToLoadAd:ANAdResponseUnableToFill]; + [self.delegate didLoadBannerAd:[UIView new]]; +} + +@end diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h new file mode 100644 index 000000000..0883e8ecc --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h @@ -0,0 +1,21 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANCustomAdapter.h" + +@interface ANAdAdapterBannerUnableToFillWithSubsequentCallbacks : NSObject + +@end diff --git a/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m new file mode 100644 index 000000000..1b5b3b466 --- /dev/null +++ b/tests/NewTestAppTests/Banner Adapters/ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.m @@ -0,0 +1,37 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBannerUnableToFillWithSubsequentCallbacks.h" + +@implementation ANAdAdapterBannerUnableToFillWithSubsequentCallbacks +@synthesize delegate; + +#pragma mark ANCustomAdapterBanner + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters { + [self.delegate didFailToLoadAd:ANAdResponseUnableToFill]; + [self.delegate adWasClicked]; + [self.delegate willPresentAd]; + [self.delegate didPresentAd]; + [self.delegate willCloseAd]; + [self.delegate didCloseAd]; + [self.delegate willLeaveApplication]; +} + +@end \ No newline at end of file diff --git a/tests/TestClasses/TestViews/ANFailedMultiple.h b/tests/NewTestAppTests/Banner Adapters/ANFailedMultiple.h similarity index 100% rename from tests/TestClasses/TestViews/ANFailedMultiple.h rename to tests/NewTestAppTests/Banner Adapters/ANFailedMultiple.h diff --git a/tests/TestClasses/TestViews/ANFailedMultiple.m b/tests/NewTestAppTests/Banner Adapters/ANFailedMultiple.m similarity index 100% rename from tests/TestClasses/TestViews/ANFailedMultiple.m rename to tests/NewTestAppTests/Banner Adapters/ANFailedMultiple.m diff --git a/tests/TestClasses/TestViews/ANLoadAndHitOtherCallbacks.h b/tests/NewTestAppTests/Banner Adapters/ANLoadAndHitOtherCallbacks.h similarity index 100% rename from tests/TestClasses/TestViews/ANLoadAndHitOtherCallbacks.h rename to tests/NewTestAppTests/Banner Adapters/ANLoadAndHitOtherCallbacks.h diff --git a/tests/TestClasses/TestViews/ANLoadAndHitOtherCallbacks.m b/tests/NewTestAppTests/Banner Adapters/ANLoadAndHitOtherCallbacks.m similarity index 100% rename from tests/TestClasses/TestViews/ANLoadAndHitOtherCallbacks.m rename to tests/NewTestAppTests/Banner Adapters/ANLoadAndHitOtherCallbacks.m diff --git a/tests/NewTestAppTests/Info.plist b/tests/NewTestAppTests/Info.plist new file mode 100644 index 000000000..2984231fe --- /dev/null +++ b/tests/NewTestAppTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + corp.appnexus.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/tests/NewTestAppTests/Tests/ANAdResponseTestCase.m b/tests/NewTestAppTests/Tests/ANAdResponseTestCase.m new file mode 100644 index 000000000..8e7d0b487 --- /dev/null +++ b/tests/NewTestAppTests/Tests/ANAdResponseTestCase.m @@ -0,0 +1,95 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "XCTestCase+ANAdResponse.h" +#import "XCTestCase+ANBannerAdView.h" +#import "ANMediatedAd.h" +#import "ANAdRequestUrl.h" +#import "ANBannerAdView+ANTest.h" + +@interface ANAdResponseTestCase : XCTestCase + +@end + +@implementation ANAdResponseTestCase + +#pragma mark - Local Tests + +- (void)testLocalSuccessfulMRAIDResponse { + ANAdResponse *response = [self responseWithJSONResource:kANAdResponseSuccessfulMRAID]; + XCTAssert(response.isMraid == YES); + XCTAssert([response.type isEqualToString:@"banner"]); + XCTAssert([response.height isEqualToString:@"50"]); + XCTAssert([response.width isEqualToString:@"320"]); + XCTAssertNotNil(response.content); +} + +- (void)testLocalSuccessfulMediationResponse { + ANAdResponse *response = [self responseWithJSONResource:kANAdResponseSuccessfulMediation]; + XCTAssert([response.mediatedAds count] == 4); + + ANMediatedAd *firstMediatedAd = [response.mediatedAds objectAtIndex:0]; + ANMediatedAd *expectedFirstMediatedAd = [[ANMediatedAd alloc] init]; + expectedFirstMediatedAd.width = @"320"; + expectedFirstMediatedAd.height = @"50"; + expectedFirstMediatedAd.adId = @"/6925/Shazam_iPhoneAPP/Standard_Banners/My_Tags"; + expectedFirstMediatedAd.className = @"ANAdAdapterBannerDFP"; + [self mediatedAd:firstMediatedAd equalToMediatedAd:expectedFirstMediatedAd]; + XCTAssertNotNil(firstMediatedAd.resultCB); + + ANMediatedAd *secondMediatedAd = [response.mediatedAds objectAtIndex:1]; + ANMediatedAd *expectedSecondMediatedAd = [[ANMediatedAd alloc] init]; + expectedSecondMediatedAd.width = @"320"; + expectedSecondMediatedAd.height = @"50"; + expectedSecondMediatedAd.className = @"ANAdAdapterBannerMillennialMedia"; + expectedSecondMediatedAd.adId = @"148502"; + [self mediatedAd:secondMediatedAd equalToMediatedAd:expectedSecondMediatedAd]; + XCTAssertNotNil(secondMediatedAd.resultCB); + + ANMediatedAd *thirdMediatedAd = [response.mediatedAds objectAtIndex:2]; + ANMediatedAd *expectedThirdMediatedAd = [[ANMediatedAd alloc] init]; + expectedThirdMediatedAd.width = @"320"; + expectedThirdMediatedAd.height = @"50"; + expectedThirdMediatedAd.className = @"ANAdAdapterBannerAdMob"; + expectedThirdMediatedAd.adId = @"ca-app-pub-5668774179595841/1125462353"; + [self mediatedAd:thirdMediatedAd equalToMediatedAd:expectedThirdMediatedAd]; + XCTAssertNotNil(thirdMediatedAd.resultCB); + + ANMediatedAd *fourthMediatedAd = [response.mediatedAds objectAtIndex:3]; + ANMediatedAd *expectedFourthMediatedAd = [[ANMediatedAd alloc] init]; + expectedFourthMediatedAd.className = @"ANAdAdapterBanneriAd"; + [self mediatedAd:fourthMediatedAd equalToMediatedAd:expectedFourthMediatedAd]; + XCTAssertNotNil(fourthMediatedAd.resultCB); +} + +- (NSURL *)sdkRequestURLForPlacementId:(NSString *)placementId + adSize:(CGSize)adSize { + ANBannerAdView *bav = [self bannerViewWithFrameSize:adSize]; + bav.placementId = placementId; + bav.adSize = adSize; + return [ANAdRequestUrl buildRequestUrlWithAdFetcherDelegate:bav + baseUrlString:@"http://mediation.adnxs.com/mob?"]; +} + +- (void)mediatedAd:(ANMediatedAd *)parsedMediatedAd equalToMediatedAd:(ANMediatedAd *)comparisonMediatedAd { + XCTAssertEqualObjects(parsedMediatedAd.width, comparisonMediatedAd.width); + XCTAssertEqualObjects(parsedMediatedAd.height, comparisonMediatedAd.height); + XCTAssertEqualObjects(parsedMediatedAd.className, comparisonMediatedAd.className); + XCTAssertEqualObjects(parsedMediatedAd.adId, comparisonMediatedAd.adId); +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Tests/ANAdViewMRAIDCreativeTestCase.m b/tests/NewTestAppTests/Tests/ANAdViewMRAIDCreativeTestCase.m new file mode 100644 index 000000000..e8d790f96 --- /dev/null +++ b/tests/NewTestAppTests/Tests/ANAdViewMRAIDCreativeTestCase.m @@ -0,0 +1,51 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "XCTestCase+ANBannerAdView.h" +#import "XCTestCase+ANAdResponse.h" +#import "ANAdFetcher+ANTest.h" +#import "ANBannerAdView+ANTest.h" + +@interface ANAdViewMRAIDCreativeTestCase : XCTestCase + +@property (nonatomic, readwrite, strong) ANAdFetcher *adFetcher; + +@end + +@implementation ANAdViewMRAIDCreativeTestCase + +- (void)setUp { + [super setUp]; + self.adFetcher = [[ANAdFetcher alloc] init]; +} + +- (void)testExample { + ANBannerAdView *bannerAdView = [self bannerViewWithFrameSize:CGSizeMake(300, 250)]; + self.adFetcher.delegate = bannerAdView; + [self.adFetcher handleStandardAd:[self responseWithJSONResource:kANAdResponseSuccessfulMRAIDListener]]; + ANWebView *webView = self.adFetcher.webView; + [bannerAdView setContentView:webView]; +} + +- (ANBannerAdView *)mraidListenerBannerAdView { + ANBannerAdView *bannerAdView = [self bannerViewWithFrameSize:CGSizeMake(300, 250)]; + ANAdResponse *mraidResponse = [self responseWithJSONResource:kANAdResponseSuccessfulMRAIDListener]; + [bannerAdView adFetcher:nil didFinishRequestWithResponse:mraidResponse]; + return bannerAdView; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Tests/ANBannerAdViewTransitionsTestCase.m b/tests/NewTestAppTests/Tests/ANBannerAdViewTransitionsTestCase.m new file mode 100644 index 000000000..41663703f --- /dev/null +++ b/tests/NewTestAppTests/Tests/ANBannerAdViewTransitionsTestCase.m @@ -0,0 +1,151 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "ANBannerAdView.h" +#import "ANAdFetcher.h" +#import "XCTestCase+ANCategory.h" +#import "XCTestCase+ANBannerAdView.h" +#import "ANLogManager.h" +#import "ANBannerAdView+ANTest.h" + +@interface ANBannerAdViewTransitionsTestCase : XCTestCase +@property (nonatomic, weak) ANBannerAdView *bannerAdView; +@property (nonatomic, strong) NSLayoutConstraint *centerXConstraint; +@property (nonatomic, strong) NSLayoutConstraint *centerYConstraint; +@end + +@implementation ANBannerAdViewTransitionsTestCase + ++ (void)load { + [ANLogManager setANLogLevel:ANLogLevelAll]; +} + +- (void)setUp { + [super setUp]; + [self createBannerView]; +} + +- (void)tearDown { + [super tearDown]; + [self cleanupRootViewController]; +} + +- (void)createBannerView { + ANBannerAdView *bannerAdView = [self bannerViewWithFrameSize:CGSizeMake(300, 250)]; + UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; + bannerAdView.rootViewController = rootViewController; + [rootViewController.view addSubview:bannerAdView]; + + self.centerXConstraint = [NSLayoutConstraint constraintWithItem:rootViewController.view + attribute:NSLayoutAttributeCenterX + relatedBy:NSLayoutRelationEqual + toItem:bannerAdView + attribute:NSLayoutAttributeCenterX + multiplier:1.0f + constant:0.0f]; + self.centerYConstraint = [NSLayoutConstraint constraintWithItem:rootViewController.view + attribute:NSLayoutAttributeCenterY + relatedBy:NSLayoutRelationEqual + toItem:bannerAdView + attribute:NSLayoutAttributeCenterY + multiplier:1.0f + constant:0.0f]; + [rootViewController.view addConstraints:@[self.centerXConstraint, self.centerYConstraint]]; + self.bannerAdView = bannerAdView; +} + +- (void)cleanupRootViewController { + [self.bannerAdView.rootViewController.view removeConstraints:@[self.centerXConstraint, self.centerYConstraint]]; + self.centerXConstraint = nil; + self.centerYConstraint = nil; + [self.bannerAdView removeFromSuperview]; +} + +- (void)testFadeTransition { + // Setup + ANBannerAdView *bannerAdView = self.bannerAdView; + bannerAdView.transitionType = ANBannerViewAdTransitionTypeFade; + bannerAdView.transitionDuration = 2.5f; + + // Adding Content View + [bannerAdView setContentView:[self catContentView]]; + XCTAssert([bannerAdView.transitionInProgress boolValue] == YES); + [self keyValueObservingExpectationForObject:bannerAdView + keyPath:@"transitionInProgress" + expectedValue:@(NO)]; + [self waitForExpectationsWithTimeout:bannerAdView.transitionDuration + 0.1 + handler:^(NSError *error) { + XCTAssert([bannerAdView.transitionInProgress boolValue] == NO); + [bannerAdView removeFromSuperview]; + }]; +} + +- (void)testFlipTransition { + // Setup + ANBannerAdView *bannerAdView = self.bannerAdView; + bannerAdView.transitionType = ANBannerViewAdTransitionTypeFlip; + bannerAdView.transitionDuration = 2.5f; + + // Adding first content view + UIView *catContentView = [self catContentView]; + [bannerAdView setContentView:catContentView]; + [XCTestCase delayForTimeInterval:bannerAdView.transitionDuration + 0.1]; + XCTAssert([bannerAdView.transitionInProgress boolValue] == NO); + XCTAssert([bannerAdView.subviews count] == 1); + XCTAssert([bannerAdView.subviews firstObject] == catContentView); + + // Adding second content view + UIView *dogContentView = [self dogContentView]; + [bannerAdView setContentView:dogContentView]; + [XCTestCase delayForTimeInterval:bannerAdView.transitionDuration + 0.1]; + XCTAssert([bannerAdView.transitionInProgress boolValue] == NO); + XCTAssert([[bannerAdView subviews] count] == 1); + XCTAssert([bannerAdView.subviews firstObject] == dogContentView); + + [bannerAdView removeFromSuperview]; +} + +- (void)testFlipTransition2 { + // Setup + ANBannerAdView *bannerAdView = self.bannerAdView; + bannerAdView.transitionType = ANBannerViewAdTransitionTypeFlip; + bannerAdView.transitionDuration = 2.5f; + + // Adding first content view + UIView *catContentView = [self catContentView]; + [bannerAdView setContentView:catContentView]; + [XCTestCase delayForTimeInterval:1.5f]; + + // Adding second content view (first transition still in progress) + UIView *dogContentView = [self dogContentView]; + [bannerAdView setContentView:dogContentView]; + [XCTestCase delayForTimeInterval:2.0f]; + + // Second transition should still be in progress + XCTAssert([bannerAdView.transitionInProgress boolValue] == YES); + // First transition would be over by this point, but the first view should still be in the hierarchy + XCTAssert([bannerAdView.subviews count] == 2); + + [XCTestCase delayForTimeInterval:1.0f]; + + // Second transition should be over by this point + XCTAssert([bannerAdView.transitionInProgress boolValue] == NO); + XCTAssert([bannerAdView.subviews count] == 1); + XCTAssert([bannerAdView.subviews firstObject] == dogContentView); +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Tests/ANLocationTestCase.m b/tests/NewTestAppTests/Tests/ANLocationTestCase.m new file mode 100644 index 000000000..1cae4e57e --- /dev/null +++ b/tests/NewTestAppTests/Tests/ANLocationTestCase.m @@ -0,0 +1,109 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "ANLocation.h" + +static CGFloat const kAppNexusNewYorkLocationLatitudeFull = 40.7418474; +static CGFloat const kAppNexusNewYorkLocationLongitudeFull = -73.99096229999998; +static CGFloat const kAppNexusNewYorkHorizontalAccuracy = 150; + +static CGFloat const kAppNexusNewYorkLocationLatitudeTwoDecimalPlaces = 40.74; +static CGFloat const kAppNexusNewYorkLocationLongitudeTwoDecimalPlaces = -73.99; + +static CGFloat const kAppNexusNewYorkLocationLatitudeOneDecimalPlace = 40.7; +static CGFloat const kAppNexusNewYorkLocationLongitudeOneDecimalPlace = -74.0; + +static CGFloat const kAppNexusNewYorkLocationLatitudeNoDecimalPlaces = 41; +static CGFloat const kAppNexusNewYorkLocationLongitudeNoDecimalPlaces = -74; + +@interface ANLocationTestCase : XCTestCase + +@end + +@implementation ANLocationTestCase + +- (void)testPrecisionTwoDecimalPlaces { + ANLocation *location = [ANLocation getLocationWithLatitude:kAppNexusNewYorkLocationLatitudeFull + longitude:kAppNexusNewYorkLocationLongitudeFull + timestamp:[NSDate date] + horizontalAccuracy:kAppNexusNewYorkHorizontalAccuracy + precision:2]; + XCTAssertNotNil(location); + XCTAssertEqual(location.latitude, kAppNexusNewYorkLocationLatitudeTwoDecimalPlaces); + XCTAssertEqual(location.longitude, kAppNexusNewYorkLocationLongitudeTwoDecimalPlaces); + XCTAssertEqual(location.horizontalAccuracy, kAppNexusNewYorkHorizontalAccuracy); +} + +- (void)testPrecisionOneDecimalPlace { + ANLocation *location = [ANLocation getLocationWithLatitude:kAppNexusNewYorkLocationLatitudeFull + longitude:kAppNexusNewYorkLocationLongitudeFull + timestamp:[NSDate date] + horizontalAccuracy:kAppNexusNewYorkHorizontalAccuracy + precision:1]; + XCTAssertNotNil(location); + XCTAssertEqual(location.latitude, kAppNexusNewYorkLocationLatitudeOneDecimalPlace); + XCTAssertEqual(location.longitude, kAppNexusNewYorkLocationLongitudeOneDecimalPlace); + XCTAssertEqual(location.horizontalAccuracy, kAppNexusNewYorkHorizontalAccuracy); +} + +- (void)testPrecisionNoDecimalPlaces { + ANLocation *location = [ANLocation getLocationWithLatitude:kAppNexusNewYorkLocationLatitudeFull + longitude:kAppNexusNewYorkLocationLongitudeFull + timestamp:[NSDate date] + horizontalAccuracy:kAppNexusNewYorkHorizontalAccuracy + precision:0]; + XCTAssertNotNil(location); + XCTAssertEqual(location.latitude, kAppNexusNewYorkLocationLatitudeNoDecimalPlaces); + XCTAssertEqual(location.longitude, kAppNexusNewYorkLocationLongitudeNoDecimalPlaces); + XCTAssertEqual(location.horizontalAccuracy, kAppNexusNewYorkHorizontalAccuracy); +} + +- (void)testPrecisionWithNoPrecision { + ANLocation *location = [ANLocation getLocationWithLatitude:kAppNexusNewYorkLocationLatitudeFull + longitude:kAppNexusNewYorkLocationLongitudeFull + timestamp:[NSDate date] + horizontalAccuracy:kAppNexusNewYorkHorizontalAccuracy + precision:-1]; + XCTAssertNotNil(location); + XCTAssertEqual(location.latitude, kAppNexusNewYorkLocationLatitudeFull); + XCTAssertEqual(location.longitude, kAppNexusNewYorkLocationLongitudeFull); + XCTAssertEqual(location.horizontalAccuracy, kAppNexusNewYorkHorizontalAccuracy); +} + +- (void)testNegativePrecision { + ANLocation *location = [ANLocation getLocationWithLatitude:kAppNexusNewYorkLocationLatitudeFull + longitude:kAppNexusNewYorkLocationLongitudeFull + timestamp:[NSDate date] + horizontalAccuracy:kAppNexusNewYorkHorizontalAccuracy + precision:-3]; + XCTAssertEqual(location.latitude, kAppNexusNewYorkLocationLatitudeFull); + XCTAssertEqual(location.longitude, kAppNexusNewYorkLocationLongitudeFull); + XCTAssertEqual(location.horizontalAccuracy, kAppNexusNewYorkHorizontalAccuracy); +} + +- (void)testNoPrecision { + ANLocation *location = [ANLocation getLocationWithLatitude:kAppNexusNewYorkLocationLatitudeFull + longitude:kAppNexusNewYorkLocationLongitudeFull + timestamp:[NSDate date] + horizontalAccuracy:kAppNexusNewYorkHorizontalAccuracy]; + XCTAssertNotNil(location); + XCTAssertEqual(location.latitude, kAppNexusNewYorkLocationLatitudeFull); + XCTAssertEqual(location.longitude, kAppNexusNewYorkLocationLongitudeFull); + XCTAssertEqual(location.horizontalAccuracy, kAppNexusNewYorkHorizontalAccuracy); +} + +@end diff --git a/tests/NewTestAppTests/Tests/ANMRAIDViewControllerTestCase.m b/tests/NewTestAppTests/Tests/ANMRAIDViewControllerTestCase.m new file mode 100644 index 000000000..bfe28dcc3 --- /dev/null +++ b/tests/NewTestAppTests/Tests/ANMRAIDViewControllerTestCase.m @@ -0,0 +1,59 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "ANMRAIDViewController.h" + +@interface ANMRAIDViewControllerTestCase : XCTestCase +@property (nonatomic, readwrite, strong) ANMRAIDViewController *viewController; +@end + +@implementation ANMRAIDViewControllerTestCase + +- (void)setUp { + [super setUp]; + self.viewController = [[ANMRAIDViewController alloc] init]; +} + +- (void)tearDown { + [super tearDown]; + [self.viewController dismissViewControllerAnimated:NO completion:nil]; +} + +- (void)testExample { + UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300.0f, 250.0f)]; + self.viewController.contentView = contentView; + [self.viewController.view addSubview:contentView]; + self.viewController.contentView.opaque = NO; + self.viewController.contentView.backgroundColor = [UIColor greenColor]; + self.viewController.allowOrientationChange = NO; + self.viewController.orientation = UIInterfaceOrientationPortrait; + + XCTestExpectation *expectation = [self expectationWithDescription:@"ANMRAIDViewController presented"]; + UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; + + [rootViewController presentViewController:self.viewController + animated:YES + completion:^{ + XCTAssert(CGRectEqualToRect(contentView.frame, self.viewController.view.frame)); + [expectation fulfill]; + }]; + + [self waitForExpectationsWithTimeout:5.0f + handler:nil]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Tests/ANMediationAdViewControllerTestCase.m b/tests/NewTestAppTests/Tests/ANMediationAdViewControllerTestCase.m new file mode 100644 index 000000000..e4290e4cf --- /dev/null +++ b/tests/NewTestAppTests/Tests/ANMediationAdViewControllerTestCase.m @@ -0,0 +1,195 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "ANBannerAdView.h" +#import "ANLogManager.h" +#import "XCTestCase+ANMediatedAd.h" +#import "ANMediationAdViewController.h" +#import "ANGlobal.h" +#import "XCTestCase+ANCategory.h" +#import "ANAdFetcher+ANTest.h" +#import "ANBannerAdView+ANTest.h" + +@interface ANMediationAdViewControllerTestCase : XCTestCase + +@property (nonatomic, readwrite, strong) ANAdFetcher *adFetcher; +@property (nonatomic, readwrite, strong) ANBannerAdView *adView; + +@end + +@implementation ANMediationAdViewControllerTestCase + +- (void)setUp { + [super setUp]; + self.adFetcher = [[ANAdFetcher alloc] init]; + self.adView = [[ANBannerAdView alloc] init]; + [ANLogManager setANLogLevel:ANLogLevelAll]; +} + +#pragma mark - Invalid Adapters + +- (void)testNilMediatedAd { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:nil + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNil(controller, @"Did not expect a controller passing in a nil mediated ad"); +} + +- (void)testMediatedAdWithFakeClass { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdWithFakeClass] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNil(controller, @"Did not expect a controller for an invalid class"); +} + +- (void)testInterstitialMediatedAdWithBannerAdViewDelegate { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self iAdInterstitialMediatedAd] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNil(controller, @"Did not expect a controller for a class of the wrong adapter type"); +} + +- (void)testMediatedAdWithNoDelegate { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdWithNoDelegateInClass] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNil(controller); +} + +- (void)testMediatedAdWithNoRequestMethod { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdWithNoRequestMethodInClass] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNil(controller); +} + +# pragma mark - Valid Adapters + +- (void)testMediatedAdUnableToFill { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdUnableToFill] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self expectAdFetcherCallbackWithResponseCode:ANAdResponseUnableToFill]; + [self waitForExpectationsWithTimeout:kAppNexusRequestTimeoutInterval + handler:nil]; +} + +- (void)testMediatedAdNetworkError { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdNetworkError] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self expectAdFetcherCallbackWithResponseCode:ANAdResponseNetworkError]; + [self waitForExpectationsWithTimeout:kAppNexusRequestTimeoutInterval + handler:nil]; +} + +- (void)testMediatedAdSuccessful { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdSuccessful] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self expectAdFetcherCallbackWithResponseCode:ANAdResponseSuccessful]; + [self waitForExpectationsWithTimeout:kAppNexusRequestTimeoutInterval + handler:nil]; +} + +- (void)testMediatedAdTimeoutThenSuccessful { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdTimeout] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self validateAdFetcherCallbackWithResponseCode:ANAdResponseInternalError + timeout:kAppNexusRequestTimeoutInterval + 1.0]; +} + +- (void)testMediatedAdUnableToFillThenSuccessful { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdUnableToFillThenSuccessful] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self validateAdFetcherCallbackWithResponseCode:ANAdResponseUnableToFill + timeout:0.5]; +} + +- (void)testMediatedAdSuccessfulThenUnableToFill { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdSuccessfulThenUnableToFill] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self validateAdFetcherCallbackWithResponseCode:ANAdResponseSuccessful + timeout:0.5]; +} + +- (void)testMediatedAdMultipleSuccessCallbacks { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdMultipleSuccessCallbacks] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self validateAdFetcherCallbackWithResponseCode:ANAdResponseSuccessful + timeout:0.5]; +} + +- (void)testMediatedAdMultipleFailureCallbacks { + ANMediationAdViewController *controller = [ANMediationAdViewController initMediatedAd:[self mediatedAdMultipleFailureCallbacks] + withFetcher:self.adFetcher + adViewDelegate:self.adView]; + XCTAssertNotNil(controller); + [self validateAdFetcherCallbackWithResponseCode:ANAdResponseNetworkError + timeout:0.5]; +} + +#pragma mark - Helper Methods + +- (void)expectAdFetcherCallbackWithResponseCode:(ANAdResponseCode)code { + [self expectationForNotification:kANAdFetcherFireResultCBRequestedNotification + object:self.adFetcher + handler:^BOOL(NSNotification *notification) { + NSDictionary *userInfo = notification.userInfo; + NSNumber *reason = userInfo[kANAdFetcherFireResultCBRequestedReason]; + if (reason && [reason integerValue] == code) { + return YES; + } + return NO; + }]; +} + +// Assert that AdFetcher receives ANAdResponse code exactly once, and that no other code is ever received. +- (void)validateAdFetcherCallbackWithResponseCode:(ANAdResponseCode)code + timeout:(NSTimeInterval)timeout { + __block BOOL receivedDesiredCallback = NO; + id observer = [[NSNotificationCenter defaultCenter] addObserverForName:kANAdFetcherFireResultCBRequestedNotification + object:self.adFetcher + queue:[NSOperationQueue mainQueue] + usingBlock:^(NSNotification *notification) { + BOOL validCallback = NO; + NSNumber *reason; + if (!receivedDesiredCallback) { + NSDictionary *userInfo = notification.userInfo; + reason = userInfo[kANAdFetcherFireResultCBRequestedReason]; + validCallback = reason && [reason integerValue] == code; + receivedDesiredCallback = validCallback; + } + XCTAssert(validCallback, @"Received invalid ad fetcher callback with reason: %@", reason); + }]; + [XCTestCase delayForTimeInterval:timeout]; + XCTAssert(receivedDesiredCallback); + [[NSNotificationCenter defaultCenter] removeObserver:observer]; +} + +@end \ No newline at end of file diff --git a/tests/NewTestAppTests/Tests/UIViewConstraintsTestCase.m b/tests/NewTestAppTests/Tests/UIViewConstraintsTestCase.m new file mode 100644 index 000000000..f7eb560c9 --- /dev/null +++ b/tests/NewTestAppTests/Tests/UIViewConstraintsTestCase.m @@ -0,0 +1,182 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import +#import "UIView+ANCategory.h" +#import "XCTestCase+ANCategory.h" + +static NSTimeInterval const kUIViewConstraintsTestCaseFrameRefreshDelay = 0.05; +static CGFloat const kUIViewConstraintsTestCaseContainerViewWidth = 320; +static CGFloat const kUIViewConstraintsTestCaseContainerViewHeight = 400; + +@interface UIViewConstraintsTestCase : XCTestCase +@property (nonatomic, weak) UIView *containerView; +@property (nonatomic, weak) UIView *contentView; +@end + +@implementation UIViewConstraintsTestCase + +- (void)setUp { + [super setUp]; + [self setupContainerView]; + [self setupContentView]; +} + +- (void)setupContainerView { + UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kUIViewConstraintsTestCaseContainerViewWidth, kUIViewConstraintsTestCaseContainerViewHeight)]; + containerView.backgroundColor = [UIColor orangeColor]; + UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; + [rootViewController.view addSubview:containerView]; + self.containerView = containerView; +} + +- (void)setupContentView { + UIView *contentView = [[UIView alloc] init]; + contentView.backgroundColor = [UIColor blueColor]; + contentView.translatesAutoresizingMaskIntoConstraints = NO; + [self.containerView addSubview:contentView]; + self.contentView = contentView; +} + +- (void)tearDown { + [super tearDown]; + [self.containerView removeFromSuperview]; +} + +- (void)testConstrainWithSize { + CGSize contentViewSize = CGSizeMake(300, 250); + [self.contentView constrainWithSize:contentViewSize]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.size.width, contentViewSize.width); + XCTAssertEqual(self.contentView.frame.size.height, contentViewSize.height); + + contentViewSize = CGSizeMake(200, 400); + [self.contentView constrainWithSize:contentViewSize]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.size.width, contentViewSize.width); + XCTAssertEqual(self.contentView.frame.size.height, contentViewSize.height); + + contentViewSize = CGSizeMake(100, 600); + [self.contentView constrainWithSize:contentViewSize]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.size.width, contentViewSize.width); + XCTAssertEqual(self.contentView.frame.size.height, contentViewSize.height); +} + +- (void)testConstrainWithFrameSize { + CGSize contentViewSize = CGSizeMake(300, 400); + [self.contentView setFrame:CGRectMake(self.contentView.frame.origin.x, self.contentView.frame.origin.y, contentViewSize.width, contentViewSize.height)]; + [self.contentView constrainWithFrameSize]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.size.width, contentViewSize.width); + XCTAssertEqual(self.contentView.frame.size.height, contentViewSize.height); + + contentViewSize = CGSizeMake(500, 300); + [self.contentView setFrame:CGRectMake(self.contentView.frame.origin.x, self.contentView.frame.origin.y, contentViewSize.width, contentViewSize.height)]; + [self.contentView constrainWithFrameSize]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.size.width, contentViewSize.width); + XCTAssertEqual(self.contentView.frame.size.height, contentViewSize.height); +} + +- (void)testConstrainToSizeOfSuperview { + [self.contentView constrainToSizeOfSuperview]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.size.width, self.containerView.frame.size.width); + XCTAssertEqual(self.contentView.frame.size.height, self.containerView.frame.size.height); + + CGSize sizeToScaleContainerView = CGSizeMake(kUIViewConstraintsTestCaseContainerViewWidth * 2, kUIViewConstraintsTestCaseContainerViewHeight * 2); + self.containerView.translatesAutoresizingMaskIntoConstraints = NO; + [self.containerView constrainWithSize:sizeToScaleContainerView]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + // Content view should automatically scale + XCTAssertEqual(self.contentView.frame.size.width, self.containerView.frame.size.width); + XCTAssertEqual(self.contentView.frame.size.height, self.containerView.frame.size.height); +} + +- (void)testAlignToSuperviewNoOffset { + CGSize contentViewSize = CGSizeMake(300, 250); + [self.contentView constrainWithSize:contentViewSize]; + [self.contentView alignToSuperviewWithXAttribute:NSLayoutAttributeCenterX + yAttribute:NSLayoutAttributeCenterY]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.center.x, kUIViewConstraintsTestCaseContainerViewWidth / 2); + XCTAssertEqual(self.contentView.center.y, kUIViewConstraintsTestCaseContainerViewHeight / 2); + + [self.contentView alignToSuperviewWithXAttribute:NSLayoutAttributeLeft + yAttribute:NSLayoutAttributeTop]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.origin.x, 0); + XCTAssertEqual(self.contentView.frame.origin.y, 0); + + [self.contentView alignToSuperviewWithXAttribute:NSLayoutAttributeRight + yAttribute:NSLayoutAttributeTop]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.origin.x, kUIViewConstraintsTestCaseContainerViewWidth - contentViewSize.width); + XCTAssertEqual(self.contentView.frame.origin.y, 0); + + [self.contentView alignToSuperviewWithXAttribute:NSLayoutAttributeLeft + yAttribute:NSLayoutAttributeBottom]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.frame.origin.x, 0); + XCTAssertEqual(self.contentView.frame.origin.y, kUIViewConstraintsTestCaseContainerViewHeight - contentViewSize.height); + + [self.contentView alignToSuperviewWithXAttribute:NSLayoutAttributeCenterX + yAttribute:NSLayoutAttributeBottom]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.center.x, kUIViewConstraintsTestCaseContainerViewWidth / 2); + XCTAssertEqual(self.contentView.frame.origin.y, kUIViewConstraintsTestCaseContainerViewHeight - contentViewSize.height); + + // Scale container view, content view should realign automatically as well. + CGSize sizeToScaleContainerView = CGSizeMake(kUIViewConstraintsTestCaseContainerViewWidth * 2, kUIViewConstraintsTestCaseContainerViewHeight * 2); + self.containerView.translatesAutoresizingMaskIntoConstraints = NO; + [self.containerView constrainWithSize:sizeToScaleContainerView]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + // Content view still aligned "bottom-center" + XCTAssertEqual(self.contentView.center.x, sizeToScaleContainerView.width / 2); + XCTAssertEqual(self.contentView.frame.origin.y, sizeToScaleContainerView.height - contentViewSize.height); + + [self.contentView alignToSuperviewWithXAttribute:NSLayoutAttributeCenterX + yAttribute:NSLayoutAttributeCenterY]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.center.x, sizeToScaleContainerView.width / 2); + XCTAssertEqual(self.contentView.center.y, sizeToScaleContainerView.height / 2); +} + +- (void)testAlignToSuperviewWithOffset { + CGSize contentViewSize = CGSizeMake(300, 250); + [self.contentView constrainWithSize:contentViewSize]; + CGPoint offset = CGPointMake(-10, -10); + [self.contentView alignToSuperviewWithXAttribute:NSLayoutAttributeCenterX + yAttribute:NSLayoutAttributeCenterY + offsetX:offset.x + offsetY:offset.y]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + XCTAssertEqual(self.contentView.center.x, (kUIViewConstraintsTestCaseContainerViewWidth / 2) + offset.x); + XCTAssertEqual(self.contentView.center.y, (kUIViewConstraintsTestCaseContainerViewHeight / 2) + offset.y); + + CGSize sizeToScaleContainerView = CGSizeMake(kUIViewConstraintsTestCaseContainerViewWidth * 2, kUIViewConstraintsTestCaseContainerViewHeight * 2); + self.containerView.translatesAutoresizingMaskIntoConstraints = NO; + [self.containerView constrainWithSize:sizeToScaleContainerView]; + [XCTestCase delayForTimeInterval:kUIViewConstraintsTestCaseFrameRefreshDelay]; + // Content view still aligned "center" + XCTAssertEqual(self.contentView.center.x, (sizeToScaleContainerView.width / 2) + offset.x); + XCTAssertEqual(self.contentView.center.y, (sizeToScaleContainerView.height / 2) + offset.y); + +} + +@end + diff --git a/tests/Classes/ANDemoAdsViewController.h b/tests/OldSDKApp/ANDemoAdsViewController.h similarity index 100% rename from tests/Classes/ANDemoAdsViewController.h rename to tests/OldSDKApp/ANDemoAdsViewController.h diff --git a/tests/Classes/ANDemoAdsViewController.m b/tests/OldSDKApp/ANDemoAdsViewController.m similarity index 100% rename from tests/Classes/ANDemoAdsViewController.m rename to tests/OldSDKApp/ANDemoAdsViewController.m diff --git a/tests/OldSDKApp/ANDemoAdsViewController.xib b/tests/OldSDKApp/ANDemoAdsViewController.xib new file mode 100644 index 000000000..920d3f931 --- /dev/null +++ b/tests/OldSDKApp/ANDemoAdsViewController.xib @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/Classes/ANDemoConsoleViewController.h b/tests/OldSDKApp/ANDemoConsoleViewController.h similarity index 100% rename from tests/Classes/ANDemoConsoleViewController.h rename to tests/OldSDKApp/ANDemoConsoleViewController.h diff --git a/tests/Classes/ANDemoConsoleViewController.m b/tests/OldSDKApp/ANDemoConsoleViewController.m similarity index 100% rename from tests/Classes/ANDemoConsoleViewController.m rename to tests/OldSDKApp/ANDemoConsoleViewController.m diff --git a/tests/OldSDKApp/ANDemoConsoleViewController.xib b/tests/OldSDKApp/ANDemoConsoleViewController.xib new file mode 100644 index 000000000..382c6bbe8 --- /dev/null +++ b/tests/OldSDKApp/ANDemoConsoleViewController.xib @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/OldSDKApp/MainWindow-iPad.xib b/tests/OldSDKApp/MainWindow-iPad.xib new file mode 100644 index 000000000..06b8c673e --- /dev/null +++ b/tests/OldSDKApp/MainWindow-iPad.xib @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/MainWindow.xib b/tests/OldSDKApp/MainWindow.xib similarity index 100% rename from tests/MainWindow.xib rename to tests/OldSDKApp/MainWindow.xib diff --git a/tests/Classes/RootViewController.h b/tests/OldSDKApp/RootViewController.h similarity index 100% rename from tests/Classes/RootViewController.h rename to tests/OldSDKApp/RootViewController.h diff --git a/tests/Classes/RootViewController.m b/tests/OldSDKApp/RootViewController.m similarity index 100% rename from tests/Classes/RootViewController.m rename to tests/OldSDKApp/RootViewController.m diff --git a/tests/OldSDKApp/RootViewController.xib b/tests/OldSDKApp/RootViewController.xib new file mode 100644 index 000000000..3365522aa --- /dev/null +++ b/tests/OldSDKApp/RootViewController.xib @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/Classes/AppDelegate.h b/tests/OriginalUnitTestApp/AppDelegate.h similarity index 79% rename from tests/Classes/AppDelegate.h rename to tests/OriginalUnitTestApp/AppDelegate.h index 542ffb9c9..b44f5202f 100644 --- a/tests/Classes/AppDelegate.h +++ b/tests/OriginalUnitTestApp/AppDelegate.h @@ -15,12 +15,8 @@ #import -@interface AppDelegate : NSObject { - UIWindow *__window; +@interface AppDelegate : UIResponder -} - -@property (nonatomic, strong) IBOutlet UIWindow *window; - -@end +@property (strong, nonatomic) UIWindow *window; +@end \ No newline at end of file diff --git a/tests/Classes/AppDelegate.m b/tests/OriginalUnitTestApp/AppDelegate.m similarity index 74% rename from tests/Classes/AppDelegate.m rename to tests/OriginalUnitTestApp/AppDelegate.m index 28f927f2a..10ad734aa 100644 --- a/tests/Classes/AppDelegate.m +++ b/tests/OriginalUnitTestApp/AppDelegate.m @@ -14,23 +14,15 @@ */ #import "AppDelegate.h" -#import "RootViewController.h" @interface AppDelegate () -@property (nonatomic, readwrite, strong) RootViewController *rootViewController; + @end @implementation AppDelegate -@synthesize window = __window; - -- (void)applicationDidFinishLaunching:(UIApplication *)application -{ - self.window.rootViewController = [RootViewController new]; -} - - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { return UIInterfaceOrientationMaskAll; } -@end +@end \ No newline at end of file diff --git a/tests/OriginalUnitTestApp/Images.xcassets/AppIcon.appiconset/Contents.json b/tests/OriginalUnitTestApp/Images.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..298e38f38 --- /dev/null +++ b/tests/OriginalUnitTestApp/Images.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,108 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "57x57", + "scale" : "1x" + }, + { + "idiom" : "iphone", + "size" : "57x57", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "50x50", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "50x50", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "72x72", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "72x72", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "car", + "size" : "120x120", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tests/OriginalUnitTestApp/Images.xcassets/LaunchImage.launchimage/Contents.json b/tests/OriginalUnitTestApp/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 000000000..fadb8232c --- /dev/null +++ b/tests/OriginalUnitTestApp/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "scale" : "2x" + }, + { + "orientation" : "portrait", + "idiom" : "iphone", + "extent" : "full-screen", + "minimum-system-version" : "7.0", + "subtype" : "retina4", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tests/Tests-Info.plist b/tests/OriginalUnitTestApp/Tests-Info.plist similarity index 91% rename from tests/Tests-Info.plist rename to tests/OriginalUnitTestApp/Tests-Info.plist index 3947489e2..2a50458e1 100644 --- a/tests/Tests-Info.plist +++ b/tests/OriginalUnitTestApp/Tests-Info.plist @@ -24,10 +24,10 @@ 1.0 LSRequiresIPhoneOS - NSMainNibFile - MainWindow - NSMainNibFile~ipad - MainWindow-iPad + UIMainStoryboardFile + TestsStoryboard + UIMainStoryboardFile~ipad + TestsStoryboard UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git a/tests/OriginalUnitTestApp/TestsStoryboard.storyboard b/tests/OriginalUnitTestApp/TestsStoryboard.storyboard new file mode 100644 index 000000000..e55092b23 --- /dev/null +++ b/tests/OriginalUnitTestApp/TestsStoryboard.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/Tests_Prefix.pch b/tests/OriginalUnitTestApp/Tests_Prefix.pch similarity index 100% rename from tests/Tests_Prefix.pch rename to tests/OriginalUnitTestApp/Tests_Prefix.pch diff --git a/tests/OriginalUnitTestApp/ViewController.h b/tests/OriginalUnitTestApp/ViewController.h new file mode 100644 index 000000000..a0a828f02 --- /dev/null +++ b/tests/OriginalUnitTestApp/ViewController.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface ViewController : UIViewController + +@end diff --git a/tests/OriginalUnitTestApp/ViewController.m b/tests/OriginalUnitTestApp/ViewController.m new file mode 100644 index 000000000..08eaed8b0 --- /dev/null +++ b/tests/OriginalUnitTestApp/ViewController.m @@ -0,0 +1,45 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self hideStatusBar]; +} + +- (void)hideStatusBar { + if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)]) { + [self setNeedsStatusBarAppearanceUpdate]; + } else { + [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; + } +} + +- (BOOL)prefersStatusBarHidden { + return YES; +} + +- (NSUInteger)supportedInterfaceOrientations { + return UIInterfaceOrientationMaskAll; +} + +@end \ No newline at end of file diff --git a/tests/main.m b/tests/OriginalUnitTestApp/main.m similarity index 76% rename from tests/main.m rename to tests/OriginalUnitTestApp/main.m index 22d5def4c..055509b4f 100644 --- a/tests/main.m +++ b/tests/OriginalUnitTestApp/main.m @@ -1,4 +1,4 @@ -/* Copyright 2013 APPNEXUS INC +/* Copyright 2014 APPNEXUS INC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,11 +14,10 @@ */ #import +#import "AppDelegate.h" -int main(int argc, char *argv[]) { - +int main(int argc, char * argv[]) { @autoreleasepool { - int retVal = UIApplicationMain(argc, argv, nil, nil); - return retVal; + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } diff --git a/tests/TestClasses/BasicTests.m b/tests/OriginalUnitTestAppTests/BasicTests.m similarity index 82% rename from tests/TestClasses/BasicTests.m rename to tests/OriginalUnitTestAppTests/BasicTests.m index 6a3ba1d69..7ba755afd 100644 --- a/tests/TestClasses/BasicTests.m +++ b/tests/OriginalUnitTestAppTests/BasicTests.m @@ -26,13 +26,6 @@ - (void)clearTest { [super clearTest]; } -+ (void)stubWithBody:(NSString *)body { - stubRequest(@"GET", @"http://*".regex) - .andReturn(200) - .withBody(body) - ; -} - - (BOOL)waitForDidPresentCalled { NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:BASIC_TIMEOUT]; @@ -47,29 +40,29 @@ - (BOOL)waitForDidPresentCalled { } - (void)checkAdDidLoad { - STAssertTrue(self.adDidLoadCalled, @"Success callback should be called"); - STAssertFalse(self.adFailedToLoadCalled, @"Failure callback should not be called"); + XCTAssertTrue(self.adDidLoadCalled, @"Success callback should be called"); + XCTAssertFalse(self.adFailedToLoadCalled, @"Failure callback should not be called"); } - (void)checkAdFailedToLoad { - STAssertFalse(self.adDidLoadCalled, @"Success callback should not be called"); - STAssertTrue(self.adFailedToLoadCalled, @"Failure callback should be called"); + XCTAssertFalse(self.adDidLoadCalled, @"Success callback should not be called"); + XCTAssertTrue(self.adFailedToLoadCalled, @"Failure callback should be called"); } - (void)checkInterstitialDisplayed:(BOOL)displayed { - STAssertEquals((BOOL)!displayed, self.adFailedToDisplayCalled, + XCTAssertEqual((BOOL)!displayed, self.adFailedToDisplayCalled, @"Interstitial callback adFailedToDisplay should be %d", (BOOL)!displayed); - STAssertEquals(displayed, self.adWillPresentCalled, + XCTAssertEqual(displayed, self.adWillPresentCalled, @"Interstitial callback adWillPresent should be %d", displayed); if (displayed) { [self waitForDidPresentCalled]; } - STAssertEquals(displayed, self.adDidPresentCalled, + XCTAssertEqual(displayed, self.adDidPresentCalled, @"Interstitial callback adDidPresent should be %d", displayed); } - (void)waitForLoad { - STAssertTrue([self waitForCompletion:BASIC_TIMEOUT], @"Test timed out"); + XCTAssertTrue([self waitForCompletion:BASIC_TIMEOUT], @"Test timed out"); } #pragma mark Standard Tests diff --git a/tests/TestClasses/MRAIDTests.m b/tests/OriginalUnitTestAppTests/MRAIDTests.m similarity index 75% rename from tests/TestClasses/MRAIDTests.m rename to tests/OriginalUnitTestAppTests/MRAIDTests.m index 6da08bfcc..5420f9745 100644 --- a/tests/TestClasses/MRAIDTests.m +++ b/tests/OriginalUnitTestAppTests/MRAIDTests.m @@ -18,6 +18,7 @@ #import "ANMRAIDTestResponses.h" #import "ANLogging.h" #import "ANLogManager.h" +#import "ANGlobal.h" #define MRAID_TESTS_TIMEOUT 10.0 #define MRAID_TESTS_DEFAULT_DELAY 1.5 @@ -44,13 +45,13 @@ - (void)testSuccessfulBannerDidLoad { - (void)testBasicViewability { // MS-453 [self loadBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; - STAssertFalse([[self isViewable] boolValue], @"Expected ANWebView not to be visible"); + XCTAssertFalse([[self isViewable] boolValue], @"Expected ANWebView not to be visible"); [self addBannerAsSubview]; - STAssertTrue([[self isViewable] boolValue], @"Expected ANWebView to be visible"); + XCTAssertTrue([[self isViewable] boolValue], @"Expected ANWebView to be visible"); [self removeBannerFromSuperview]; - STAssertFalse([[self isViewable] boolValue], @"Expected ANWebView not to be visible"); + XCTAssertFalse([[self isViewable] boolValue], @"Expected ANWebView not to be visible"); [self clearTest]; } @@ -62,10 +63,10 @@ - (void)testForceOrientationLandscapeFromPortrait { // MS-481 [self setOrientationPropertiesWithAllowOrientationChange:NO forceOrientation:@"landscape"]; [self expand]; - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft, @"Expected landscape left orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft, @"Expected landscape left orientation"); [self close]; - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait, @"Expected portrait orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait, @"Expected portrait orientation"); [self clearTest]; } @@ -75,10 +76,10 @@ - (void)testForceOrientationPortraitFromLandscape { // MS-481 [self addBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; [self setOrientationPropertiesWithAllowOrientationChange:NO forceOrientation:@"portrait"]; [self expand]; - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait, @"Expected portrait orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait, @"Expected portrait orientation"); [self close]; - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight, @"Expected landscape right orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight, @"Expected landscape right orientation"); [self clearTest]; } @@ -88,10 +89,10 @@ - (void)testForceOrientationLandscapeFromLandscapeRight { // MS-481 [self addBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; [self setOrientationPropertiesWithAllowOrientationChange:NO forceOrientation:@"landscape"]; [self expand]; - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight, @"Expected landscape right orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight, @"Expected landscape right orientation"); [self close]; - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight, @"Expected landscape right orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight, @"Expected landscape right orientation"); [self clearTest]; } @@ -102,11 +103,11 @@ - (void)testExpandFromPortraitUpsideDown { // MS-510 [self rotateDeviceToOrientation:UIInterfaceOrientationPortraitUpsideDown]; [self addBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; [self expand]; - STAssertFalse([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait, @"Did not expect portrait right side up orientation"); - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown, @"Expected portrait upside down orientation"); + XCTAssertFalse([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait, @"Did not expect portrait right side up orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown, @"Expected portrait upside down orientation"); [self close]; - STAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown, @"Expected portrait upside down orientation"); + XCTAssertTrue([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown, @"Expected portrait upside down orientation"); [self clearTest]; } @@ -118,10 +119,10 @@ - (void)testScreenSizePortraitOnLoad { CGPoint screenSize = [self getScreenSize]; CGFloat width = screenSize.x; CGFloat height = screenSize.y; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGFloat expectedWidth = screenBounds.size.width; CGFloat expectedHeight = screenBounds.size.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected portrait screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -131,10 +132,10 @@ - (void)testScreenSizeLandscapeOnLoad { CGPoint screenSize = [self getScreenSize]; CGFloat width = screenSize.x; CGFloat height = screenSize.y; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGFloat expectedWidth = screenBounds.size.height; CGFloat expectedHeight = screenBounds.size.width; - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected landscape screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -144,10 +145,10 @@ - (void)testScreenSizeLandscapeOnRotate { CGPoint screenSize = [self getScreenSize]; CGFloat width = screenSize.x; CGFloat height = screenSize.y; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGFloat expectedWidth = screenBounds.size.height; CGFloat expectedHeight = screenBounds.size.width; - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected landscape screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height); [self rotateDeviceToOrientation:UIInterfaceOrientationPortrait]; screenSize = [self getScreenSize]; @@ -155,7 +156,7 @@ - (void)testScreenSizeLandscapeOnRotate { height = screenSize.y; expectedWidth = screenBounds.size.width; expectedHeight = screenBounds.size.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected portrait screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait screen bounds %f x %f, received screen bounds %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -167,14 +168,14 @@ - (void)testMaxSizePortraitOnLoad { CGPoint maxSize = [self getMaxSize]; CGFloat width = maxSize.x; CGFloat height = maxSize.y; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGFloat expectedWidth = screenBounds.size.width; CGFloat expectedHeight = screenBounds.size.height; if (![UIApplication sharedApplication].statusBarHidden) { expectedHeight -= [UIApplication sharedApplication].statusBarFrame.size.height; } - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected portrait max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -186,34 +187,34 @@ - (void)testMaxSizeLandscapeOnLoad { CGPoint maxSize = [self getMaxSize]; CGFloat width = maxSize.x; CGFloat height = maxSize.y; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGFloat expectedWidth = screenBounds.size.height; CGFloat expectedHeight = screenBounds.size.width; if (![UIApplication sharedApplication].statusBarHidden) { expectedHeight -= [UIApplication sharedApplication].statusBarFrame.size.width; } - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected landscape max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } - (void)testMaxSizeLandscapeOnRotate { [self addBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; - STAssertTrue(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation), @"Expected to start in portrait orientation"); + XCTAssertTrue(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation), @"Expected to start in portrait orientation"); [self rotateDeviceToOrientation:UIInterfaceOrientationLandscapeRight]; CGPoint maxSize = [self getMaxSize]; CGFloat width = maxSize.x; CGFloat height = maxSize.y; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGFloat expectedWidth = screenBounds.size.height; CGFloat expectedHeight = screenBounds.size.width; if (![UIApplication sharedApplication].statusBarHidden) { expectedHeight -= [UIApplication sharedApplication].statusBarFrame.size.width; } - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected landscape max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self rotateDeviceToOrientation:UIInterfaceOrientationPortraitUpsideDown]; maxSize = [self getMaxSize]; @@ -224,7 +225,7 @@ - (void)testMaxSizeLandscapeOnRotate { if (![UIApplication sharedApplication].statusBarHidden) { expectedHeight -= [UIApplication sharedApplication].statusBarFrame.size.height; } - STAssertTrue(expectedWidth == width && expectedHeight == height, [NSString stringWithFormat:@"Expected portrait max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height]); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait max size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -239,7 +240,7 @@ - (void)testCurrentPositionPortraitSizeOnLoad { CGFloat expectedWidth = self.banner.adSize.width; CGFloat expectedHeight = self.banner.adSize.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -253,7 +254,7 @@ - (void)testCurrentPositionLandscapeSizeOnLoad { CGFloat expectedWidth = self.banner.adSize.width; CGFloat expectedHeight = self.banner.adSize.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -265,11 +266,11 @@ - (void)testCurrentPositionPortraitSizeOnExpand { CGFloat width = currentPosition.size.width; CGFloat height = currentPosition.size.height; - CGRect screenBounds = [[UIScreen mainScreen] bounds]; + CGRect screenBounds = ANPortraitScreenBounds(); CGFloat expectedWidth = screenBounds.size.width; CGFloat expectedHeight = screenBounds.size.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self close]; [self clearTest]; @@ -283,7 +284,7 @@ - (void)testCurrentPositionPortraitOriginOnLoad { CGFloat originX = currentPosition.origin.x; CGFloat originY = currentPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self clearTest]; } @@ -298,7 +299,7 @@ - (void)testCurrentPositionPortraitOriginOnExpand { CGFloat originX = currentPosition.origin.x; CGFloat originY = currentPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self close]; [self clearTest]; @@ -319,7 +320,7 @@ - (void)testCurrentPositionPortraitOriginOnResize { CGFloat originX = currentPosition.origin.x; CGFloat originY = currentPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self close]; [self clearTest]; @@ -343,7 +344,7 @@ - (void)testCurrentPositionPortraitOriginOnResizeWithCustomOffset { CGFloat originX = currentPosition.origin.x; CGFloat originY = currentPosition.origin.y; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); [self close]; @@ -353,7 +354,7 @@ - (void)testCurrentPositionPortraitOriginOnResizeWithCustomOffset { expectedX = initialOriginX; expectedY = initialOriginY; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); [self clearTest]; } @@ -376,7 +377,7 @@ - (void)testCurrentPositionPortraitOriginOnResizeWithCustomOffsetAndSetFrameCall CGFloat originX = currentPosition.origin.x; CGFloat originY = currentPosition.origin.y; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); [self moveBannerSubviewToOrigin:CGPointMake(150.0f, 60.0f)]; @@ -388,7 +389,7 @@ - (void)testCurrentPositionPortraitOriginOnResizeWithCustomOffsetAndSetFrameCall originX = currentPosition.origin.x; originY = currentPosition.origin.y; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); [self close]; @@ -400,7 +401,7 @@ - (void)testCurrentPositionPortraitOriginOnResizeWithCustomOffsetAndSetFrameCall originX = currentPosition.origin.x; originY = currentPosition.origin.y; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); [self clearTest]; } @@ -416,7 +417,7 @@ - (void)testDefaultPositionPortraitSizeOnLoad { CGFloat expectedWidth = self.banner.adSize.width; CGFloat expectedHeight = self.banner.adSize.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -431,7 +432,7 @@ - (void)testDefaultPositionLandscapeSizeOnLoad { CGFloat expectedWidth = self.banner.adSize.width; CGFloat expectedHeight = self.banner.adSize.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected landscape size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self clearTest]; } @@ -444,7 +445,7 @@ - (void)testDefaultPositionPortraitOriginOnLoad { CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self clearTest]; } @@ -458,7 +459,7 @@ - (void)testDefaultPositionPortraitOriginOnMove { CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected portrait origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected portrait origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self close]; [self clearTest]; @@ -474,7 +475,7 @@ - (void)testDefaultPositionPortraitSizeOnExpand { CGFloat expectedWidth = self.banner.adSize.width; CGFloat expectedHeight = self.banner.adSize.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self close]; [self clearTest]; @@ -491,7 +492,7 @@ - (void)testDefaultPositionLandscapeSizeOnExpand { CGFloat expectedWidth = self.banner.adSize.width; CGFloat expectedHeight = self.banner.adSize.height; - STAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); + XCTAssertTrue(expectedWidth == width && expectedHeight == height, @"Expected portrait size %f x %f, received %f x %f", expectedWidth, expectedHeight, width, height); [self close]; [self clearTest]; @@ -507,7 +508,7 @@ - (void)testDefaultPositionPortraitOriginOnExpand { CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected portrait origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected portrait origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self close]; [self clearTest]; @@ -525,7 +526,7 @@ - (void)testDefaultPositionPortraitOriginOnRotateAndExpand { CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected landscape origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected landscape origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self close]; [self clearTest]; @@ -548,8 +549,8 @@ - (void)testDefaultPositionPortraitOnResizeMoveAndRotate { CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected portrait origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); - STAssertFalse(originalOriginX == originX && originalOriginY == originY, @"Expected default position to be modified postion", originalOriginX, originalOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected portrait origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertFalse(originalOriginX == originX && originalOriginY == originY, @"Expected default position to be modified postion"); [self close]; [self clearTest]; @@ -573,7 +574,7 @@ - (void)testDefaultPositionPortraitOriginOnResizeWithCustomOffsetAndSetFrameCall CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); expectedX = 150.0f; expectedY = 60.0f; @@ -584,7 +585,7 @@ - (void)testDefaultPositionPortraitOriginOnResizeWithCustomOffsetAndSetFrameCall originX = defaultPosition.origin.x; originY = defaultPosition.origin.y; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); [self close]; @@ -592,7 +593,7 @@ - (void)testDefaultPositionPortraitOriginOnResizeWithCustomOffsetAndSetFrameCall originX = defaultPosition.origin.x; originY = defaultPosition.origin.y; - STAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); + XCTAssertTrue(expectedX == originX && expectedY == originY, @"Expected origin %f x %f, received %f x %f", expectedX, expectedY, originX, originY); [self clearTest]; } @@ -613,7 +614,7 @@ - (void)testDefaultPositionPortraitOriginResizeHuggingBottomOfScreen { CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self close]; [self clearTest]; @@ -641,7 +642,7 @@ - (void)testDefaultPositionPortraitOriginResizeHuggingBottomOfScreenOnRotate { CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); + XCTAssertTrue(expectedOriginX == originX && expectedOriginY == originY, @"Expected origin %f x %f, received %f x %f", expectedOriginX, expectedOriginY, originX, originY); [self close]; [self clearTest]; @@ -661,7 +662,7 @@ - (void)testDefaultPositionMultipleResize { CGRect defaultPosition = [self getDefaultPosition]; CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); + XCTAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); resizeOffset = CGPointMake(0.0f, -50.0f); @@ -674,7 +675,7 @@ - (void)testDefaultPositionMultipleResize { defaultPosition = [self getDefaultPosition]; originX = defaultPosition.origin.x; originY = defaultPosition.origin.y; - STAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); + XCTAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); [self close]; [self clearTest]; @@ -694,7 +695,7 @@ - (void)testDefaultPositionMultipleResizeAndExpand { CGRect defaultPosition = [self getDefaultPosition]; CGFloat originX = defaultPosition.origin.x; CGFloat originY = defaultPosition.origin.y; - STAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); + XCTAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); resizeOffset = CGPointMake(0.0f, -50.0f); @@ -707,14 +708,14 @@ - (void)testDefaultPositionMultipleResizeAndExpand { defaultPosition = [self getDefaultPosition]; originX = defaultPosition.origin.x; originY = defaultPosition.origin.y; - STAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); + XCTAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); [self expand]; defaultPosition = [self getDefaultPosition]; originX = defaultPosition.origin.x; originY = defaultPosition.origin.y; - STAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); + XCTAssertTrue(initialOriginX == originX && initialOriginY == originY, @"Expected origin %f x %f, received %f x %f", initialOriginX, initialOriginY, originX, originY); [self close]; [self clearTest]; @@ -810,19 +811,19 @@ - (void)testBasicSetResizeProperties { // MS-525 NSString *height = [self getResizePropertiesHeight]; NSString *offsetX = [self getResizePropertiesOffsetX]; NSString *offsetY = [self getResizePropertiesOffsetY]; - STAssertTrue([width length] > 0, @"Expected width to be defined"); - STAssertTrue([height length] > 0, @"Expected height to be defined"); - STAssertTrue([offsetX length] > 0, @"Expected offsetX to be defined"); - STAssertTrue([offsetY length] > 0, @"Expected offsetY to be defined"); - STAssertTrue([width isEqualToString:([NSString stringWithFormat:@"%d", (int)resizeWidth])], @"Expected different width"); - STAssertTrue([height isEqualToString:([NSString stringWithFormat:@"%d", (int)resizeHeight])], @"Expected different height"); - STAssertTrue([offsetX isEqualToString:@"0"], @"Expected offsetX to be 0"); - STAssertTrue([offsetY isEqualToString:@"0"], @"Expected offsetY to be 0"); + XCTAssertTrue([width length] > 0, @"Expected width to be defined"); + XCTAssertTrue([height length] > 0, @"Expected height to be defined"); + XCTAssertTrue([offsetX length] > 0, @"Expected offsetX to be defined"); + XCTAssertTrue([offsetY length] > 0, @"Expected offsetY to be defined"); + XCTAssertTrue([width isEqualToString:([NSString stringWithFormat:@"%d", (int)resizeWidth])], @"Expected different width"); + XCTAssertTrue([height isEqualToString:([NSString stringWithFormat:@"%d", (int)resizeHeight])], @"Expected different height"); + XCTAssertTrue([offsetX isEqualToString:@"0"], @"Expected offsetX to be 0"); + XCTAssertTrue([offsetY isEqualToString:@"0"], @"Expected offsetY to be 0"); [self resize]; [self assertState:@"resized"]; - STAssertTrue(self.banner.frame.size.width == resizeWidth, @"Expected new width of banner frame to be resized width"); - STAssertTrue(self.banner.frame.size.height == resizeHeight, @"Expected new height of banner frame to be resized height"); + XCTAssertTrue(self.banner.frame.size.width == resizeWidth, @"Expected new width of banner frame to be resized width"); + XCTAssertTrue(self.banner.frame.size.height == resizeHeight, @"Expected new height of banner frame to be resized height"); [self clearTest]; } @@ -831,7 +832,7 @@ - (void)testSetResizePropertiesOnlySizeAndOffset { // MS-525 CGFloat resizeHeight = 200.0f; [self setResizePropertiesResizeToSize:CGSizeMake(320.0f, resizeHeight) withOffset:CGPointZero]; [self resize]; - STAssertTrue(self.banner.frame.size.height == resizeHeight , @"Expected new height of banner frame to be resized height"); + XCTAssertTrue(self.banner.frame.size.height == resizeHeight , @"Expected new height of banner frame to be resized height"); [self clearTest]; } @@ -841,8 +842,8 @@ - (void)testGetCustomCloseAndAllowOffscreenAfterSettingSizeAndOffset { // MS-525 [self setResizePropertiesResizeToSize:CGSizeMake(320.0f, resizeHeight) withOffset:CGPointZero]; NSString *customClosePosition = [self getResizePropertiesCustomClosePosition]; NSString *allowOffscreen = [self getResizePropertiesAllowOffscreen]; - STAssertTrue([customClosePosition length] > 0, @"Expected custom close position to be defined"); - STAssertTrue([allowOffscreen length] > 0, @"Expected allow offscreen to be defined"); + XCTAssertTrue([customClosePosition length] > 0, @"Expected custom close position to be defined"); + XCTAssertTrue([allowOffscreen length] > 0, @"Expected allow offscreen to be defined"); [self clearTest]; } @@ -852,24 +853,24 @@ - (void)testSetResizePropertiesMultipleTimes { // MS-525 [self setResizePropertiesResizeToSize:size1 withOffset:CGPointMake(-50.0f, 240.0f) withCustomClosePosition:@"top-left" allowOffscreen:NO]; NSString *customClosePosition = [self getResizePropertiesCustomClosePosition]; NSString *allowOffscreen = [self getResizePropertiesAllowOffscreen]; - STAssertTrue([customClosePosition isEqualToString:@"top-left"], @"Expected close position to be top left"); - STAssertTrue([allowOffscreen isEqualToString:@"false"], @"Expected allow offscreen to be false"); + XCTAssertTrue([customClosePosition isEqualToString:@"top-left"], @"Expected close position to be top left"); + XCTAssertTrue([allowOffscreen isEqualToString:@"false"], @"Expected allow offscreen to be false"); CGSize size2 = CGSizeMake(500.0f, 300.0f); [self setResizePropertiesResizeToSize:size2 withOffset:CGPointMake(100.0f, 270.0f)]; NSString *width = [self getResizePropertiesWidth]; NSString *height = [self getResizePropertiesHeight]; - STAssertTrue([width length] > 0, @"Expected width to be defined"); - STAssertTrue([height length] > 0, @"Expected height to be defined"); - STAssertTrue([width isEqualToString:@"500"], @"Expected different width"); - STAssertTrue([height isEqualToString:@"300"], @"Expected different height"); + XCTAssertTrue([width length] > 0, @"Expected width to be defined"); + XCTAssertTrue([height length] > 0, @"Expected height to be defined"); + XCTAssertTrue([width isEqualToString:@"500"], @"Expected different width"); + XCTAssertTrue([height isEqualToString:@"300"], @"Expected different height"); NSString *offsetX = [self getResizePropertiesOffsetX]; NSString *offsetY = [self getResizePropertiesOffsetY]; - STAssertTrue([offsetX isEqualToString:@"100"], @"Expected offsetX to be 100"); - STAssertTrue([offsetY isEqualToString:@"270"], @"Expected offsetY to be 270"); + XCTAssertTrue([offsetX isEqualToString:@"100"], @"Expected offsetX to be 100"); + XCTAssertTrue([offsetY isEqualToString:@"270"], @"Expected offsetY to be 270"); customClosePosition = [self getResizePropertiesCustomClosePosition]; allowOffscreen = [self getResizePropertiesAllowOffscreen]; - STAssertTrue([customClosePosition isEqualToString:@"top-right"], @"Expected close position to be top right (default)"); - STAssertTrue([allowOffscreen isEqualToString:@"true"], @"Expected allow offscreen to be true (default)"); + XCTAssertTrue([customClosePosition isEqualToString:@"top-right"], @"Expected close position to be top right (default)"); + XCTAssertTrue([allowOffscreen isEqualToString:@"true"], @"Expected allow offscreen to be true (default)"); [self clearTest]; } @@ -882,10 +883,10 @@ - (void)testResizeAfterSettingIncompleteResizeProperties { // MS-525 NSString *offsetX = [self getResizePropertiesOffsetX]; NSString *offsetY = [self getResizePropertiesOffsetY]; - STAssertFalse([offsetX length], @"Expected offsetX to be undefined"); - STAssertFalse([offsetY length], @"Expected offsetY to be undefined"); - STAssertFalse([width length], @"Expected width to be undefined"); - STAssertFalse([height length], @"Expected height to be undefined"); + XCTAssertFalse([offsetX length], @"Expected offsetX to be undefined"); + XCTAssertFalse([offsetY length], @"Expected offsetY to be undefined"); + XCTAssertFalse([width length], @"Expected width to be undefined"); + XCTAssertFalse([height length], @"Expected height to be undefined"); [self resize]; [self assertState:@"default"]; // Should not have resized @@ -899,9 +900,9 @@ - (void)testSetExpandPropertiesOnlySize { CGFloat expandHeight = 200.0f; [self setExpandPropertiesExpandToSize:CGSizeMake(320.0f, expandHeight)]; NSString *useCustomClose = [self getExpandPropertiesUseCustomClose]; - STAssertTrue([useCustomClose isEqualToString:@"false"], @"Expected useCustomClose to be false"); + XCTAssertTrue([useCustomClose isEqualToString:@"false"], @"Expected useCustomClose to be false"); [self expand]; - STAssertTrue(self.banner.frame.size.height == expandHeight , @"Expected new height of banner frame to be expanded height"); + XCTAssertTrue(self.banner.frame.size.height == expandHeight , @"Expected new height of banner frame to be expanded height"); [self close]; [self clearTest]; } @@ -911,8 +912,8 @@ - (void)testSetExpandPropertiesEmptyObject { // MS-525 [self setExpandPropertiesEmpty]; NSString *width = [self getExpandPropertiesWidth]; NSString *height = [self getExpandPropertiesHeight]; - STAssertTrue([width length] > 0, @"Expected width to be defined"); - STAssertTrue([height length] > 0, @"Expected height to be defined"); + XCTAssertTrue([width length] > 0, @"Expected width to be defined"); + XCTAssertTrue([height length] > 0, @"Expected height to be defined"); [self clearTest]; } @@ -920,9 +921,9 @@ - (void)testExpandAfterSetExpandPropertiesEmptyObject { // MS-525 [self addBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; [self setExpandPropertiesEmpty]; [self expand]; - CGSize screenSize = [[UIScreen mainScreen] bounds].size; + CGSize screenSize = ANPortraitScreenBounds().size; CGSize currentSize = [self getCurrentPosition].size; - STAssertTrue(CGSizeEqualToSize(screenSize, currentSize), @"Expected expanded size to be screen size"); + XCTAssertTrue(CGSizeEqualToSize(screenSize, currentSize), @"Expected expanded size to be screen size"); [self close]; [self clearTest]; } @@ -932,13 +933,13 @@ - (void)testGetExpandPropertiesAfterSettingSize { // MS-525 CGFloat expandHeight = 200.0f; [self setExpandPropertiesExpandToSize:CGSizeMake(320.0f, expandHeight)]; NSString *customClose = [self getExpandPropertiesUseCustomClose]; - STAssertTrue([customClose length], @"expected custom close value to not be undefined"); - STAssertTrue([customClose isEqualToString:@"false"], @"expected default value of custom close to be false"); + XCTAssertTrue([customClose length], @"expected custom close value to not be undefined"); + XCTAssertTrue([customClose isEqualToString:@"false"], @"expected default value of custom close to be false"); // isModal works because it is set on every call to setExpandProperties. NSString *isModal = [self getExpandPropertiesIsModal]; - STAssertTrue(![isModal isEqualToString:@""], @"expected isModal value to not be undefined"); - STAssertTrue([isModal isEqualToString:@"true"], @"expected default value of isModal to be true"); + XCTAssertTrue(![isModal isEqualToString:@""], @"expected isModal value to not be undefined"); + XCTAssertTrue([isModal isEqualToString:@"true"], @"expected default value of isModal to be true"); [self clearTest]; } @@ -968,20 +969,20 @@ - (void)testSetExpandPropertiesMultipleTimes { NSString *width = [self getExpandPropertiesWidth]; NSString *height = [self getExpandPropertiesHeight]; NSString *isModal = [self getExpandPropertiesIsModal]; - STAssertTrue([useCustomClose isEqualToString:@"true"], @"Expected useCustomClose to be true"); - STAssertTrue([width isEqualToString:@"320"], @"Expected width to be 320"); - STAssertTrue([height isEqualToString:@"250"], @"Expected height to be 250"); - STAssertTrue([isModal isEqualToString:@"true"], @"Expected isModal to be true"); + XCTAssertTrue([useCustomClose isEqualToString:@"true"], @"Expected useCustomClose to be true"); + XCTAssertTrue([width isEqualToString:@"320"], @"Expected width to be 320"); + XCTAssertTrue([height isEqualToString:@"250"], @"Expected height to be 250"); + XCTAssertTrue([isModal isEqualToString:@"true"], @"Expected isModal to be true"); CGSize size2 = CGSizeMake(500.0f, 300.0f); [self setExpandPropertiesExpandToSize:size2]; useCustomClose = [self getExpandPropertiesUseCustomClose]; width = [self getExpandPropertiesWidth]; height = [self getExpandPropertiesHeight]; isModal = [self getExpandPropertiesIsModal]; - STAssertTrue([useCustomClose isEqualToString:@"false"], @"Expected useCustomClose to be false"); - STAssertTrue([width isEqualToString:@"500"], @"Expected width to be 320"); - STAssertTrue([height isEqualToString:@"300"], @"Expected height to be 250"); - STAssertTrue([isModal isEqualToString:@"true"], @"Expected isModal to be true"); + XCTAssertTrue([useCustomClose isEqualToString:@"false"], @"Expected useCustomClose to be false"); + XCTAssertTrue([width isEqualToString:@"500"], @"Expected width to be 320"); + XCTAssertTrue([height isEqualToString:@"300"], @"Expected height to be 250"); + XCTAssertTrue([isModal isEqualToString:@"true"], @"Expected isModal to be true"); [self clearTest]; } @@ -989,7 +990,7 @@ - (void)testSetExpandPropertiesMultipleTimes { /*- (void)testGetExpandPropertiesInitialSize { [self addBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; CGSize initSize = [self getExpandPropertiesSize]; - CGRect actualBounds = [[UIScreen mainScreen] bounds]; + CGRect actualBounds = ANPortraitScreenBounds(); STAssertTrue(actualBounds.size.width == initSize.width && actualBounds.size.height == initSize.height, @"Expected default expand properties to reflect actual screen values"); [self clearTest]; }*/ @@ -1002,7 +1003,7 @@ - (void)testOnReadyListener { withSize:CGSizeMake(320.0f, 50.0f)]; NSString *readyDidFire = [self.webView stringByEvaluatingJavaScriptFromString:@"testReadyDidFire"]; - STAssertTrue([readyDidFire isEqualToString:@"true"], @"ready event callback not fired"); + XCTAssertTrue([readyDidFire isEqualToString:@"true"], @"ready event callback not fired"); [self clearTest]; } @@ -1016,8 +1017,8 @@ - (void)testExpandListeners { NSString *height = [self.webView stringByEvaluatingJavaScriptFromString:@"testHeight"]; NSString *state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; - STAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"50"], @"Expected width and height to be different"); - STAssertTrue([state isEqualToString:@"default"], @"state change callback not fired"); + XCTAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"50"], @"Expected width and height to be different"); + XCTAssertTrue([state isEqualToString:@"default"], @"state change callback not fired"); [self expand]; @@ -1025,8 +1026,12 @@ - (void)testExpandListeners { height = [self.webView stringByEvaluatingJavaScriptFromString:@"testHeight"]; state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; - STAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"568"], @"Expected width and height to be different"); - STAssertTrue([state isEqualToString:@"expanded"], @"state change callback not fired"); + CGRect portraitBounds = ANPortraitScreenBounds(); + NSString *expectedWidth = [NSString stringWithFormat:@"%d", (int)portraitBounds.size.width]; + NSString *expectedHeight = [NSString stringWithFormat:@"%d", (int)portraitBounds.size.height]; + + XCTAssertTrue([width isEqualToString:expectedWidth] && [height isEqualToString:expectedHeight], @"Expected width and height to be different"); + XCTAssertTrue([state isEqualToString:@"expanded"], @"state change callback not fired"); [self close]; @@ -1034,8 +1039,8 @@ - (void)testExpandListeners { height = [self.webView stringByEvaluatingJavaScriptFromString:@"testHeight"]; state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; - STAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"50"], @"Expected width and height to be different"); - STAssertTrue([state isEqualToString:@"default"], @"state change callback not fired"); + XCTAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"50"], @"Expected width and height to be different"); + XCTAssertTrue([state isEqualToString:@"default"], @"state change callback not fired"); [self clearTest]; } @@ -1049,8 +1054,8 @@ - (void)testResizeListeners { NSString *height = [self.webView stringByEvaluatingJavaScriptFromString:@"testHeight"]; NSString *state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; - STAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"50"], @"Expected width and height to be different"); - STAssertTrue([state isEqualToString:@"default"], @"state change callback not fired"); + XCTAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"50"], @"Expected width and height to be different"); + XCTAssertTrue([state isEqualToString:@"default"], @"state change callback not fired"); [self setResizePropertiesResizeToSize:CGSizeMake(400.0f, 200.0f) withOffset:CGPointZero withCustomClosePosition:@"top-left" allowOffscreen:YES]; [self resize]; @@ -1059,8 +1064,8 @@ - (void)testResizeListeners { height = [self.webView stringByEvaluatingJavaScriptFromString:@"testHeight"]; state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; - STAssertTrue([width isEqualToString:@"400"] && [height isEqualToString:@"200"], @"Expected width and height to be different"); - STAssertTrue([state isEqualToString:@"resized"], @"state change callback not fired"); + XCTAssertTrue([width isEqualToString:@"400"] && [height isEqualToString:@"200"], @"Expected width and height to be different"); + XCTAssertTrue([state isEqualToString:@"resized"], @"state change callback not fired"); [self close]; [self clearTest]; @@ -1079,8 +1084,12 @@ - (void)testResizetoExpandListeners { NSString *height = [self.webView stringByEvaluatingJavaScriptFromString:@"testHeight"]; NSString *state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; - STAssertTrue([width isEqualToString:@"320"] && [height isEqualToString:@"568"], @"Expected width and height to be different"); - STAssertTrue([state isEqualToString:@"expanded"], @"state change callback not fired"); + CGRect portraitBounds = ANPortraitScreenBounds(); + NSString *expectedWidth = [NSString stringWithFormat:@"%d", (int)portraitBounds.size.width]; + NSString *expectedHeight = [NSString stringWithFormat:@"%d", (int)portraitBounds.size.height]; + + XCTAssertTrue([width isEqualToString:expectedWidth] && [height isEqualToString:expectedHeight], @"Expected width and height to be different"); + XCTAssertTrue([state isEqualToString:@"expanded"], @"state change callback not fired"); [self close]; [self clearTest]; @@ -1092,20 +1101,20 @@ - (void)testCloseFromDefaultStateListener { withSize:CGSizeMake(320.0f, 50.0f)]; [self close]; NSString *state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; - STAssertTrue([state isEqualToString:@"hidden"], @"state change callback not fired"); + XCTAssertTrue([state isEqualToString:@"hidden"], @"state change callback not fired"); [self expand]; state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; NSString *errorAction = [self.webView stringByEvaluatingJavaScriptFromString:@"testErrorAction"]; - STAssertTrue([state isEqualToString:@"hidden"], @"state change callback fired when it should not have been"); - STAssertTrue([errorAction isEqualToString:@"mraid.expand()"], @"Expected error from mraid.expand()"); + XCTAssertTrue([state isEqualToString:@"hidden"], @"state change callback fired when it should not have been"); + XCTAssertTrue([errorAction isEqualToString:@"mraid.expand()"], @"Expected error from mraid.expand()"); [self setResizePropertiesResizeToSize:CGSizeMake(400.0f, 200.0f) withOffset:CGPointZero withCustomClosePosition:@"top-left" allowOffscreen:YES]; [self resize]; state = [self.webView stringByEvaluatingJavaScriptFromString:@"testState"]; errorAction = [self.webView stringByEvaluatingJavaScriptFromString:@"testErrorAction"]; - STAssertTrue([state isEqualToString:@"hidden"], @"state change callback fired when it should not have been"); - STAssertTrue([errorAction isEqualToString:@"mraid.resize()"], @"Expected error from mraid.resize()"); + XCTAssertTrue([state isEqualToString:@"hidden"], @"state change callback fired when it should not have been"); + XCTAssertTrue([errorAction isEqualToString:@"mraid.resize()"], @"Expected error from mraid.resize()"); [self clearTest]; } @@ -1115,19 +1124,19 @@ - (void)testViewabilityListener { atOrigin:CGPointZero withSize:CGSizeMake(320.0f, 50.0f)]; NSString *isViewable = [self.webView stringByEvaluatingJavaScriptFromString:@"testIsViewable"]; - STAssertTrue([isViewable isEqualToString:@"false"], @"expected banner to not be viewable"); + XCTAssertTrue([isViewable isEqualToString:@"false"], @"expected banner to not be viewable"); [self addBannerAsSubview]; isViewable = [self.webView stringByEvaluatingJavaScriptFromString:@"testIsViewable"]; - STAssertTrue([isViewable isEqualToString:@"true"], @"expected banner to be viewable"); + XCTAssertTrue([isViewable isEqualToString:@"true"], @"expected banner to be viewable"); [self moveBannerSubviewToOrigin:CGPointMake(1000.0f, 1000.0f)]; isViewable = [self.webView stringByEvaluatingJavaScriptFromString:@"testIsViewable"]; - STAssertTrue([isViewable isEqualToString:@"false"], @"expected banner to not be viewable"); + XCTAssertTrue([isViewable isEqualToString:@"false"], @"expected banner to not be viewable"); [self moveBannerSubviewToOrigin:CGPointMake(0.0f, 200.0f)]; isViewable = [self.webView stringByEvaluatingJavaScriptFromString:@"testIsViewable"]; - STAssertTrue([isViewable isEqualToString:@"true"], @"expected banner to be viewable"); + XCTAssertTrue([isViewable isEqualToString:@"true"], @"expected banner to be viewable"); [self clearTest]; } @@ -1138,11 +1147,11 @@ - (void)testRemoveEventListener { withSize:CGSizeMake(320.0f, 50.0f)]; [self.webView stringByEvaluatingJavaScriptFromString:@"mraid.removeEventListener('ready', onReady);"]; NSString *errorAction = [self.webView stringByEvaluatingJavaScriptFromString:@"testErrorAction"]; - STAssertTrue([errorAction isEqualToString:@""], @"Did not expect an error on removeEventListener()"); + XCTAssertTrue([errorAction isEqualToString:@""], @"Did not expect an error on removeEventListener()"); [self.webView stringByEvaluatingJavaScriptFromString:@"mraid.removeEventListener('ready', onReady);"]; errorAction = [self.webView stringByEvaluatingJavaScriptFromString:@"testErrorAction"]; - STAssertTrue([errorAction isEqualToString:@"mraid.removeEventListener()"], @"Expected error on removeEventListener()"); + XCTAssertTrue([errorAction isEqualToString:@"mraid.removeEventListener()"], @"Expected error on removeEventListener()"); [self clearTest]; } @@ -1153,9 +1162,9 @@ - (void)testSupportSMS { [self loadBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; BOOL isSupported = [self supports:@"sms"]; #if TARGET_IPHONE_SIMULATOR - STAssertFalse(isSupported, @"Expected iphone simulator to not support SMS"); + XCTAssertFalse(isSupported, @"Expected iphone simulator to not support SMS"); #else - STAssertTrue(isSupported, @"Expected iPhone device to support SMS"); + XCTAssertTrue(isSupported, @"Expected iPhone device to support SMS"); #endif [self clearTest]; } @@ -1164,9 +1173,9 @@ - (void)testSupportTel { [self loadBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; BOOL isSupported = [self supports:@"tel"]; #if TARGET_IPHONE_SIMULATOR - STAssertFalse(isSupported, @"Expected iphone simulator to not support Tel"); + XCTAssertFalse(isSupported, @"Expected iphone simulator to not support Tel"); #else - STAssertTrue(isSupported, @"Expected iPhone device to support Tel"); + XCTAssertTrue(isSupported, @"Expected iPhone device to support Tel"); #endif [self clearTest]; } @@ -1174,21 +1183,21 @@ - (void)testSupportTel { - (void)testSupportCal { [self loadBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; BOOL isSupported = [self supports:@"calendar"]; - STAssertTrue(isSupported, @"Expected calendar support"); + XCTAssertTrue(isSupported, @"Expected calendar support"); [self clearTest]; } - (void)testSupportInlineVideo { [self loadBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; BOOL isSupported = [self supports:@"inlineVideo"]; - STAssertTrue(isSupported, @"Expected inline video support"); + XCTAssertTrue(isSupported, @"Expected inline video support"); [self clearTest]; } - (void)testSupportStorePicture { [self loadBasicMRAIDBannerWithSelectorName:NSStringFromSelector(_cmd)]; BOOL isSupported = [self supports:@"storePicture"]; - STAssertTrue(isSupported, @"Expected store picture support"); + XCTAssertTrue(isSupported, @"Expected store picture support"); [self clearTest]; } @@ -1253,11 +1262,11 @@ - (void)loadMRAIDBannerAtOrigin:(CGPoint)origin usingStubBody:(NSString *)body { [self stubWithBody:body]; [self loadBannerAdAtOrigin:CGPointMake(origin.x, origin.y) withSize:CGSizeMake(size.width, size.height)]; - STAssertTrue([self waitForCompletion:MRAID_TESTS_TIMEOUT], @"Ad load timed out"); - STAssertTrue(self.adDidLoadCalled, @"Success callback should be called"); - STAssertFalse(self.adFailedToLoadCalled, @"Failure callback should not be called"); + XCTAssertTrue([self waitForCompletion:MRAID_TESTS_TIMEOUT], @"Ad load timed out"); + XCTAssertTrue(self.adDidLoadCalled, @"Success callback should be called"); + XCTAssertFalse(self.adFailedToLoadCalled, @"Failure callback should not be called"); id wv = [[self.banner subviews] firstObject]; - STAssertTrue([wv isKindOfClass:[ANWebView class]], @"Expected ANWebView as subview of BannerAdView"); + XCTAssertTrue([wv isKindOfClass:[ANWebView class]], @"Expected ANWebView as subview of BannerAdView"); self.webView = (ANWebView *)wv; } @@ -1316,7 +1325,7 @@ - (void)removeBannerFromSuperview { } - (void)assertState:(NSString *)expectedState { - STAssertTrue([[self getState] isEqualToString:expectedState], [NSString stringWithFormat:@"Expected state '%@', instead in state '%@'", expectedState, [self getState]]); + XCTAssertTrue([[self getState] isEqualToString:expectedState], @"Expected state '%@', instead in state '%@'", expectedState, [self getState]); } - (void)rotateDeviceToOrientation:(UIInterfaceOrientation)orientation { diff --git a/tests/TestClasses/MediationCallbacksTests.m b/tests/OriginalUnitTestAppTests/MediationCallbacksTests.m similarity index 87% rename from tests/TestClasses/MediationCallbacksTests.m rename to tests/OriginalUnitTestAppTests/MediationCallbacksTests.m index 308b77503..a53dff42d 100644 --- a/tests/TestClasses/MediationCallbacksTests.m +++ b/tests/OriginalUnitTestAppTests/MediationCallbacksTests.m @@ -46,26 +46,26 @@ - (void)runBasicTest:(BOOL)didLoadValue [self loadBannerAd]; [self waitForCompletion:waitTime]; - STAssertEquals(didLoadValue, self.adDidLoadCalled, + XCTAssertEqual(didLoadValue, self.adDidLoadCalled, @"callback adDidLoad should be %d", didLoadValue); - STAssertEquals((BOOL)!didLoadValue, self.adFailedToLoadCalled, + XCTAssertEqual((BOOL)!didLoadValue, self.adFailedToLoadCalled, @"callback adFailedToLoad should be %d", (BOOL)!didLoadValue); - STAssertFalse(self.adLoadedMultiple, @"adLoadedMultiple should never be true"); - STAssertFalse(self.adFailedMultiple, @"adFailedMultiple should never be true"); + XCTAssertFalse(self.adLoadedMultiple, @"adLoadedMultiple should never be true"); + XCTAssertFalse(self.adFailedMultiple, @"adFailedMultiple should never be true"); } - (void)checkCallbacks:(BOOL)called { - STAssertEquals(self.adWasClickedCalled, called, + XCTAssertEqual(self.adWasClickedCalled, called, @"callback adWasClickCalled should be %d", called); - STAssertEquals(self.adWillPresentCalled, called, + XCTAssertEqual(self.adWillPresentCalled, called, @"callback adWillPresentCalled should be %d", called); - STAssertEquals(self.adDidPresentCalled, called, + XCTAssertEqual(self.adDidPresentCalled, called, @"callback adDidPresentCalled should be %d", called); - STAssertEquals(self.adWillCloseCalled, called, + XCTAssertEqual(self.adWillCloseCalled, called, @"callback adWillCloseCalled should be %d", called); - STAssertEquals(self.adDidCloseCalled, called, + XCTAssertEqual(self.adDidCloseCalled, called, @"callback adDidCloseCalled should be %d", called); - STAssertEquals(self.adWillLeaveApplicationCalled, called, + XCTAssertEqual(self.adWillLeaveApplicationCalled, called, @"callback adWillLeaveApplicationCalled should be %d", called); } @@ -123,14 +123,15 @@ - (void)test22LoadAndHitOtherCallbacks [self clearTest]; } -- (void)test23FailAndHitOtherCallbacks +// Will be fixed by HiccupFixesSep14 branch +/*- (void)test23FailAndHitOtherCallbacks { [self stubWithBody:[ANTestResponses createMediatedBanner:kANFailAndHitOtherCallbacks]]; [self stubResultCBResponses:@""]; [self runBasicTest:NO waitTime:CALLBACKS_TIMEOUT]; [self checkCallbacks:NO]; [self clearTest]; -} +}*/ - (void)test24FailedMultiple { diff --git a/tests/TestClasses/MediationTests.m b/tests/OriginalUnitTestAppTests/MediationTests.m similarity index 92% rename from tests/TestClasses/MediationTests.m rename to tests/OriginalUnitTestAppTests/MediationTests.m index 65742ea6f..89b1780d1 100644 --- a/tests/TestClasses/MediationTests.m +++ b/tests/OriginalUnitTestAppTests/MediationTests.m @@ -15,7 +15,7 @@ #import "ANBaseTestCase.h" #import "ANAdFetcher.h" -#import "ANAdWebViewController.h" +#import "ANWebView.h" #import "ANMediatedAd.h" #import "ANMediationAdViewController.h" #import "ANSuccessfulBannerNeverCalled.h" @@ -32,7 +32,7 @@ @interface FetcherHelper : ANBannerAdView @property (nonatomic, assign) BOOL testComplete; @property (nonatomic, strong) ANAdFetcher *fetcher; @property (nonatomic, strong) id adapter; -@property (nonatomic, strong) ANMRAIDAdWebViewController *webViewController; +@property (nonatomic, strong) ANWebView *webView; @property (nonatomic, strong) NSError *ANError; //@property (nonatomic, strong) NSMutableURLRequest *successResultRequest; @property (nonatomic, strong) NSMutableURLRequest *request; @@ -50,7 +50,7 @@ @interface FetcherHelper () @interface ANAdFetcher () - (void)processResponseData:(NSData *)data; - (ANMediationAdViewController *)mediationController; -- (ANMRAIDAdWebViewController *)webViewController; +- (ANWebView *)webView; //- (NSMutableURLRequest *)successResultRequest; - (NSMutableURLRequest *)request; @end @@ -83,7 +83,7 @@ - (void)clearTest { - (void)runBasicTest:(int)testNumber { id adapter = [self.helper runTestForAdapter:testNumber time:15.0]; - STAssertTrue([self.helper testComplete], @"Test timed out"); + XCTAssertTrue([self.helper testComplete], @"Test timed out"); [self runChecks:testNumber adapter:adapter]; [self clearTest]; @@ -104,7 +104,7 @@ - (void)checkClass:(NSString *)className adapter:(id)adapter{ result = [adapter isMemberOfClass:adClass]; } - STAssertTrue(result, [NSString stringWithFormat:@"Expected an adapter of class %@.", className]); + XCTAssertTrue(result, @"Expected an adapter of class %@", className); } //- (void)checkSuccessResultCB:(int)code { @@ -116,11 +116,11 @@ - (void)checkClass:(NSString *)className adapter:(id)adapter{ - (void)checkLastRequest:(int)code { NSString *resultCBString =[[self.helper request].URL absoluteString]; NSString *resultCBPrefix = [NSString stringWithFormat:@"%@?reason=%i", OK_RESULT_CB_URL, code]; - STAssertTrue([resultCBString hasPrefix:resultCBPrefix], @"ResultCB should match"); + XCTAssertTrue([resultCBString hasPrefix:resultCBPrefix], @"ResultCB should match"); } - (void)checkSuccessfulBannerNeverCalled { - STAssertFalse([ANSuccessfulBannerNeverCalled getCalled], @"Should never be called"); + XCTAssertFalse([ANSuccessfulBannerNeverCalled getCalled], @"Should never be called"); } - (void)runChecks:(int)testNumber adapter:(id)adapter { @@ -156,7 +156,7 @@ - (void)runChecks:(int)testNumber adapter:(id)adapter { case 7: { [self checkClass:kANSuccessfulBanner adapter:adapter]; - STAssertNotNil([self.helper webViewController], @"Expected webViewController to be non-nil"); + XCTAssertNotNil([self.helper webView], @"Expected webView to be non-nil"); } break; case 11: @@ -171,8 +171,8 @@ - (void)runChecks:(int)testNumber adapter:(id)adapter { break; case 13: { - STAssertNil(adapter, @"Expected nil adapter"); - STAssertNotNil([self.helper webViewController], @"Expected webViewController to be non-nil"); + XCTAssertNil(adapter, @"Expected nil adapter"); + XCTAssertNotNil([self.helper webView], @"Expected webView to be non-nil"); } break; case 14: @@ -182,7 +182,7 @@ - (void)runChecks:(int)testNumber adapter:(id)adapter { break; case 15: { - STAssertTrue([[self.helper ANError] code] == ANAdResponseUnableToFill, @"Expected ANAdResponseUnableToFill error."); + XCTAssertTrue([[self.helper ANError] code] == ANAdResponseUnableToFill, @"Expected ANAdResponseUnableToFill error."); } break; case 16: @@ -301,11 +301,13 @@ @implementation FetcherHelper @synthesize testComplete = __testComplete; @synthesize fetcher = __fetcher; @synthesize adapter = __adapter; -@synthesize webViewController = __webViewController; +@synthesize webView = __webView; @synthesize ANError = __ANError; //@synthesize successResultRequest = __successResultRequest; @synthesize request = __request; +@synthesize mraidEventReceiverDelegate = __mraidEventReceiverDelegate; + - (id)runTestForAdapter:(int)testNumber time:(NSTimeInterval)time { [self runBasicTest:testNumber]; @@ -358,13 +360,13 @@ - (void)adFetcher:(ANAdFetcher *)fetcher didFinishRequestWithResponse:(ANAdRespo case 70: { // don't set adapter here, because we want to retain the adapter from case 7 - self.webViewController = [fetcher webViewController]; + self.webView = [fetcher webView]; } break; case 13: { self.adapter = [[fetcher mediationController] currentAdapter]; - self.webViewController = [fetcher webViewController]; + self.webView = [fetcher webView]; } break; case 15: diff --git a/tests/TestClasses/TestUtils/ANBaseTestCase.h b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.h similarity index 92% rename from tests/TestClasses/TestUtils/ANBaseTestCase.h rename to tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.h index 63492c16c..446198d22 100644 --- a/tests/TestClasses/TestUtils/ANBaseTestCase.h +++ b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.h @@ -13,8 +13,7 @@ limitations under the License. */ -#import -#import "Nocilla.h" +#import #import "ANBannerAdView.h" #import "ANInterstitialAd.h" #import "ANTestResponses.h" @@ -22,7 +21,7 @@ #define TEST_URL [@"http://" stringByAppendingString:AN_MOBILE_HOSTNAME] -@interface ANBaseTestCase : SenTestCase +@interface ANBaseTestCase : XCTestCase @property (nonatomic, readwrite, strong) ANBannerAdView *banner; @property (nonatomic, readwrite, strong) ANInterstitialAd *interstitial; diff --git a/tests/TestClasses/TestUtils/ANBaseTestCase.m b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.m similarity index 68% rename from tests/TestClasses/TestUtils/ANBaseTestCase.m rename to tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.m index 097fb7637..a2b5d5ef9 100644 --- a/tests/TestClasses/TestUtils/ANBaseTestCase.m +++ b/tests/OriginalUnitTestAppTests/TestUtils/ANBaseTestCase.m @@ -15,6 +15,9 @@ #import "ANBaseTestCase.h" #import "ANLogManager.h" +#import "ANURLConnectionStub.h" +#import "ANHTTPStubURLProtocol.h" +#import "ANHTTPStubbingManager.h" @interface ANBaseTestCase () @@ -22,19 +25,17 @@ @interface ANBaseTestCase () @implementation ANBaseTestCase ++ (void)load { + [[ANHTTPStubbingManager sharedStubbingManager] enable]; +} + - (void)setUp { [super setUp]; [ANLogManager setANLogLevel:ANLogLevelAll]; - [[LSNocilla sharedInstance] start]; -} - -- (void)tearDown { - [super tearDown]; - [[LSNocilla sharedInstance] stop]; } - (void)clearTest { - [[LSNocilla sharedInstance] clearStubs]; + [[ANHTTPStubbingManager sharedStubbingManager] removeAllStubs]; _banner = nil; _interstitial = nil; _testComplete = NO; @@ -47,34 +48,43 @@ - (void)clearTest { _adDidCloseCalled = NO; _adWillLeaveApplicationCalled = NO; _adFailedToDisplayCalled = NO; + UIViewController *presentingVC = [UIApplication sharedApplication].keyWindow.rootViewController; + if (presentingVC) { + [self delay:1.0]; + [presentingVC dismissViewControllerAnimated:NO completion:nil]; + } } - (void)stubWithBody:(NSString *)body { - stubRequest(@"GET", [TEST_URL stringByAppendingString:@".*"].regex) - .andReturn(200) - .withBody(body) - ; - stubRequest(@"GET", [AN_BASE_URL stringByAppendingString:@".*"].regex) - .andReturn(200) - .withBody(@"") - ; + ANURLConnectionStub *testURLStub = [[ANURLConnectionStub alloc] init]; + testURLStub.requestURLRegexPatternString = [TEST_URL stringByAppendingString:@".*"]; + testURLStub.responseCode = 200; + testURLStub.responseBody = body; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:testURLStub]; + + ANURLConnectionStub *anBaseURLStub = [[ANURLConnectionStub alloc] init]; + anBaseURLStub.requestURLRegexPatternString = [AN_BASE_URL stringByAppendingString:@".*"]; + anBaseURLStub.responseCode = 200; + anBaseURLStub.responseBody = @""; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:anBaseURLStub]; } - (void)stubResultCBResponses:(NSString *)body { - NSString *resultCBRegex = [NSString stringWithFormat:@"^%@.*", OK_RESULT_CB_URL]; - stubRequest(@"GET", resultCBRegex.regex) - .andReturn(200) - .withBody(body) - ; + ANURLConnectionStub *anBaseURLStub = [[ANURLConnectionStub alloc] init]; + anBaseURLStub.requestURLRegexPatternString = [NSString stringWithFormat:@"^%@.*", OK_RESULT_CB_URL]; + anBaseURLStub.responseCode = 200; + anBaseURLStub.responseBody = body; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:anBaseURLStub]; } - (void)stubResultCBForErrorCode { for (int i = 0; i < 6; i++) { - NSString *resultCBRegex = [NSString stringWithFormat:@"^%@\\?reason=%i.*", OK_RESULT_CB_URL, i]; - stubRequest(@"GET", resultCBRegex.regex) - .andReturn(200) - .withBody([ANTestResponses mediationErrorCodeBanner:i]) - ; + NSString *resultCBURLString = [NSString stringWithFormat:@"^%@\\?reason=%i.*", OK_RESULT_CB_URL, i]; + ANURLConnectionStub *anBaseURLStub = [[ANURLConnectionStub alloc] init]; + anBaseURLStub.requestURLRegexPatternString = resultCBURLString; + anBaseURLStub.responseCode = 200; + anBaseURLStub.responseBody = [ANTestResponses mediationErrorCodeBanner:i]; + [[ANHTTPStubbingManager sharedStubbingManager] addStub:anBaseURLStub]; } } diff --git a/tests/TestClasses/TestUtils/ANMRAIDTestResponses.h b/tests/OriginalUnitTestAppTests/TestUtils/ANMRAIDTestResponses.h similarity index 100% rename from tests/TestClasses/TestUtils/ANMRAIDTestResponses.h rename to tests/OriginalUnitTestAppTests/TestUtils/ANMRAIDTestResponses.h diff --git a/tests/TestClasses/TestUtils/ANMRAIDTestResponses.m b/tests/OriginalUnitTestAppTests/TestUtils/ANMRAIDTestResponses.m similarity index 100% rename from tests/TestClasses/TestUtils/ANMRAIDTestResponses.m rename to tests/OriginalUnitTestAppTests/TestUtils/ANMRAIDTestResponses.m diff --git a/tests/TestClasses/TestUtils/ANTestResponses.h b/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.h similarity index 100% rename from tests/TestClasses/TestUtils/ANTestResponses.h rename to tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.h diff --git a/tests/TestClasses/TestUtils/ANTestResponses.m b/tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.m similarity index 100% rename from tests/TestClasses/TestUtils/ANTestResponses.m rename to tests/OriginalUnitTestAppTests/TestUtils/ANTestResponses.m diff --git a/tests/TestClasses/TestViews/ANAdAdapterBannerDummy.h b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerDummy.h similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterBannerDummy.h rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerDummy.h diff --git a/tests/TestClasses/TestViews/ANAdAdapterBannerDummy.m b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerDummy.m similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterBannerDummy.m rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerDummy.m diff --git a/tests/TestClasses/TestViews/ANAdAdapterBannerNoAds.h b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerNoAds.h similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterBannerNoAds.h rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerNoAds.h diff --git a/tests/TestClasses/TestViews/ANAdAdapterBannerNoAds.m b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerNoAds.m similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterBannerNoAds.m rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerNoAds.m diff --git a/tests/TestClasses/TestViews/ANAdAdapterBannerRequestFail.h b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerRequestFail.h similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterBannerRequestFail.h rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerRequestFail.h diff --git a/tests/TestClasses/TestViews/ANAdAdapterBannerRequestFail.m b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerRequestFail.m similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterBannerRequestFail.m rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterBannerRequestFail.m diff --git a/tests/TestClasses/TestViews/ANAdAdapterErrorCode.h b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterErrorCode.h similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterErrorCode.h rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterErrorCode.h diff --git a/tests/TestClasses/TestViews/ANAdAdapterErrorCode.m b/tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterErrorCode.m similarity index 100% rename from tests/TestClasses/TestViews/ANAdAdapterErrorCode.m rename to tests/OriginalUnitTestAppTests/TestViews/ANAdAdapterErrorCode.m diff --git a/tests/TestClasses/TestViews/ANFailAndHitOtherCallbacks.h b/tests/OriginalUnitTestAppTests/TestViews/ANFailAndHitOtherCallbacks.h similarity index 100% rename from tests/TestClasses/TestViews/ANFailAndHitOtherCallbacks.h rename to tests/OriginalUnitTestAppTests/TestViews/ANFailAndHitOtherCallbacks.h diff --git a/tests/TestClasses/TestViews/ANFailAndHitOtherCallbacks.m b/tests/OriginalUnitTestAppTests/TestViews/ANFailAndHitOtherCallbacks.m similarity index 100% rename from tests/TestClasses/TestViews/ANFailAndHitOtherCallbacks.m rename to tests/OriginalUnitTestAppTests/TestViews/ANFailAndHitOtherCallbacks.m diff --git a/tests/TestClasses/TestViews/ANFailThenLoad.h b/tests/OriginalUnitTestAppTests/TestViews/ANFailThenLoad.h similarity index 100% rename from tests/TestClasses/TestViews/ANFailThenLoad.h rename to tests/OriginalUnitTestAppTests/TestViews/ANFailThenLoad.h diff --git a/tests/TestClasses/TestViews/ANFailThenLoad.m b/tests/OriginalUnitTestAppTests/TestViews/ANFailThenLoad.m similarity index 100% rename from tests/TestClasses/TestViews/ANFailThenLoad.m rename to tests/OriginalUnitTestAppTests/TestViews/ANFailThenLoad.m diff --git a/tests/OriginalUnitTestAppTests/TestViews/ANFailedMultiple.h b/tests/OriginalUnitTestAppTests/TestViews/ANFailedMultiple.h new file mode 100644 index 000000000..0c52f012a --- /dev/null +++ b/tests/OriginalUnitTestAppTests/TestViews/ANFailedMultiple.h @@ -0,0 +1,21 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANCustomAdapter.h" + +@interface ANFailedMultiple : NSObject + +@end diff --git a/tests/OriginalUnitTestAppTests/TestViews/ANFailedMultiple.m b/tests/OriginalUnitTestAppTests/TestViews/ANFailedMultiple.m new file mode 100644 index 000000000..67a83d6bc --- /dev/null +++ b/tests/OriginalUnitTestAppTests/TestViews/ANFailedMultiple.m @@ -0,0 +1,35 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANFailedMultiple.h" + +@implementation ANFailedMultiple +@synthesize delegate; + +#pragma mark ANCustomAdapterBanner + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters +{ + [self.delegate didFailToLoadAd:ANAdResponseUnableToFill]; + [self.delegate didFailToLoadAd:ANAdResponseUnableToFill]; + + [self.delegate didLoadBannerAd:[UIView new]]; +} + +@end diff --git a/tests/OriginalUnitTestAppTests/TestViews/ANLoadAndHitOtherCallbacks.h b/tests/OriginalUnitTestAppTests/TestViews/ANLoadAndHitOtherCallbacks.h new file mode 100644 index 000000000..11a0c21f6 --- /dev/null +++ b/tests/OriginalUnitTestAppTests/TestViews/ANLoadAndHitOtherCallbacks.h @@ -0,0 +1,21 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANCustomAdapter.h" + +@interface ANLoadAndHitOtherCallbacks : NSObject + +@end diff --git a/tests/OriginalUnitTestAppTests/TestViews/ANLoadAndHitOtherCallbacks.m b/tests/OriginalUnitTestAppTests/TestViews/ANLoadAndHitOtherCallbacks.m new file mode 100644 index 000000000..e3ae4e337 --- /dev/null +++ b/tests/OriginalUnitTestAppTests/TestViews/ANLoadAndHitOtherCallbacks.m @@ -0,0 +1,38 @@ +/* Copyright 2013 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANLoadAndHitOtherCallbacks.h" + +@implementation ANLoadAndHitOtherCallbacks +@synthesize delegate; + +#pragma mark ANCustomAdapterBanner + +- (void)requestBannerAdWithSize:(CGSize)size + rootViewController:(UIViewController *)rootViewController + serverParameter:(NSString *)parameterString + adUnitId:(NSString *)idString + targetingParameters:(ANTargetingParameters *)targetingParameters +{ + [self.delegate didLoadBannerAd:[UIView new]]; + [self.delegate adWasClicked]; + [self.delegate willPresentAd]; + [self.delegate didPresentAd]; + [self.delegate willCloseAd]; + [self.delegate didCloseAd]; + [self.delegate willLeaveApplication]; +} + +@end diff --git a/tests/TestClasses/TestViews/ANLoadThenFail.h b/tests/OriginalUnitTestAppTests/TestViews/ANLoadThenFail.h similarity index 100% rename from tests/TestClasses/TestViews/ANLoadThenFail.h rename to tests/OriginalUnitTestAppTests/TestViews/ANLoadThenFail.h diff --git a/tests/TestClasses/TestViews/ANLoadThenFail.m b/tests/OriginalUnitTestAppTests/TestViews/ANLoadThenFail.m similarity index 100% rename from tests/TestClasses/TestViews/ANLoadThenFail.m rename to tests/OriginalUnitTestAppTests/TestViews/ANLoadThenFail.m diff --git a/tests/TestClasses/TestViews/ANLoadedMultiple.h b/tests/OriginalUnitTestAppTests/TestViews/ANLoadedMultiple.h similarity index 100% rename from tests/TestClasses/TestViews/ANLoadedMultiple.h rename to tests/OriginalUnitTestAppTests/TestViews/ANLoadedMultiple.h diff --git a/tests/TestClasses/TestViews/ANLoadedMultiple.m b/tests/OriginalUnitTestAppTests/TestViews/ANLoadedMultiple.m similarity index 100% rename from tests/TestClasses/TestViews/ANLoadedMultiple.m rename to tests/OriginalUnitTestAppTests/TestViews/ANLoadedMultiple.m diff --git a/tests/TestClasses/TestViews/ANSuccessfulBanner.h b/tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBanner.h similarity index 100% rename from tests/TestClasses/TestViews/ANSuccessfulBanner.h rename to tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBanner.h diff --git a/tests/TestClasses/TestViews/ANSuccessfulBanner.m b/tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBanner.m similarity index 100% rename from tests/TestClasses/TestViews/ANSuccessfulBanner.m rename to tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBanner.m diff --git a/tests/TestClasses/TestViews/ANSuccessfulBannerNeverCalled.h b/tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBannerNeverCalled.h similarity index 100% rename from tests/TestClasses/TestViews/ANSuccessfulBannerNeverCalled.h rename to tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBannerNeverCalled.h diff --git a/tests/TestClasses/TestViews/ANSuccessfulBannerNeverCalled.m b/tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBannerNeverCalled.m similarity index 100% rename from tests/TestClasses/TestViews/ANSuccessfulBannerNeverCalled.m rename to tests/OriginalUnitTestAppTests/TestViews/ANSuccessfulBannerNeverCalled.m diff --git a/tests/TestClasses/TestViews/ANTimeout.h b/tests/OriginalUnitTestAppTests/TestViews/ANTimeout.h similarity index 100% rename from tests/TestClasses/TestViews/ANTimeout.h rename to tests/OriginalUnitTestAppTests/TestViews/ANTimeout.h diff --git a/tests/TestClasses/TestViews/ANTimeout.m b/tests/OriginalUnitTestAppTests/TestViews/ANTimeout.m similarity index 100% rename from tests/TestClasses/TestViews/ANTimeout.m rename to tests/OriginalUnitTestAppTests/TestViews/ANTimeout.m diff --git a/tests/TestClasses/TestsTests-Info.plist b/tests/OriginalUnitTestAppTests/TestsTests-Info.plist similarity index 100% rename from tests/TestClasses/TestsTests-Info.plist rename to tests/OriginalUnitTestAppTests/TestsTests-Info.plist diff --git a/tests/TestClasses/TestsTests-Prefix.pch b/tests/OriginalUnitTestAppTests/TestsTests-Prefix.pch similarity index 100% rename from tests/TestClasses/TestsTests-Prefix.pch rename to tests/OriginalUnitTestAppTests/TestsTests-Prefix.pch diff --git a/tests/OriginalUnitTestAppTests/en.lproj/InfoPlist.strings b/tests/OriginalUnitTestAppTests/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..477b28ff8 --- /dev/null +++ b/tests/OriginalUnitTestAppTests/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/tests/Shared/Categories/ANAdAdapterBaseAmazon+ANTest.h b/tests/Shared/Categories/ANAdAdapterBaseAmazon+ANTest.h new file mode 100644 index 000000000..2fe9b3da7 --- /dev/null +++ b/tests/Shared/Categories/ANAdAdapterBaseAmazon+ANTest.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBaseAmazon.h" + +@interface ANAdAdapterBaseAmazon (ANTest) + +@end diff --git a/tests/Shared/Categories/ANAdAdapterBaseAmazon+ANTest.m b/tests/Shared/Categories/ANAdAdapterBaseAmazon+ANTest.m new file mode 100644 index 000000000..2ac665397 --- /dev/null +++ b/tests/Shared/Categories/ANAdAdapterBaseAmazon+ANTest.m @@ -0,0 +1,36 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdAdapterBaseAmazon+ANTest.h" +#import "NSObject+Swizzling.h" + +@implementation ANAdAdapterBaseAmazon (ANTest) + ++ (void)load { + NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ + [self exchangeInstanceSelector:@selector(adOptionsForTargetingParameters:) + withSelector:@selector(test_adOptionsForTargetingParameters:)]; + [[self class] setAmazonAppKey:@"123"]; + }]; + [operation start]; +} + +- (AmazonAdOptions *)test_adOptionsForTargetingParameters:(ANTargetingParameters *)targetingParameters { + AmazonAdOptions *options = [self test_adOptionsForTargetingParameters:targetingParameters]; + options.isTestRequest = YES; + return options; +} + +@end diff --git a/tests/Shared/Categories/ANAdFetcher+ANTest.h b/tests/Shared/Categories/ANAdFetcher+ANTest.h new file mode 100644 index 000000000..3c32f1e21 --- /dev/null +++ b/tests/Shared/Categories/ANAdFetcher+ANTest.h @@ -0,0 +1,28 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdFetcher.h" +#import "ANWebView.h" + +static NSString *const kANAdFetcherFireResultCBRequestedNotification = @"ANAdFetcherFireResultCBRequested"; +static NSString *const kANAdFetcherFireResultCBRequestedReason = @"ANAdFetcherFireResultCBRequestedReason"; + +@interface ANAdFetcher (ANTest) + +@property (nonatomic, readwrite, strong) ANWebView *webView; + +- (void)handleStandardAd:(ANAdResponse *)response; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANAdFetcher+ANTest.m b/tests/Shared/Categories/ANAdFetcher+ANTest.m new file mode 100644 index 000000000..821f5b871 --- /dev/null +++ b/tests/Shared/Categories/ANAdFetcher+ANTest.m @@ -0,0 +1,68 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdFetcher+ANTest.h" +#import + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wincomplete-implementation" +@implementation ANAdFetcher (ANTest) +#pragma clang diagnostic pop + +@dynamic webView; + ++ (void)load { + NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ + [[self class] exchangeOriginalSelector:@selector(fireResultCB:reason:adObject:auctionID:) + withSelector:@selector(test_fireResultCB:reason:adObject:auctionID:)]; + }]; + [operation start]; +} + ++ (void)exchangeOriginalSelector:(SEL)originalSelector withSelector:(SEL)swizzledSelector { + Class class = [self class]; + + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + + BOOL didAddMethod = class_addMethod(class, + originalSelector, + method_getImplementation(swizzledMethod), + method_getTypeEncoding(swizzledMethod)); + if (didAddMethod) { + class_replaceMethod(class, + swizzledSelector, + method_getImplementation(originalMethod), + method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } +} + +- (void)test_fireResultCB:(NSString *)resultCBString + reason:(ANADRESPONSECODE)reason + adObject:(id)adObject + auctionID:(NSString *)auctionID { + NSDictionary *userInfo = @{kANAdFetcherFireResultCBRequestedReason:@(reason)}; + [[NSNotificationCenter defaultCenter] postNotificationName:kANAdFetcherFireResultCBRequestedNotification + object:self + userInfo:userInfo]; + [self test_fireResultCB:resultCBString + reason:reason + adObject:adObject + auctionID:auctionID]; +} + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANAdView+ANTest.h b/tests/Shared/Categories/ANAdView+ANTest.h new file mode 100644 index 000000000..09fa316e9 --- /dev/null +++ b/tests/Shared/Categories/ANAdView+ANTest.h @@ -0,0 +1,30 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdView.h" +#import "ANAdViewDelegate.h" + +static NSString *const kANAdViewAdWasClickedNotification = @"adWasClicked"; +static NSString *const kANAdViewAdWillPresentNotification = @"adWillPresent"; +static NSString *const kANAdViewAdDidPresentNotification = @"adDidPresent"; +static NSString *const kANAdViewAdWillCloseNotification = @"adWillClose"; +static NSString *const kANAdViewAdDidCloseNotification = @"adDidClose"; +static NSString *const kANAdViewAdWillLeaveApplicationNotification = @"adWillLeaveApplication"; +static NSString *const kANAdViewAdDidReceiveAppEventNotification = @"adDidReceiveAppEvent"; +static NSString *const kANAdViewAdFailedToDisplayNotification = @"adFailedToDisplay"; + +@interface ANAdView (ANTest) + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANAdView+ANTest.m b/tests/Shared/Categories/ANAdView+ANTest.m new file mode 100644 index 000000000..23eed1dbd --- /dev/null +++ b/tests/Shared/Categories/ANAdView+ANTest.m @@ -0,0 +1,112 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdView+ANTest.h" +#import + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wprotocol" +@implementation ANAdView (ANTest) +#pragma clang diagnostic pop + ++ (void)load { + NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{ + [[self class] exchangeOriginalSelector:@selector(adWasClicked) + withSelector:@selector(test_adWasClicked)]; + [[self class] exchangeOriginalSelector:@selector(adWillPresent) + withSelector:@selector(test_adWillPresent)]; + [[self class] exchangeOriginalSelector:@selector(adDidPresent) + withSelector:@selector(test_adDidPresent)]; + [[self class] exchangeOriginalSelector:@selector(adWillClose) + withSelector:@selector(test_adWillClose)]; + [[self class] exchangeOriginalSelector:@selector(adDidClose) + withSelector:@selector(test_adDidClose)]; + [[self class] exchangeOriginalSelector:@selector(adWillLeaveApplication) + withSelector:@selector(test_adWillLeaveApplication)]; + [[self class] exchangeOriginalSelector:@selector(adDidReceiveAppEvent:withData:) + withSelector:@selector(test_adDidReceiveAppEvent:withData:)]; + [[self class] exchangeOriginalSelector:@selector(adFailedToDisplay) + withSelector:@selector(test_adFailedToDisplay)]; + }]; + [operation start]; +} + ++ (void)exchangeOriginalSelector:(SEL)originalSelector withSelector:(SEL)swizzledSelector { + Class class = [self class]; + + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + + BOOL didAddMethod = class_addMethod(class, + originalSelector, + method_getImplementation(swizzledMethod), + method_getTypeEncoding(swizzledMethod)); + if (didAddMethod) { + class_replaceMethod(class, + swizzledSelector, + method_getImplementation(originalMethod), + method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } +} + +- (void)test_adWasClicked { + [self postNotificationWithName:kANAdViewAdWasClickedNotification]; + [self test_adWasClicked]; +} + +- (void)test_adWillPresent { + [self postNotificationWithName:kANAdViewAdWillPresentNotification]; + [self test_adWillPresent]; +} + +- (void)test_adDidPresent { + [self postNotificationWithName:kANAdViewAdDidPresentNotification]; + [self test_adDidPresent]; +} + +- (void)test_adWillClose { + [self postNotificationWithName:kANAdViewAdWillCloseNotification]; + [self test_adWillClose]; +} + +- (void)test_adDidClose { + [self postNotificationWithName:kANAdViewAdDidCloseNotification]; + [self test_adDidClose]; +} + +- (void)test_adWillLeaveApplication { + [self postNotificationWithName:kANAdViewAdWillLeaveApplicationNotification]; + [self test_adWillLeaveApplication]; +} + +- (void)test_adDidReceiveAppEvent:(NSString *)name withData:(NSString *)data { + [self postNotificationWithName:kANAdViewAdDidReceiveAppEventNotification]; + [self test_adDidReceiveAppEvent:name withData:data]; +} + +- (void)test_adFailedToDisplay { + [self postNotificationWithName:kANAdViewAdFailedToDisplayNotification]; + [self test_adFailedToDisplay]; +} + +- (void)postNotificationWithName:(NSString *)name { + [[NSNotificationCenter defaultCenter] postNotificationName:name + object:self + userInfo:nil]; +} + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANAdWebViewController+ANTest.h b/tests/Shared/Categories/ANAdWebViewController+ANTest.h new file mode 100644 index 000000000..4772b9548 --- /dev/null +++ b/tests/Shared/Categories/ANAdWebViewController+ANTest.h @@ -0,0 +1,22 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdWebViewController.h" + +@interface ANMRAIDAdWebViewController (ANTest) + +@property (nonatomic, readwrite, assign) BOOL completedFirstLoad; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANAdWebViewController+ANTest.m b/tests/Shared/Categories/ANAdWebViewController+ANTest.m new file mode 100644 index 000000000..5e2174b2e --- /dev/null +++ b/tests/Shared/Categories/ANAdWebViewController+ANTest.m @@ -0,0 +1,22 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANAdWebViewController+ANTest.h" + +@implementation ANMRAIDAdWebViewController (ANTest) + +@dynamic completedFirstLoad; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANBannerAdView+ANTest.h b/tests/Shared/Categories/ANBannerAdView+ANTest.h new file mode 100644 index 000000000..564ebe9c4 --- /dev/null +++ b/tests/Shared/Categories/ANBannerAdView+ANTest.h @@ -0,0 +1,26 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANBannerAdView.h" +#import "ANAdFetcher.h" + +@interface ANBannerAdView (ANTest) + +@property (nonatomic) UIView *contentView; +@property (nonatomic) NSNumber *transitionInProgress; + +- (void)adFetcher:(ANAdFetcher *)fetcher didFinishRequestWithResponse:(ANAdResponse *)response; + +@end diff --git a/tests/Shared/Categories/ANBannerAdView+ANTest.m b/tests/Shared/Categories/ANBannerAdView+ANTest.m new file mode 100644 index 000000000..fa4d17d30 --- /dev/null +++ b/tests/Shared/Categories/ANBannerAdView+ANTest.m @@ -0,0 +1,36 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANBannerAdView+ANTest.h" + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wprotocol" +#pragma clang diagnostic ignored "-Wincomplete-implementation" +@implementation ANBannerAdView (ANTest) +#pragma clang diagnostic pop + +@dynamic placementId; +@dynamic opensInNativeBrowser; +@dynamic shouldServePublicServiceAnnouncements; +@dynamic location; +@dynamic reserve; +@dynamic age; +@dynamic gender; +@dynamic customKeywords; +@dynamic mraidEventReceiverDelegate; +@dynamic contentView; +@dynamic transitionInProgress; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANInterstitialAd+ANTest.h b/tests/Shared/Categories/ANInterstitialAd+ANTest.h new file mode 100644 index 000000000..699858d59 --- /dev/null +++ b/tests/Shared/Categories/ANInterstitialAd+ANTest.h @@ -0,0 +1,22 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANInterstitialAd.h" + +@interface ANInterstitialAd (ANTest) + +@property (nonatomic, readwrite, strong) NSMutableArray *precachedAdObjects; + +@end diff --git a/tests/Shared/Categories/ANInterstitialAd+ANTest.m b/tests/Shared/Categories/ANInterstitialAd+ANTest.m new file mode 100644 index 000000000..ee136b3e5 --- /dev/null +++ b/tests/Shared/Categories/ANInterstitialAd+ANTest.m @@ -0,0 +1,22 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANInterstitialAd+ANTest.h" + +@implementation ANInterstitialAd (ANTest) + +@dynamic precachedAdObjects; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/ANMediationAdViewController+ANTest.h b/tests/Shared/Categories/ANMediationAdViewController+ANTest.h new file mode 100644 index 000000000..2b65a1d48 --- /dev/null +++ b/tests/Shared/Categories/ANMediationAdViewController+ANTest.h @@ -0,0 +1,22 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANMediationAdViewController.h" + +@interface ANMediationAdViewController (ANTest) + +@property (nonatomic) id currentAdapter; + +@end diff --git a/tests/Shared/Categories/ANMediationAdViewController+ANTest.m b/tests/Shared/Categories/ANMediationAdViewController+ANTest.m new file mode 100644 index 000000000..b129ef36e --- /dev/null +++ b/tests/Shared/Categories/ANMediationAdViewController+ANTest.m @@ -0,0 +1,22 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANMediationAdViewController+ANTest.h" + +@implementation ANMediationAdViewController (ANTest) + +@dynamic currentAdapter; + +@end diff --git a/tests/Shared/Categories/NSObject+Swizzling.h b/tests/Shared/Categories/NSObject+Swizzling.h new file mode 100644 index 000000000..82bf06e8e --- /dev/null +++ b/tests/Shared/Categories/NSObject+Swizzling.h @@ -0,0 +1,25 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface NSObject (Swizzling) + ++ (void)exchangeClassSelector:(SEL)originalSelector + withSelector:(SEL)swizzledSelector; ++ (void)exchangeInstanceSelector:(SEL)originalSelector + withSelector:(SEL)swizzledSelector; + +@end diff --git a/tests/Shared/Categories/NSObject+Swizzling.m b/tests/Shared/Categories/NSObject+Swizzling.m new file mode 100644 index 000000000..8ea3d1e67 --- /dev/null +++ b/tests/Shared/Categories/NSObject+Swizzling.m @@ -0,0 +1,61 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "NSObject+Swizzling.h" +#import + +@implementation NSObject (Swizzling) + ++ (void)exchangeClassSelector:(SEL)originalSelector withSelector:(SEL)swizzledSelector { + Class class = object_getClass((id)self); + + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + + BOOL didAddMethod = class_addMethod(class, + originalSelector, + method_getImplementation(swizzledMethod), + method_getTypeEncoding(swizzledMethod)); + if (didAddMethod) { + class_replaceMethod(class, + swizzledSelector, + method_getImplementation(originalMethod), + method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } +} + ++ (void)exchangeInstanceSelector:(SEL)originalSelector withSelector:(SEL)swizzledSelector { + Class class = [self class]; + + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + + BOOL didAddMethod = class_addMethod(class, + originalSelector, + method_getImplementation(swizzledMethod), + method_getTypeEncoding(swizzledMethod)); + if (didAddMethod) { + class_replaceMethod(class, + swizzledSelector, + method_getImplementation(originalMethod), + method_getTypeEncoding(originalMethod)); + } else { + method_exchangeImplementations(originalMethod, swizzledMethod); + } +} + +@end diff --git a/tests/Shared/Categories/XCTestCase+ANAdResponse.h b/tests/Shared/Categories/XCTestCase+ANAdResponse.h new file mode 100644 index 000000000..b2fb6187a --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANAdResponse.h @@ -0,0 +1,27 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "XCTestCase+ANCategory.h" +#import "ANAdResponse.h" + +static NSString *const kANAdResponseSuccessfulMRAID = @"SuccessfulMRAIDResponse"; +static NSString *const kANAdResponseSuccessfulMediation = @"SuccessfulMediationResponse"; +static NSString *const kANAdResponseSuccessfulMRAIDListener = @"SuccessfulMRAIDListenerResponse"; + +@interface XCTestCase (ANAdResponse) + +- (ANAdResponse *)responseWithJSONResource:(NSString *)JSONResource; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/XCTestCase+ANAdResponse.m b/tests/Shared/Categories/XCTestCase+ANAdResponse.m new file mode 100644 index 000000000..1497be250 --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANAdResponse.m @@ -0,0 +1,26 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "XCTestCase+ANAdResponse.h" + +@implementation XCTestCase (ANAdResponse) + +- (ANAdResponse *)responseWithJSONResource:(NSString *)JSONResource { + ANAdResponse *response = [[ANAdResponse alloc] init]; + [response processResponseData:[self dataWithJSONResource:JSONResource]]; + return response; +} + +@end diff --git a/tests/Shared/Categories/XCTestCase+ANBannerAdView.h b/tests/Shared/Categories/XCTestCase+ANBannerAdView.h new file mode 100644 index 000000000..6e3f0a6ee --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANBannerAdView.h @@ -0,0 +1,27 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANBannerAdView.h" +#import "ANAdFetcher.h" + +@interface XCTestCase (ANBannerAdView) + +- (ANBannerAdView *)bannerViewWithFrameSize:(CGSize)frameSize; + +- (UIImageView *)catContentView; +- (UIImageView *)dogContentView; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/XCTestCase+ANBannerAdView.m b/tests/Shared/Categories/XCTestCase+ANBannerAdView.m new file mode 100644 index 000000000..bf1d1fce9 --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANBannerAdView.m @@ -0,0 +1,52 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "XCTestCase+ANBannerAdView.h" +#import "XCTestCase+ANCategory.h" + +@implementation XCTestCase (ANBannerAdView) + +- (ANBannerAdView *)bannerViewWithFrameSize:(CGSize)frameSize { + ANBannerAdView *bannerAdView = [[ANBannerAdView alloc] init]; + bannerAdView.translatesAutoresizingMaskIntoConstraints = NO; + NSLayoutConstraint *widthConstraint = [NSLayoutConstraint constraintWithItem:bannerAdView + attribute:NSLayoutAttributeWidth + relatedBy:NSLayoutRelationEqual + toItem:nil + attribute:NSLayoutAttributeNotAnAttribute + multiplier:1.0f + constant:frameSize.width]; + NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:bannerAdView + attribute:NSLayoutAttributeHeight + relatedBy:NSLayoutRelationEqual + toItem:nil + attribute:NSLayoutAttributeNotAnAttribute + multiplier:1.0f + constant:frameSize.height]; + [bannerAdView addConstraints:@[widthConstraint, heightConstraint]]; + return bannerAdView; +} + +- (UIImageView *)catContentView { + return [[UIImageView alloc] initWithImage:[self imageForResource:@"GreyWhiteCat" + ofType:@"jpg"]]; +} + +- (UIImageView *)dogContentView { + return [[UIImageView alloc] initWithImage:[self imageForResource:@"dogSelfie" + ofType:@"jpg"]]; +} + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/XCTestCase+ANCategory.h b/tests/Shared/Categories/XCTestCase+ANCategory.h new file mode 100644 index 000000000..1bb9bf80b --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANCategory.h @@ -0,0 +1,30 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import + + +@interface XCTestCase (ANCategory) + +- (NSData *)dataWithJSONResource:(NSString *)JSONResource; +- (UIImage *)imageForResource:(NSString *)resource + ofType:(NSString *)type; + ++ (NSString *)stringWithJSONObject:(id)jsonObject; ++ (NSData *)dataWithJSONObject:(id)jsonObject; ++ (void)delayForTimeInterval:(NSTimeInterval)seconds; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/XCTestCase+ANCategory.m b/tests/Shared/Categories/XCTestCase+ANCategory.m new file mode 100644 index 000000000..30fb75718 --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANCategory.m @@ -0,0 +1,53 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "XCTestCase+ANCategory.h" + +@implementation XCTestCase (ANCategory) + +- (NSData *)dataWithJSONResource:(NSString *)JSONResource { + NSString *path = [[NSBundle bundleForClass:[self class]] pathForResource:JSONResource + ofType:@"json"]; + return [NSData dataWithContentsOfFile:path]; + +} + +- (UIImage *)imageForResource:(NSString *)resource + ofType:(NSString *)type { + NSString *imagePath = [[NSBundle bundleForClass:[self class]] pathForResource:resource + ofType:type]; + UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; + return image; +} + ++ (NSData *)dataWithJSONObject:(id)jsonObject { + return [NSJSONSerialization dataWithJSONObject:jsonObject + options:0 + error:nil]; +} + ++ (NSString *)stringWithJSONObject:(id)jsonObject { + NSData *data = [NSJSONSerialization dataWithJSONObject:jsonObject + options:0 + error:nil]; + return [[NSString alloc] initWithData:data + encoding:NSUTF8StringEncoding]; +} + ++ (void)delayForTimeInterval:(NSTimeInterval)seconds { + [[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:seconds]]; +} + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/XCTestCase+ANMediatedAd.h b/tests/Shared/Categories/XCTestCase+ANMediatedAd.h new file mode 100644 index 000000000..829bcd5b6 --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANMediatedAd.h @@ -0,0 +1,36 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import +#import "ANMediatedAd.h" + +@interface XCTestCase (ANMediatedAd) + +- (ANMediatedAd *)mediatedAdWithFakeClass; +- (ANMediatedAd *)mediatedAdWithNoDelegateInClass; +- (ANMediatedAd *)mediatedAdWithNoRequestMethodInClass; +- (ANMediatedAd *)mediatedAdUnableToFill; +- (ANMediatedAd *)mediatedAdNetworkError; +- (ANMediatedAd *)mediatedAdSuccessful; +- (ANMediatedAd *)mediatedAdTimeout; +- (ANMediatedAd *)mediatedAdUnableToFillThenSuccessful; +- (ANMediatedAd *)mediatedAdSuccessfulThenUnableToFill; +- (ANMediatedAd *)mediatedAdMultipleSuccessCallbacks; +- (ANMediatedAd *)mediatedAdMultipleFailureCallbacks; + +- (ANMediatedAd *)iAdBannerMediatedAd; +- (ANMediatedAd *)iAdInterstitialMediatedAd; + +@end \ No newline at end of file diff --git a/tests/Shared/Categories/XCTestCase+ANMediatedAd.m b/tests/Shared/Categories/XCTestCase+ANMediatedAd.m new file mode 100644 index 000000000..d9257e9a9 --- /dev/null +++ b/tests/Shared/Categories/XCTestCase+ANMediatedAd.m @@ -0,0 +1,84 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "XCTestCase+ANMediatedAd.h" + +@implementation XCTestCase (ANMediatedAd) + +- (ANMediatedAd *)mediatedAdWithFakeClass { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerFakeClass"]; +} + +- (ANMediatedAd *)mediatedAdUnableToFill { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerUnableToFill"]; +} + +- (ANMediatedAd *)mediatedAdNetworkError { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerNetworkError"]; +} + +- (ANMediatedAd *)mediatedAdSuccessful { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerSuccessful"]; +} + +- (ANMediatedAd *)mediatedAdWithNoDelegateInClass { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerNoDelegate"]; +} + +- (ANMediatedAd *)mediatedAdWithNoRequestMethodInClass { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerNoRequestMethod"]; +} + +- (ANMediatedAd *)mediatedAdTimeout { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerTimeoutThenSuccessful"]; +} + +- (ANMediatedAd *)mediatedAdUnableToFillThenSuccessful { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerUnableToFillThenSuccessful"]; +} + +- (ANMediatedAd *)mediatedAdMultipleSuccessCallbacks { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerMultipleSuccessCallbacks"]; +} + +- (ANMediatedAd *)mediatedAdMultipleFailureCallbacks { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerMultipleFailureCallbacks"]; +} + +- (ANMediatedAd *)mediatedAdSuccessfulThenUnableToFill { + return [self defaultMediatedAdWithClassName:@"ANAdAdapterBannerSuccessfulThenUnableToFill"]; +} + +- (ANMediatedAd *)defaultMediatedAdWithClassName:(NSString *)className { + ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; + mediatedAd.className = className; + mediatedAd.width = @"300"; + mediatedAd.height = @"250"; + return mediatedAd; +} + +- (ANMediatedAd *)iAdBannerMediatedAd { + ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; + mediatedAd.className = @"ANAdAdapterBanneriAd"; + return mediatedAd; +} + +- (ANMediatedAd *)iAdInterstitialMediatedAd { + ANMediatedAd *mediatedAd = [[ANMediatedAd alloc] init]; + mediatedAd.className = @"ANAdAdapterInterstitialiAd"; + return mediatedAd; +} + +@end diff --git a/tests/Shared/Default-568h@2x.png b/tests/Shared/Default-568h@2x.png new file mode 100644 index 000000000..0891b7aab Binary files /dev/null and b/tests/Shared/Default-568h@2x.png differ diff --git a/tests/Shared/Resources/GreyWhiteCat.jpg b/tests/Shared/Resources/GreyWhiteCat.jpg new file mode 100644 index 000000000..29e1bdde5 Binary files /dev/null and b/tests/Shared/Resources/GreyWhiteCat.jpg differ diff --git a/tests/Shared/Resources/GreyWhiteCat@2x.jpg b/tests/Shared/Resources/GreyWhiteCat@2x.jpg new file mode 100644 index 000000000..714ab9349 Binary files /dev/null and b/tests/Shared/Resources/GreyWhiteCat@2x.jpg differ diff --git a/tests/Shared/Resources/dogSelfie.jpg b/tests/Shared/Resources/dogSelfie.jpg new file mode 100644 index 000000000..03802a548 Binary files /dev/null and b/tests/Shared/Resources/dogSelfie.jpg differ diff --git a/tests/Shared/Resources/dogSelfie@2x.jpg b/tests/Shared/Resources/dogSelfie@2x.jpg new file mode 100644 index 000000000..7cb910f86 Binary files /dev/null and b/tests/Shared/Resources/dogSelfie@2x.jpg differ diff --git a/tests/Shared/Responses/AdMobBanner.json b/tests/Shared/Responses/AdMobBanner.json new file mode 100644 index 000000000..e5a70fce0 --- /dev/null +++ b/tests/Shared/Responses/AdMobBanner.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"50", + "width":"320", + "id":"", + "type":"ios", + "class":"ANAdAdapterBannerAdMob" + }, + { + "param":"", + "height":"50", + "width":"320", + "id":"", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.AdMobBanner" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/AdMobInterstitial.json b/tests/Shared/Responses/AdMobInterstitial.json new file mode 100644 index 000000000..b9a704adb --- /dev/null +++ b/tests/Shared/Responses/AdMobInterstitial.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"", + "width":"", + "id":"210827375150_10154672420735151", + "type":"ios", + "class":"ANAdAdapterInterstitialAdMob" + }, + { + "param":"", + "height":"", + "width":"", + "id":"210827375150_10154672419150151", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.AdMobInterstitial" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/AmazonBanner.json b/tests/Shared/Responses/AmazonBanner.json new file mode 100644 index 000000000..67dfcceaa --- /dev/null +++ b/tests/Shared/Responses/AmazonBanner.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"50", + "width":"320", + "id":"123", + "type":"ios", + "class":"ANAdAdapterBannerAmazon" + }, + { + "param":"", + "height":"50", + "width":"320", + "id":"123", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.AmazonBanner" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/AmazonInterstitial.json b/tests/Shared/Responses/AmazonInterstitial.json new file mode 100644 index 000000000..765835dc9 --- /dev/null +++ b/tests/Shared/Responses/AmazonInterstitial.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"", + "width":"", + "id":"123", + "type":"ios", + "class":"ANAdAdapterInterstitialAmazon" + }, + { + "param":"", + "height":"", + "width":"", + "id":"123", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.AmazonInterstitial" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/FacebookBanner.json b/tests/Shared/Responses/FacebookBanner.json new file mode 100644 index 000000000..343843159 --- /dev/null +++ b/tests/Shared/Responses/FacebookBanner.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"50", + "width":"320", + "id":"210827375150_10154672420735151", + "type":"ios", + "class":"ANAdAdapterBannerFacebook" + }, + { + "param":"", + "height":"50", + "width":"320", + "id":"210827375150_10154672419150151", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.FacebookBanner" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/FacebookInterstitial.json b/tests/Shared/Responses/FacebookInterstitial.json new file mode 100644 index 000000000..ad0d6f266 --- /dev/null +++ b/tests/Shared/Responses/FacebookInterstitial.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"", + "width":"", + "id":"210827375150_10154672420735151", + "type":"ios", + "class":"ANAdAdapterInterstitialFacebook" + }, + { + "param":"", + "height":"", + "width":"", + "id":"210827375150_10154672419150151", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.FacebookInterstitial" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/MillennialMediaBanner.json b/tests/Shared/Responses/MillennialMediaBanner.json new file mode 100644 index 000000000..813c2d4de --- /dev/null +++ b/tests/Shared/Responses/MillennialMediaBanner.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"50", + "width":"320", + "id":"148502", + "type":"ios", + "class":"ANAdAdapterBannerMillennialMedia" + }, + { + "param":"", + "height":"50", + "width":"320", + "id":"148502", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.MillennialMediaBanner" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/MillennialMediaInterstitial.json b/tests/Shared/Responses/MillennialMediaInterstitial.json new file mode 100644 index 000000000..8e33c5fb3 --- /dev/null +++ b/tests/Shared/Responses/MillennialMediaInterstitial.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"", + "width":"", + "id":"148502", + "type":"ios", + "class":"ANAdAdapterInterstitialMillennialMedia" + }, + { + "param":"", + "height":"", + "width":"", + "id":"148502", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.MillennialMediaInterstitial" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/MoPubBanner.json b/tests/Shared/Responses/MoPubBanner.json new file mode 100644 index 000000000..60c4f7c94 --- /dev/null +++ b/tests/Shared/Responses/MoPubBanner.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"50", + "width":"320", + "id":"b735fe4e98b0449da95917215cb32268", + "type":"ios", + "class":"ANAdAdapterBannerMoPub" + }, + { + "param":"", + "height":"50", + "width":"320", + "id":"b735fe4e98b0449da95917215cb32268", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.MoPubBanner" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/MoPubInterstitial.json b/tests/Shared/Responses/MoPubInterstitial.json new file mode 100644 index 000000000..e3f06f110 --- /dev/null +++ b/tests/Shared/Responses/MoPubInterstitial.json @@ -0,0 +1,32 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"", + "width":"", + "id":"783ac4a38cc44144b3f62b9b89ca85b4", + "type":"ios", + "class":"ANAdAdapterInterstitialMoPub" + }, + { + "param":"", + "height":"", + "width":"", + "id":"783ac4a38cc44144b3f62b9b89ca85b4", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.MoPubInterstitial" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/SuccessfulMRAIDListenerResponse.json b/tests/Shared/Responses/SuccessfulMRAIDListenerResponse.json new file mode 100644 index 000000000..3552dc2c4 --- /dev/null +++ b/tests/Shared/Responses/SuccessfulMRAIDListenerResponse.json @@ -0,0 +1,11 @@ +{ + "status":"ok", + "ads":[ + { + "type":"banner", + "width":320, + "height":50, + "content":"var testWidth=0; var testHeight=0; var testState='none'; var testReadyDidFire=false; var testIsViewable = false; var testErrorMessage = ''; var testErrorAction = ''; mraid.addEventListener('ready', onReady); function onReady() {var dp = mraid.getDefaultPosition(); testWidth=dp.width; testHeight=dp.height; testReadyDidFire=true;}; mraid.addEventListener('sizeChange', onSizeChange); function onSizeChange(width, height) {testWidth=width;testHeight=height}; mraid.addEventListener('stateChange', onStateChange); function onStateChange(state) {testState=state}; mraid.addEventListener('viewableChange', isViewable); function isViewable(v) {testIsViewable=v}; mraid.addEventListener('error', onError); function onError(message, action) {testErrorMessage=message; testErrorAction=action;};" + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/SuccessfulMRAIDResponse.json b/tests/Shared/Responses/SuccessfulMRAIDResponse.json new file mode 100644 index 000000000..875bc87eb --- /dev/null +++ b/tests/Shared/Responses/SuccessfulMRAIDResponse.json @@ -0,0 +1,11 @@ +{ + "status":"ok", + "ads":[ + { + "type":"banner", + "width":320, + "height":50, + "content":"" + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/SuccessfulMediationResponse.json b/tests/Shared/Responses/SuccessfulMediationResponse.json new file mode 100644 index 000000000..f494aa8c2 --- /dev/null +++ b/tests/Shared/Responses/SuccessfulMediationResponse.json @@ -0,0 +1,88 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"50", + "width":"320", + "id":"/6925/Shazam_iPhoneAPP/Standard_Banners/My_Tags", + "type":"ios", + "class":"ANAdAdapterBannerDFP" + }, + { + "param":"", + "height":"50", + "width":"320", + "id":"/6925/Shazam_iPhoneAPP/Standard_Banners/My_Tags", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.DFPBanner" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + }, + { + "handler":[ + { + "width":"320", + "height":"50", + "type":"ios", + "class":"ANAdAdapterBannerMillennialMedia", + "id":"148502" + }, + { + "width":"320", + "height":"50", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.MillennialMediaBanner", + "id":"148502" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAEZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAEZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAEZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + }, + { + "handler":[ + { + "width":"320", + "height":"50", + "type":"ios", + "class":"ANAdAdapterBannerAdMob", + "id":"ca-app-pub-5668774179595841/1125462353" + }, + { + "width":"320", + "height":"50", + "type":"android", + "class":"com.appnexus.opensdk.mediatedviews.AdMobBanner", + "id":"ca-app-pub-5668774179595841/1125462353" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAIZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAIZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAIZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + }, + { + "handler":[ + { + "type":"ios", + "class":"ANAdAdapterBanneriAd" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAMZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/continue?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAMZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAMZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/iAdBanner.json b/tests/Shared/Responses/iAdBanner.json new file mode 100644 index 000000000..4d5a09b8b --- /dev/null +++ b/tests/Shared/Responses/iAdBanner.json @@ -0,0 +1,24 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"50", + "width":"320", + "id":"", + "type":"ios", + "class":"ANAdAdapterBanneriAd" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Responses/iAdInterstitial.json b/tests/Shared/Responses/iAdInterstitial.json new file mode 100644 index 000000000..286868e55 --- /dev/null +++ b/tests/Shared/Responses/iAdInterstitial.json @@ -0,0 +1,24 @@ +{ + "status":"ok", + "ads":[ + + ], + "mediated":[ + { + "handler":[ + { + "param":"", + "height":"", + "width":"", + "id":"", + "type":"ios", + "class":"ANAdAdapterInterstitialiAd" + } + ], + "init_cb":"http://nym1.mobile.adnxs.com/mediation/log_req?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "result_cb":"http://nym1.mobile.adnxs.com/mediation/log_resp?session=CrwSCsYCCBAQ9AMYBSABKAExAAAAAAAAWUA5AAAAAAAAWUBBAAAAAAAAWUBJAAAAAAAAWUBqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnalNtUDRCRUpDVTRBY1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBQUFBQUZsQXdRRUFBQUFBQUFCWlFNa0JoLTlSZ3d3SDh6X1pBUUFBQUFBQUFQQV80QUVBmgE6dWYoJ2EnLCAzMzk3NzksIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYyNTU1MDQsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZCU4Ae4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7gIIDBD0AxgFIAEoATH479nm4YLjPzn479nm4YLjP0H479nm4YLjP0n479nm4YLjP2odIXNnYUlQZ2lPenZvQkVLdkIwd2NZOUxnVUlBUS5yAHqZASFqU3JydGdpT3p2b0JFS3ZCMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QWZqdjJlYmhndU1fd1FINDc5bm00WUxqUDhrQi1PX1o1dUdDOHpfWkFRQUFBQUFBQVBBXzRBRUE5UUVQRnh3X4oBAJoBV3VmKCdhJywgMzM2NTU2LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5OTgsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDgyOTksIDE0MDc3ODQ4NjkpO6ABAqgBghKwAavB0we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK0QIIDRD0AxgFIAEoATGdqD6_l7jYPzmdqD6_l7jYP0GdqD6_l7jYP0mdqD6_l7jYP2odIXd3WmFRQWpJemZvQkVJMjMwd2NZOUxnVUlBUS5yAHqZASFveWVKR0FqSXpmb0JFSTIzMHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVoyb1ByLVh1Tmdfd1FHZHFENl9sN2pZUDhrQlhGUDNjaV9GOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUcteE1VLYoBAJoBOnVmKCdhJywgMzM2NTU1LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ2OTg5LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGNt9MHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAACuYCCAgQ9AMYBSABKAExclfAv5ltuj85clfAv5ltuj9BclfAv5ltuj9JclfAv5ltuj9qHSFHd2RMUkFqaXpmb0JFTXE0MHdjWTlMZ1VJQVEucgB6kQEhV3lUY1Nnaml6Zm9CRU1xNDB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFYSlh3TC1aYmJvX3dRRnlWOENfbVcyNlA4a0I4OHJUYjFWYThqX1pBUUFBQUFBQUFQQV80QUVBigEAmgFXdWYoJ2EnLCAzMzY1NjIsIDE0MDc3ODQ4NjkpO3VmKCdjJywgNDEwNTk1NCwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjA0NzE3OCwgMTQwNzc4NDg2OSk7oAECqAGCErAByrjTB7gBAMABp-sC0gEDVVNE2QEAAAAAAAAAAArsAggEEOgHGAMgATE65iIUCHi2Pzk65iIUCHi2P0E65iIUCHi2P0k65iIUCHi2P2odIWhRYUVQQWlBenZvQkVKQzkwd2NZOUxnVUlBUS5yAHqZASFzeU94ZkFpQXp2b0JFSkM5MHdjWUFDRDB1QlF3QURnQVFBUklnaEpRbDdSOVdBQmd4d05vQUhBQWVBQ0FBUUNJQVFDUUFRR1lBUUdnQVFHb0FRT3dBUUM1QVRybUloUUllTFlfd1FFNjVpSVVDSGkyUDhrQjBxXzVGTE5uOXpfWkFRQUFBQUFBQVBBXzRBRUE5UUZCd0xNOYoBAJoBV3VmKCdhJywgMzM2NTY0LCAxNDA3Nzg0ODY5KTt1ZignYycsIDQxMDU5ODQsIDE0MDc3ODQ4NjkpO3VmKCdyJywgMTYwNDc3NjAsIDE0MDc3ODQ4NjkpO6ABAqgBghKwAZC90we4AQDAAafrAtIBA1VTRNkBAAAAAAAAAAAK7AIIFRDoBxgGIAEx2EPf38IVrj852EPf38IVrj9B2EPf38IVrj9J2EPf38IVrj9qHSFFUWN3UkFqeHpmb0JFSy02MHdjWTlMZ1VJQVEucgB6mQEheENjYVRnanh6Zm9CRUstNjB3Y1lBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFkaEQzOV9DRmE0X3dRSFlROV9md2hXdVA4a0JaNHJyeTVuTjhqX1pBUUFBQUFBQUFQQV80QUVBOVFFWHJuQTmKAQCaAVd1ZignYScsIDMzNjU2NSwgMTQwNzc4NDg2OSk7dWYoJ2MnLCA0MTA1OTY5LCAxNDA3Nzg0ODY5KTt1ZigncicsIDE2MDQ3NDA3LCAxNDA3Nzg0ODY5KTugAQKoAYISsAGvutMHuAEAwAGn6wLSAQNVU0TZAQAAAAAAAAAAEAAZAAAAAAAAAAAqrAFBQUFBQUFBQVdVQUFBQUFBQUFCWlFBQUFBQUFBQUZsQUFBQUFBQUFBV1VBQUFBQUFBQUJaUUFSWDNFNkhzcXNFZjd0dDRUQjlOaktsRi1sVEFBQUFBQmRhSHdBQ0NRQUFBZ2tBQUFJQUFBQVFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RQUFBQUEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyAxMF85XzQgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsIGxpa2UgR2Vja28pIE1vYmlsZS8xMkE0MzQ1ZFClr6SfBWICZW5qCTI4NDk5MzQ1OXABiAEBkAEBoAEBqAEasAGtArgBAcABDNABANoBuQNpZD0yMDU0Njc5JmlkZmE9MDY2QTU2NEMtNjFCMS00N0JCLUE5QTItRkJCNTUwOUU1MDM4JmRldm1ha2U9QXBwbGUmZGV2bW9kZWw9eDg2XzY0JmFwcGlkPWNvbS5hcHBuZXh1cy5BcHBOZXh1c1NES0FwcCZmaXJzdGxhdW5jaD10cnVlJnVhPU1vemlsbGElMkY1LjAlMjAlMjhpUGhvbmUlM0IlMjBDUFUlMjBpUGhvbmUlMjBPUyUyMDEwXzlfNCUyMGxpa2UlMjBNYWMlMjBPUyUyMFglMjklMjBBcHBsZVdlYktpdCUyRjYwMC4xLjMlMjAlMjhLSFRNTCUyQyUyMGxpa2UlMjBHZWNrbyUyOSUyME1vYmlsZSUyRjEyQTQzNDVkJmNvbm5lY3Rpb25fdHlwZT13aWZpJmRldnRpbWU9MTQwNzc4NDg2OSZsYW5ndWFnZT1lbiZuYXRpdmVfYnJvd3Nlcj0wJnBzYT0xJm5vbmV0PSZmb3JtYXQ9anNvbiZzdD1tb2JpbGVfYXBwJnNka3Zlcj0xLjE5JnNpemU9MzIweDUwJm9yaWVudGF0aW9uPXbqASkIARAaGK0CKAwwATgIQABKDgjgAxDAAhgBIgQIABAAUAJYAWClr6SfBfIBOQoCVVMSAk5ZGghOZXcgWW9yayj1AzIQDXHbIkIVEgOUwhgAIAAoAToQDQAAAAAVAAAAABgAIAAoAA..", + "post_data":"wqT_3QKuGEgKvBIKxgIIEBD0AxgFIAEoATEABQEIWUA5BQgMAFlAQREJAEkRCahqHSFpUWFKUFFqU21QNEJFSkNVNEFjWTlMZ1VJQVEucgB6kQEhSFJ0ckJnNiIA8EhBQ0QwdUJRd0FEZ0FRQVJJZ2hKUWw3UjlXQUJneHdOb0FIQUFlQUNBQVFDSUFRQ1FBUUdZQVFHZ0FRR29BUU93QVFDNUFRQUFBAQIURmxBd1FFAQpUQUFBQlpRTWtCaC05Umd3d0g4el9aQREo2FBBXzRBRUGaATp1ZignYScsIDMzOTc3OSwgMTQwNzc4NDg2OSk7dWYoJ3InLCAxNjI1NTUwNCwyHgBwoAECqAGCErABkJTgB7gBAMABp-sC0gEDVVNE2QEpFxgAAAruAggMOUkg-O_Z5uGC4z85EQkAQREJAEkRCVBqHSFzZ2FJUGdpT3p2b0JFS3ZCMHcySQEcmQEhalNycnQ6IgD-SQElSYhmanYyZWJoZ3VNX3dRSDQ3OW5tNFlMalA4a0ItT19aNXVHQ05JATQ5UUVQRnh3X4oBAJoBVzlUDDY1NTZGVAEoYycsIDQxMDU5OThGHQAAciVxEDA0ODI5Oo8BNXEIq8HTZnEBDNECCA05cSCdqD6_l7jYPzkRCQBBEQkASREJSGodIXd3WmFRQWpJemZvQkVJMjNGcQEQb3llSkc6IgD-cQElcVhaMm9Qci1YdU5nX3dRR2RxRDZfbDdqWSFxIFhGUDNjaV9GOUq6Ahw5UUcteE1VLSVxXcUMNjU1NWZUAQg2OTheVAEEjbdqVAEM5gIICDlUIHJXwL-Zbbo_OREJAEERCQBJEQkoah0hR3dkTFJBamklVAhNcTQ6VAEgkQEhV3lUY1NnNiIA_lQBJVRYWEpYd0wtWmJib193UUZ5VjhDX21XMjYhVCQ4OHJUYjFWYThqRg4EJUwyvQIENjJGTAFVvQA1OhAEQfZRvQg3MTc62wJVvQTKuGppAVDsAggEEOgHGAMgATE65iIUCHi2PzkRCQBBEQkASREJKGodIWhRYUVQQWlBhSwISkM5OmcBHJkBIXN5T3hmOiIA_mcBJWdYVHJtSWhRSWVMWV93UUU2NWlJVUNIaTIhZxwwcV81RkxObla7AhRGQndMTTlKbwFKUgE1bwA4Sh0ANW8INzYwNqoBNW8EkL12bwEAFSFvMAYgATHYQ9_fwhWuPzkRCQBBEQkASREJKGodIUVRY3dSQWp4RdYISy02Rm8BFHhDY2FUZzYiAP5vASVvJGRoRDM5X0NGYTShmyBZUTlfZndoV3UhbxxaNHJyeTVuTk7WAhg5UUVYcm5BTm8BSioENW8ANjopBDLeAgg0MDdabwEEr7pmbwEIEAAZ8RcIKqwB4aIBAQRXVQEGAQEEQlrxn-HIEQE2IABkUlgzRTZIc3FzRWY3dHQ0VEI5TmpLbEYtbFQFMBxCZGFId0FDQwFJFGdrQUFBSQEX6FFDdmdBZEJ3RkFBWUFBUUJWVTBRQVZWTkVBRUFCTWdDVnd3QUFwN1VHQlFRQUFRSUFBSXdBOHhOYV9RAT_wckEumgEcaHR0cDovL2FwcHMubW9iaWxlLmFkbnhzLmNvbaABlLsNqAHs8hGwAf0IEICHpw4YuoHHqPeLwAIguojutveLwAIyDzIwNy4yMzcuMTUwLjI0NjpwTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGkFDEggT1MgMTBfOV80IGxpa2UgTWFjARN0WCkgQXBwbGVXZWJLaXQvNjAwLjEuMyAoS0hUTUwsCSscR2Vja28pIE0FqfD4LzEyQTQzNDVkUKWvpJ8FYgJlbmoJMjg0OTkzNDU5cAGIAQGQAQGgAQGoARqwAa0CuAEBwAEM0AEA2gG5A2lkPTIwNTQ2NzkmaWRmYT0wNjZBNTY0Qy02MUIxLTQ3QkItQTlBMi1GQkI1NTA5RTUwMzgmZGV2bWFrZT1BcHBsZSZkZXZtb2RlbD14ODZfNjQmYXBwaWQ9Y29tLmFwcG5leHVzLkFwcE5leHVzU0RLQXBwJmZpcnN0bGF1bmNoPXRydWUmdWE9TW96aWxsYSUyRjUuMCUyMCUyOGlQaG9uZSUzQiUyMENQVSUyMGlQaG9uZSUyME9TJTIwKT0IJTIwIT8UJTIwTWFjERsYWCUyOSUyMD1JCCUyRi1LBCUyAV0lTwglMkMZPyVVCTgpWQglMkYxW1AmY29ubmVjdGlvbl90eXBlPXdpZmkB-hR0aW1lPTEiVQroJmxhbmd1YWdlPWVuJm5hdGl2ZV9icm93c2VyPTAmcHNhPTEmbm9uZXQ9JmZvcm1hdD1qc29uJnN0PW0lzPBQX2FwcCZzZGt2ZXI9MS4xOSZzaXplPTMyMHg1MCZvcmllbnRhdGlvbj126gEpCAEQGhitAigMMAE4CEAASg4I4AMQwAIYASIECAAQAFACWAFgRRPs8gE5CgJVUxICTlkaCE5ldyBZb3JrKPUDMhANcdsiQhUSA5TCGAAgACgBOhANAAAAABUAAAAAGAAgACgA", + "timeout_ms":500 + } + ] +} \ No newline at end of file diff --git a/tests/Shared/Stubbing/ANHTTPStubURLProtocol.h b/tests/Shared/Stubbing/ANHTTPStubURLProtocol.h new file mode 100644 index 000000000..a728083f2 --- /dev/null +++ b/tests/Shared/Stubbing/ANHTTPStubURLProtocol.h @@ -0,0 +1,20 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface ANHTTPStubURLProtocol : NSURLProtocol + +@end \ No newline at end of file diff --git a/tests/Shared/Stubbing/ANHTTPStubURLProtocol.m b/tests/Shared/Stubbing/ANHTTPStubURLProtocol.m new file mode 100644 index 000000000..83defc67a --- /dev/null +++ b/tests/Shared/Stubbing/ANHTTPStubURLProtocol.m @@ -0,0 +1,92 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANHTTPStubURLProtocol.h" +#import "ANHTTPStubbingManager.h" + +static NSString *const kANTestHTTPStubURLProtocolExceptionKey = @"ANTestHTTPStubURLProtocolException"; + +@implementation ANHTTPStubURLProtocol + ++ (BOOL)canInitWithRequest:(NSURLRequest *)request { + BOOL isHttpOrHttps = [request.URL.scheme isEqualToString:@"http"] || [request.URL.scheme isEqualToString:@"https"]; + if (!isHttpOrHttps) { + return NO; + } + BOOL ignoreUnstubbedRequests = [ANHTTPStubbingManager sharedStubbingManager].ignoreUnstubbedRequests; + if (ignoreUnstubbedRequests) { + ANURLConnectionStub *stub = [[ANHTTPStubbingManager sharedStubbingManager] stubForURLString:request.URL.absoluteString]; + return (stub != nil); + } else { + return YES; + } +} + ++ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { + return request; +} + ++ (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b { + return NO; +} + +- (void)startLoading { + id client = self.client; + ANURLConnectionStub *stub = [self stubForRequest]; + if (stub) { + NSURLResponse *response = [self buildResponseForRequestUsingStub:stub]; + [client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed]; + NSData *responseData = [self buildDataForRequestUsingStub:stub]; + [client URLProtocol:self didLoadData:responseData]; + [client URLProtocolDidFinishLoading:self]; + NSLog(@"Successfully loaded request from stub: %@", [self request]); + } else { + NSLog(@"Could not load request successfully: %@", [self request]); + NSLog(@"This can happen if the request was not stubbed, or if the stubs were removed before this request was completed (due to asynchronous request loading)."); + [client URLProtocol:self didFailWithError:[NSError errorWithDomain:kANTestHTTPStubURLProtocolExceptionKey + code:1 + userInfo:nil]]; + } +} + +- (void)stopLoading { + // Do nothing, but method is required. +} + +#pragma mark - Stubbing + +- (ANURLConnectionStub *)stubForRequest { + return [[ANHTTPStubbingManager sharedStubbingManager] stubForURLString:self.request.URL.absoluteString]; +} + + +- (NSURLResponse *)buildResponseForRequestUsingStub:(ANURLConnectionStub *)stub { + NSHTTPURLResponse *httpResponse = [[NSHTTPURLResponse alloc] initWithURL:[[self request] URL] + statusCode:stub.responseCode + HTTPVersion:@"HTTP/1.1" + headerFields:@{}]; + return httpResponse; +} + +- (NSData *)buildDataForRequestUsingStub:(ANURLConnectionStub *)stub { + if ([stub.responseBody isKindOfClass:[NSString class]]) { + return [stub.responseBody dataUsingEncoding:NSUTF8StringEncoding]; + } else if ([stub.responseBody isKindOfClass:[NSData class]]) { + return stub.responseBody; + } + return nil; +} + +@end diff --git a/tests/Shared/Stubbing/ANHTTPStubbingManager.h b/tests/Shared/Stubbing/ANHTTPStubbingManager.h new file mode 100644 index 000000000..425910ec1 --- /dev/null +++ b/tests/Shared/Stubbing/ANHTTPStubbingManager.h @@ -0,0 +1,38 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANHTTPStubURLProtocol.h" +#import "ANURLConnectionStub.h" + +@interface ANHTTPStubbingManager : NSObject + ++ (ANHTTPStubbingManager *)sharedStubbingManager; + +- (void)enable; +- (void)disable; + +- (void)addStub:(ANURLConnectionStub *)stub; +- (void)addStubs:(NSArray *)stubs; +- (void)removeAllStubs; + +- (ANURLConnectionStub *)stubForURLString:(NSString *)URLString; + +/** + If set to YES, then unstubbed requests will be ignored by this class and handled by the system. + If set to NO (default), then unstubbed requests will result in didFailToLoad errors. + */ +@property (nonatomic) BOOL ignoreUnstubbedRequests; + +@end \ No newline at end of file diff --git a/tests/Shared/Stubbing/ANHTTPStubbingManager.m b/tests/Shared/Stubbing/ANHTTPStubbingManager.m new file mode 100644 index 000000000..35bfabc24 --- /dev/null +++ b/tests/Shared/Stubbing/ANHTTPStubbingManager.m @@ -0,0 +1,81 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANHTTPStubbingManager.h" +#import "ANHTTPStubURLProtocol.h" + +@interface ANHTTPStubbingManager() +@property (nonatomic) NSMutableArray *stubs; +@end + +@implementation ANHTTPStubbingManager + ++ (ANHTTPStubbingManager *)sharedStubbingManager { + static dispatch_once_t sharedStubbingManagerToken; + static ANHTTPStubbingManager *manager; + dispatch_once(&sharedStubbingManagerToken, ^{ + manager = [[ANHTTPStubbingManager alloc] init]; + }); + return manager; +} + +- (void)enable { + [NSURLProtocol registerClass:[ANHTTPStubURLProtocol class]]; +} + +- (void)disable { + [NSURLProtocol unregisterClass:[ANHTTPStubURLProtocol class]]; +} + +- (void)addStub:(ANURLConnectionStub *)stub { + [self.stubs addObject:stub]; +} + +- (void)addStubs:(NSArray *)stubs { + [self.stubs addObjectsFromArray:stubs]; +} + +- (void)removeAllStubs { + [self.stubs removeAllObjects]; +} + +- (NSMutableArray *)stubs { + @synchronized(self) { + if (!_stubs) _stubs = [[NSMutableArray alloc] init]; + return _stubs; + } +} + +- (ANURLConnectionStub *)stubForURLString:(NSString *)URLString { + NSString *requestURLString = URLString; + NSArray *stubArray = self.stubs; + __block ANURLConnectionStub *stubMatch = nil; + [stubArray enumerateObjectsUsingBlock:^(ANURLConnectionStub *stub, NSUInteger idx, BOOL *stop) { + NSString *stubRequestURLString = stub.requestURLRegexPatternString; + NSError *error; + NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:stubRequestURLString + options:NSRegularExpressionDotMatchesLineSeparators + error:&error]; + if ([regex numberOfMatchesInString:requestURLString + options:0 + range:NSMakeRange(0, [requestURLString length])]) { + stubMatch = stub; + *stop = YES; + } + }]; + return stubMatch; +} + +@end \ No newline at end of file diff --git a/tests/Shared/Stubbing/ANURLConnectionStub.h b/tests/Shared/Stubbing/ANURLConnectionStub.h new file mode 100644 index 000000000..45f6d5b1f --- /dev/null +++ b/tests/Shared/Stubbing/ANURLConnectionStub.h @@ -0,0 +1,42 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import + +@interface ANURLConnectionStub : NSObject + +@property (nonatomic, readwrite, strong) NSString *requestURLRegexPatternString; +@property (nonatomic, readwrite, assign) NSInteger responseCode; +@property (nonatomic, readwrite, strong) id responseBody; //can be nsstring or nsdata + ++ (ANURLConnectionStub *)stubForStandardBannerWithAdSize:(CGSize)adSize + content:(NSString *)content; ++ (ANURLConnectionStub *)stubForStandardBannerWithAdSize:(CGSize)adSize + contentFromResource:(NSString *)resource + ofType:(NSString *)type; + ++ (ANURLConnectionStub *)stubForResource:(NSString *)resource + ofType:(NSString *)type; ++ (ANURLConnectionStub *)stubForResource:(NSString *)resource + ofType:(NSString *)type + withRequestURLRegexPatternString:(NSString *)pattern; ++ (ANURLConnectionStub *)stubForResource:(NSString *)resource + ofType:(NSString *)type + withRequestURLRegexPatternString:(NSString *)pattern + inBundle:(NSBundle *)bundle; + ++ (ANURLConnectionStub *)stubForMraidFile; + +@end \ No newline at end of file diff --git a/tests/Shared/Stubbing/ANURLConnectionStub.m b/tests/Shared/Stubbing/ANURLConnectionStub.m new file mode 100644 index 000000000..d8e9c4d52 --- /dev/null +++ b/tests/Shared/Stubbing/ANURLConnectionStub.m @@ -0,0 +1,137 @@ +/* Copyright 2014 APPNEXUS INC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + */ + +#import "ANURLConnectionStub.h" +#import "ANGlobal.h" + +@implementation ANURLConnectionStub + +- (id)copyWithZone:(NSZone *)zone { + ANURLConnectionStub *newStub = [[ANURLConnectionStub alloc] init]; + newStub.requestURLRegexPatternString = self.requestURLRegexPatternString; + newStub.responseCode = self.responseCode; + newStub.responseBody = self.responseBody; + return newStub; +} + +- (BOOL)isEqual:(ANURLConnectionStub *)object { + BOOL sameRequestURLString = [self.requestURLRegexPatternString isEqualToString:object.requestURLRegexPatternString]; + BOOL sameResponseCode = self.responseCode = object.responseCode; + BOOL sameResponseBody = [self.responseBody isEqualToString:object.responseBody]; + return sameRequestURLString && sameResponseBody && sameResponseCode; +} + +- (NSUInteger)hash { + NSMutableString *description = [[NSMutableString alloc] init]; + [description appendString:self.requestURLRegexPatternString]; + [description appendString:[NSString stringWithFormat:@"%ld", (long)self.responseCode]]; + [description appendString:self.responseBody]; + return [description hash]; +} + +- (NSString *)description { + return [NSString stringWithFormat:@"NSURLConnectionStub: \n\ + Request URL Pattern: %@,\n\ + Response Code: %ld,\n\ + Response Body: %@",self.requestURLRegexPatternString, (long)self.responseCode, self.responseBody]; + +} + +#pragma mark - Pre-Initialized Stubbers + ++ (ANURLConnectionStub *)stubForStandardBannerWithAdSize:(CGSize)adSize + contentFromResource:(NSString *)resource + ofType:(NSString *)type { + NSString *filePath = [[NSBundle mainBundle] pathForResource:resource + ofType:type]; + NSString *content = [[NSString alloc] initWithContentsOfFile:filePath + encoding:NSUTF8StringEncoding + error:nil]; + return [ANURLConnectionStub stubForStandardBannerWithAdSize:adSize + content:content]; +} + ++ (ANURLConnectionStub *)stubForStandardBannerWithAdSize:(CGSize)adSize + content:(NSString *)content { + ANURLConnectionStub *stub = [[ANURLConnectionStub alloc] init]; + stub.requestURLRegexPatternString = [NSString stringWithFormat:@"http://%@\\?", AN_MOBILE_HOSTNAME]; + stub.responseCode = 200; + stub.responseBody = [NSJSONSerialization dataWithJSONObject:[[self class] responseForStandardBannerWithAdSize:adSize + content:content] + options:0 + error:nil]; + return stub; +} + ++ (ANURLConnectionStub *)stubForMraidFile { + ANURLConnectionStub *stub = [[ANURLConnectionStub alloc] init]; + stub.requestURLRegexPatternString = [AN_BASE_URL stringByAppendingString:@"mraid.js"]; + stub.responseBody = @""; + stub.responseCode = 200; + return stub; +} + ++ (ANURLConnectionStub *)stubForResource:(NSString *)resource + ofType:(NSString *)type { + return [ANURLConnectionStub stubForResource:resource + ofType:type + withRequestURLRegexPatternString:resource + inBundle:[NSBundle mainBundle]]; +} + ++ (ANURLConnectionStub *)stubForResource:(NSString *)resource + ofType:(NSString *)type + withRequestURLRegexPatternString:(NSString *)pattern { + return [ANURLConnectionStub stubForResource:resource + ofType:type + withRequestURLRegexPatternString:pattern + inBundle:[NSBundle mainBundle]]; +} + ++ (ANURLConnectionStub *)stubForResource:(NSString *)resource + ofType:(NSString *)type + withRequestURLRegexPatternString:(NSString *)pattern + inBundle:(NSBundle *)bundle { + ANURLConnectionStub *stub = [[ANURLConnectionStub alloc] init]; + stub.responseCode = 200; + stub.requestURLRegexPatternString = pattern; + stub.responseBody = [NSData dataWithContentsOfFile:[bundle pathForResource:resource + ofType:type]]; + return stub; +} + ++ (NSDictionary *)responseForStandardBannerWithAdSize:(CGSize)adSize + content:(NSString *)content { + NSMutableDictionary *response = [[NSMutableDictionary alloc] init]; + response[@"status"] = @"ok"; + NSDictionary *adElement = [[self class] adElementForAdType:@"banner" + adSize:adSize + content:content]; + response[@"ads"] = @[adElement]; + return [response copy]; +} + ++ (NSDictionary *)adElementForAdType:(NSString *)type + adSize:(CGSize)adSize + content:(NSString *)content { + NSMutableDictionary *adElement = [[NSMutableDictionary alloc] init]; + adElement[@"type"] = type; + adElement[@"width"] = [@(adSize.width) description]; + adElement[@"height"] = [@(adSize.height) description]; + adElement[@"content"] = content; + return [adElement copy]; +} + +@end \ No newline at end of file diff --git a/tests/Tests.xcodeproj/project.pbxproj b/tests/Tests.xcodeproj/project.pbxproj index c391374f8..8d13bf5ff 100755 --- a/tests/Tests.xcodeproj/project.pbxproj +++ b/tests/Tests.xcodeproj/project.pbxproj @@ -8,20 +8,11 @@ /* Begin PBXBuildFile section */ 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AppDelegate.m */; }; - 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD733E0D9D9553002E5188 /* MainWindow.xib */; }; 5C199BDE178F47DF0062A257 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C199BDD178F47DF0062A257 /* CoreLocation.framework */; }; - 5C3208F5173053D700DAB5CF /* MainWindow-iPad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5C3208F4173053D700DAB5CF /* MainWindow-iPad.xib */; }; 5C3208F7173053FE00DAB5CF /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5C3208F6173053FE00DAB5CF /* Default-568h@2x.png */; }; - 5C3208FB173061C700DAB5CF /* ANDemoAdsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C3208F9173061C700DAB5CF /* ANDemoAdsViewController.m */; }; - 5C3208FC173061C700DAB5CF /* ANDemoAdsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5C3208FA173061C700DAB5CF /* ANDemoAdsViewController.xib */; }; - 5C3209001730664500DAB5CF /* RootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C3208FE1730664500DAB5CF /* RootViewController.m */; }; - 5C3209011730664500DAB5CF /* RootViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5C3208FF1730664500DAB5CF /* RootViewController.xib */; }; - 5C320905173090F300DAB5CF /* ANDemoConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C320903173090F300DAB5CF /* ANDemoConsoleViewController.m */; }; - 5C320906173090F300DAB5CF /* ANDemoConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5C320904173090F300DAB5CF /* ANDemoConsoleViewController.xib */; }; 5C8729401742E04000662716 /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C87293F1742E04000662716 /* MessageUI.framework */; }; 5CA6D41A17A8686C00DD6891 /* iAd.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CA6D41917A8686C00DD6891 /* iAd.framework */; }; 5CA6D4BA17A9883900DD6891 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CA6D4B917A9883900DD6891 /* AudioToolbox.framework */; }; @@ -33,29 +24,19 @@ 8A13B6A119492A9F006CFC9C /* ANClickOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A13B6A019492A9F006CFC9C /* ANClickOverlayView.m */; }; 8A3C4098189705500070F145 /* MRAIDTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3C4095189705500070F145 /* MRAIDTests.m */; }; 8A3C409C18970AFC0070F145 /* ANMRAIDTestResponses.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3C409918970AFC0070F145 /* ANMRAIDTestResponses.m */; }; + 8A3EC17219B8FF3A0049CD29 /* ANMRAID.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 8A3EC17119B8FF3A0049CD29 /* ANMRAID.bundle */; }; + 8A3EC17519B8FF490049CD29 /* ANBannerAdView+ANContentViewTransitions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A3EC17419B8FF490049CD29 /* ANBannerAdView+ANContentViewTransitions.m */; }; + 8A5BBBF019BF8B6800A7C84C /* ANURLConnectionStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A5BBBEF19BF8B6800A7C84C /* ANURLConnectionStub.m */; }; + 8A5BBBF119BF8B6C00A7C84C /* ANHTTPStubURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 8ABAF7B719BF491A00CA4183 /* ANHTTPStubURLProtocol.m */; }; + 8A5BBBF419BFA70C00A7C84C /* TestsStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8A5BBBF319BFA70C00A7C84C /* TestsStoryboard.storyboard */; }; + 8A5BBBF619BFA86600A7C84C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A5BBBF519BFA86600A7C84C /* main.m */; }; + 8A5BBBF919BFAB3400A7C84C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A5BBBF819BFAB3400A7C84C /* ViewController.m */; }; + 8A67DC2E19C346A00097A288 /* ANPBContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A67DC2D19C346A00097A288 /* ANPBContainerView.m */; }; + 8A7E79CC19BE0F80002C17A8 /* ANMediationContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A7E79C919BE0F80002C17A8 /* ANMediationContainerView.m */; }; + 8A7E79D019BE0F9C002C17A8 /* appnexus_logo_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A7E79CE19BE0F9C002C17A8 /* appnexus_logo_icon.png */; }; + 8A7E79D119BE0F9C002C17A8 /* appnexus_logo_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8A7E79CF19BE0F9C002C17A8 /* appnexus_logo_icon@2x.png */; }; + 8AA80F9019CA3779000007FC /* ANHTTPStubbingManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA80F8E19CA36E6000007FC /* ANHTTPStubbingManager.m */; }; EC09B2B31834350E00D76510 /* BasicTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2B21834350E00D76510 /* BasicTests.m */; }; - EC09B2F8183437CC00D76510 /* NSData+Nocilla.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2601834340200D76510 /* NSData+Nocilla.m */; }; - EC09B2FA183437CC00D76510 /* NSString+Nocilla.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2621834340200D76510 /* NSString+Nocilla.m */; }; - EC09B2FC183437CC00D76510 /* LSHTTPRequestDiff.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2651834340200D76510 /* LSHTTPRequestDiff.m */; }; - EC09B2FF183437CC00D76510 /* LSHTTPRequestDSLRepresentation.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2691834340200D76510 /* LSHTTPRequestDSLRepresentation.m */; }; - EC09B301183437CC00D76510 /* LSStubRequestDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B26B1834340200D76510 /* LSStubRequestDSL.m */; }; - EC09B303183437CC00D76510 /* LSStubResponseDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B26D1834340200D76510 /* LSStubResponseDSL.m */; }; - EC09B305183437CC00D76510 /* ASIHTTPRequestStub.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2711834340200D76510 /* ASIHTTPRequestStub.m */; }; - EC09B307183437CC00D76510 /* LSASIHTTPRequestAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2731834340200D76510 /* LSASIHTTPRequestAdapter.m */; }; - EC09B309183437CC00D76510 /* LSASIHTTPRequestHook.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2751834340200D76510 /* LSASIHTTPRequestHook.m */; }; - EC09B30B183437CC00D76510 /* LSHTTPClientHook.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2771834340200D76510 /* LSHTTPClientHook.m */; }; - EC09B30D183437CC00D76510 /* LSHTTPStubURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B27A1834340200D76510 /* LSHTTPStubURLProtocol.m */; }; - EC09B30F183437CC00D76510 /* LSNSURLHook.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B27C1834340200D76510 /* LSNSURLHook.m */; }; - EC09B311183437CC00D76510 /* NSURLRequest+DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B27E1834340200D76510 /* NSURLRequest+DSL.m */; }; - EC09B313183437CC00D76510 /* NSURLRequest+LSHTTPRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2801834340200D76510 /* NSURLRequest+LSHTTPRequest.m */; }; - EC09B315183437CC00D76510 /* LSNocilla.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2821834340200D76510 /* LSNocilla.m */; }; - EC09B318183437CC00D76510 /* LSMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2861834340200D76510 /* LSMatcher.m */; }; - EC09B31A183437CC00D76510 /* LSRegexMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2881834340200D76510 /* LSRegexMatcher.m */; }; - EC09B31C183437CC00D76510 /* LSStringMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B28A1834340200D76510 /* LSStringMatcher.m */; }; - EC09B31E183437CC00D76510 /* NSRegularExpression+Matcheable.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B28C1834340200D76510 /* NSRegularExpression+Matcheable.m */; }; - EC09B320183437CC00D76510 /* NSString+Matcheable.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B28E1834340200D76510 /* NSString+Matcheable.m */; }; - EC09B327183437CC00D76510 /* LSStubRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2971834340200D76510 /* LSStubRequest.m */; }; - EC09B329183437CC00D76510 /* LSStubResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = EC09B2991834340200D76510 /* LSStubResponse.m */; }; EC2E96C219103A00001A42EF /* ANANJAMImplementation.m in Sources */ = {isa = PBXBuildFile; fileRef = EC2E96C019103A00001A42EF /* ANANJAMImplementation.m */; }; EC2E96C419103A7D001A42EF /* ANFailAndHitOtherCallbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3640EB184001EC00DB8000 /* ANFailAndHitOtherCallbacks.m */; }; EC2E96C519103A7D001A42EF /* ANSuccessfulBannerNeverCalled.m in Sources */ = {isa = PBXBuildFile; fileRef = EC3640E5183FE45B00DB8000 /* ANSuccessfulBannerNeverCalled.m */; }; @@ -90,7 +71,6 @@ ECABE5921821E4C80037E6C5 /* ANBannerAdView.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABE5621821E4C80037E6C5 /* ANBannerAdView.m */; }; ECABE5931821E4C80037E6C5 /* ANBrowserViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABE5641821E4C80037E6C5 /* ANBrowserViewController.m */; }; ECABE5951821E4C80037E6C5 /* ANGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABE5681821E4C80037E6C5 /* ANGlobal.m */; }; - ECABE5961821E4C80037E6C5 /* ANInstallTrackerPixel.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABE56A1821E4C80037E6C5 /* ANInstallTrackerPixel.m */; }; ECABE5971821E4C80037E6C5 /* ANInterstitialAd.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABE56B1821E4C80037E6C5 /* ANInterstitialAd.m */; }; ECABE5981821E4C80037E6C5 /* ANInterstitialAdViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABE56D1821E4C80037E6C5 /* ANInterstitialAdViewController.m */; }; ECABE59A1821E4C80037E6C5 /* ANLocation.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABE5701821E4C80037E6C5 /* ANLocation.m */; }; @@ -108,13 +88,11 @@ ECABE5A61821E4C80037E6C5 /* UIButtonBarArrowLeft@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = ECABE5831821E4C80037E6C5 /* UIButtonBarArrowLeft@2x.png */; }; ECABE5A71821E4C80037E6C5 /* UIButtonBarArrowRight.png in Resources */ = {isa = PBXBuildFile; fileRef = ECABE5841821E4C80037E6C5 /* UIButtonBarArrowRight.png */; }; ECABE5A81821E4C80037E6C5 /* UIButtonBarArrowRight@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = ECABE5851821E4C80037E6C5 /* UIButtonBarArrowRight@2x.png */; }; - ECABE5A91821E4C80037E6C5 /* MRAID.bundle in Resources */ = {isa = PBXBuildFile; fileRef = ECABE5861821E4C80037E6C5 /* MRAID.bundle */; }; ECABF11B192E5C58006FFFB2 /* ANPBBuffer.m in Sources */ = {isa = PBXBuildFile; fileRef = ECABF119192E5C58006FFFB2 /* ANPBBuffer.m */; }; ECB57A551822C43700FA7441 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CEF6F6F1732F8BC0054A86F /* SystemConfiguration.framework */; }; ECBA78B6187F6D4200F1D73F /* ANTargetingParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = ECBA78B5187F6D4200F1D73F /* ANTargetingParameters.m */; }; ECD929A71822CAD300420840 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = ECD9298B1822CAD300420840 /* InfoPlist.strings */; }; ECD929AA1822CAD300420840 /* TestsTests-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = ECD929901822CAD300420840 /* TestsTests-Info.plist */; }; - ECD929B51822CC1B00420840 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CD8155E17DA64C20046A256 /* SenTestingKit.framework */; }; ECD929B91822CD0E00420840 /* MediationCallbacksTests.m in Sources */ = {isa = PBXBuildFile; fileRef = ECD9298D1822CAD300420840 /* MediationCallbacksTests.m */; }; ECD929BA1822CD0E00420840 /* MediationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = ECD9298F1822CAD300420840 /* MediationTests.m */; }; ECE5B25B184FA4C900D0C8FD /* ANBrowserViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ECE5B259184FA4C900D0C8FD /* ANBrowserViewController.xib */; }; @@ -147,27 +125,14 @@ 1D6058910D05DD3D006BFB54 /* Tests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Tests.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - 28AD733E0D9D9553002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; - 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* Tests_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Tests_Prefix.pch; sourceTree = ""; }; 5C199BDD178F47DF0062A257 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; - 5C3208F4173053D700DAB5CF /* MainWindow-iPad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "MainWindow-iPad.xib"; path = "iPad/MainWindow-iPad.xib"; sourceTree = ""; }; 5C3208F6173053FE00DAB5CF /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; - 5C3208F8173061C700DAB5CF /* ANDemoAdsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANDemoAdsViewController.h; sourceTree = ""; }; - 5C3208F9173061C700DAB5CF /* ANDemoAdsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANDemoAdsViewController.m; sourceTree = ""; }; - 5C3208FA173061C700DAB5CF /* ANDemoAdsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ANDemoAdsViewController.xib; sourceTree = ""; }; - 5C3208FD1730664500DAB5CF /* RootViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RootViewController.h; sourceTree = ""; }; - 5C3208FE1730664500DAB5CF /* RootViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RootViewController.m; sourceTree = ""; }; - 5C3208FF1730664500DAB5CF /* RootViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RootViewController.xib; sourceTree = ""; }; - 5C320902173090F300DAB5CF /* ANDemoConsoleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANDemoConsoleViewController.h; sourceTree = ""; }; - 5C320903173090F300DAB5CF /* ANDemoConsoleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANDemoConsoleViewController.m; sourceTree = ""; }; - 5C320904173090F300DAB5CF /* ANDemoConsoleViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ANDemoConsoleViewController.xib; sourceTree = ""; }; 5C87293F1742E04000662716 /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; 5CA6D41917A8686C00DD6891 /* iAd.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = iAd.framework; path = System/Library/Frameworks/iAd.framework; sourceTree = SDKROOT; }; 5CA6D4B917A9883900DD6891 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 5CA6D4BB17A9884A00DD6891 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; - 5CD8155D17DA64C20046A256 /* TestsTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TestsTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; - 5CD8155E17DA64C20046A256 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 5CD8155D17DA64C20046A256 /* TestsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TestsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 5CEF6F6F1732F8BC0054A86F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 5CEF6F711732F8C00054A86F /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; 5CEF6F751732F8C90054A86F /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; }; @@ -176,58 +141,26 @@ 8A3C4095189705500070F145 /* MRAIDTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MRAIDTests.m; sourceTree = ""; }; 8A3C409918970AFC0070F145 /* ANMRAIDTestResponses.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMRAIDTestResponses.m; sourceTree = ""; }; 8A3C409A18970AFC0070F145 /* ANMRAIDTestResponses.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMRAIDTestResponses.h; sourceTree = ""; }; + 8A3EC17119B8FF3A0049CD29 /* ANMRAID.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = ANMRAID.bundle; sourceTree = ""; }; + 8A3EC17319B8FF490049CD29 /* ANBannerAdView+ANContentViewTransitions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ANBannerAdView+ANContentViewTransitions.h"; sourceTree = ""; }; + 8A3EC17419B8FF490049CD29 /* ANBannerAdView+ANContentViewTransitions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ANBannerAdView+ANContentViewTransitions.m"; sourceTree = ""; }; + 8A5BBBEE19BF8B6800A7C84C /* ANURLConnectionStub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANURLConnectionStub.h; sourceTree = ""; }; + 8A5BBBEF19BF8B6800A7C84C /* ANURLConnectionStub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANURLConnectionStub.m; sourceTree = ""; }; + 8A5BBBF319BFA70C00A7C84C /* TestsStoryboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TestsStoryboard.storyboard; sourceTree = ""; }; + 8A5BBBF519BFA86600A7C84C /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Classes/main.m; sourceTree = ""; }; + 8A5BBBF719BFAB3400A7C84C /* ViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 8A5BBBF819BFAB3400A7C84C /* ViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + 8A67DC2C19C346A00097A288 /* ANPBContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANPBContainerView.h; sourceTree = ""; }; + 8A67DC2D19C346A00097A288 /* ANPBContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPBContainerView.m; sourceTree = ""; }; + 8A7E79C819BE0F80002C17A8 /* ANMediationContainerView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANMediationContainerView.h; sourceTree = ""; }; + 8A7E79C919BE0F80002C17A8 /* ANMediationContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANMediationContainerView.m; sourceTree = ""; }; + 8A7E79CE19BE0F9C002C17A8 /* appnexus_logo_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = appnexus_logo_icon.png; sourceTree = ""; }; + 8A7E79CF19BE0F9C002C17A8 /* appnexus_logo_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "appnexus_logo_icon@2x.png"; sourceTree = ""; }; + 8AA80F8D19CA36E6000007FC /* ANHTTPStubbingManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANHTTPStubbingManager.h; sourceTree = ""; }; + 8AA80F8E19CA36E6000007FC /* ANHTTPStubbingManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANHTTPStubbingManager.m; sourceTree = ""; }; + 8ABAF7B619BF491A00CA4183 /* ANHTTPStubURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANHTTPStubURLProtocol.h; sourceTree = ""; }; + 8ABAF7B719BF491A00CA4183 /* ANHTTPStubURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANHTTPStubURLProtocol.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Tests-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; - EC09B25F1834340200D76510 /* NSData+Nocilla.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Nocilla.h"; sourceTree = ""; }; - EC09B2601834340200D76510 /* NSData+Nocilla.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Nocilla.m"; sourceTree = ""; }; - EC09B2611834340200D76510 /* NSString+Nocilla.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Nocilla.h"; sourceTree = ""; }; - EC09B2621834340200D76510 /* NSString+Nocilla.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Nocilla.m"; sourceTree = ""; }; - EC09B2641834340200D76510 /* LSHTTPRequestDiff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHTTPRequestDiff.h; sourceTree = ""; }; - EC09B2651834340200D76510 /* LSHTTPRequestDiff.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSHTTPRequestDiff.m; sourceTree = ""; }; - EC09B2671834340200D76510 /* DSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DSL.h; sourceTree = ""; }; - EC09B2681834340200D76510 /* LSHTTPRequestDSLRepresentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHTTPRequestDSLRepresentation.h; sourceTree = ""; }; - EC09B2691834340200D76510 /* LSHTTPRequestDSLRepresentation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSHTTPRequestDSLRepresentation.m; sourceTree = ""; }; - EC09B26A1834340200D76510 /* LSStubRequestDSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSStubRequestDSL.h; sourceTree = ""; }; - EC09B26B1834340200D76510 /* LSStubRequestDSL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSStubRequestDSL.m; sourceTree = ""; }; - EC09B26C1834340200D76510 /* LSStubResponseDSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSStubResponseDSL.h; sourceTree = ""; }; - EC09B26D1834340200D76510 /* LSStubResponseDSL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSStubResponseDSL.m; sourceTree = ""; }; - EC09B2701834340200D76510 /* ASIHTTPRequestStub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIHTTPRequestStub.h; sourceTree = ""; }; - EC09B2711834340200D76510 /* ASIHTTPRequestStub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIHTTPRequestStub.m; sourceTree = ""; }; - EC09B2721834340200D76510 /* LSASIHTTPRequestAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSASIHTTPRequestAdapter.h; sourceTree = ""; }; - EC09B2731834340200D76510 /* LSASIHTTPRequestAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSASIHTTPRequestAdapter.m; sourceTree = ""; }; - EC09B2741834340200D76510 /* LSASIHTTPRequestHook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSASIHTTPRequestHook.h; sourceTree = ""; }; - EC09B2751834340200D76510 /* LSASIHTTPRequestHook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSASIHTTPRequestHook.m; sourceTree = ""; }; - EC09B2761834340200D76510 /* LSHTTPClientHook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHTTPClientHook.h; sourceTree = ""; }; - EC09B2771834340200D76510 /* LSHTTPClientHook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSHTTPClientHook.m; sourceTree = ""; }; - EC09B2791834340200D76510 /* LSHTTPStubURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHTTPStubURLProtocol.h; sourceTree = ""; }; - EC09B27A1834340200D76510 /* LSHTTPStubURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSHTTPStubURLProtocol.m; sourceTree = ""; }; - EC09B27B1834340200D76510 /* LSNSURLHook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSNSURLHook.h; sourceTree = ""; }; - EC09B27C1834340200D76510 /* LSNSURLHook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSNSURLHook.m; sourceTree = ""; }; - EC09B27D1834340200D76510 /* NSURLRequest+DSL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURLRequest+DSL.h"; sourceTree = ""; }; - EC09B27E1834340200D76510 /* NSURLRequest+DSL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURLRequest+DSL.m"; sourceTree = ""; }; - EC09B27F1834340200D76510 /* NSURLRequest+LSHTTPRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURLRequest+LSHTTPRequest.h"; sourceTree = ""; }; - EC09B2801834340200D76510 /* NSURLRequest+LSHTTPRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURLRequest+LSHTTPRequest.m"; sourceTree = ""; }; - EC09B2811834340200D76510 /* LSNocilla.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSNocilla.h; sourceTree = ""; }; - EC09B2821834340200D76510 /* LSNocilla.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSNocilla.m; sourceTree = ""; }; - EC09B2841834340200D76510 /* LSMatcheable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSMatcheable.h; sourceTree = ""; }; - EC09B2851834340200D76510 /* LSMatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSMatcher.h; sourceTree = ""; }; - EC09B2861834340200D76510 /* LSMatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSMatcher.m; sourceTree = ""; }; - EC09B2871834340200D76510 /* LSRegexMatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSRegexMatcher.h; sourceTree = ""; }; - EC09B2881834340200D76510 /* LSRegexMatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSRegexMatcher.m; sourceTree = ""; }; - EC09B2891834340200D76510 /* LSStringMatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSStringMatcher.h; sourceTree = ""; }; - EC09B28A1834340200D76510 /* LSStringMatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSStringMatcher.m; sourceTree = ""; }; - EC09B28B1834340200D76510 /* NSRegularExpression+Matcheable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSRegularExpression+Matcheable.h"; sourceTree = ""; }; - EC09B28C1834340200D76510 /* NSRegularExpression+Matcheable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSRegularExpression+Matcheable.m"; sourceTree = ""; }; - EC09B28D1834340200D76510 /* NSString+Matcheable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Matcheable.h"; sourceTree = ""; }; - EC09B28E1834340200D76510 /* NSString+Matcheable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Matcheable.m"; sourceTree = ""; }; - EC09B2901834340200D76510 /* LSHTTPBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHTTPBody.h; sourceTree = ""; }; - EC09B2911834340200D76510 /* LSHTTPRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHTTPRequest.h; sourceTree = ""; }; - EC09B2921834340200D76510 /* LSHTTPResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSHTTPResponse.h; sourceTree = ""; }; - EC09B2931834340200D76510 /* Nocilla-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Nocilla-Prefix.pch"; sourceTree = ""; }; - EC09B2941834340200D76510 /* Nocilla.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Nocilla.h; sourceTree = ""; }; - EC09B2961834340200D76510 /* LSStubRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSStubRequest.h; sourceTree = ""; }; - EC09B2971834340200D76510 /* LSStubRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSStubRequest.m; sourceTree = ""; }; - EC09B2981834340200D76510 /* LSStubResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LSStubResponse.h; sourceTree = ""; }; - EC09B2991834340200D76510 /* LSStubResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LSStubResponse.m; sourceTree = ""; }; EC09B2B21834350E00D76510 /* BasicTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BasicTests.m; sourceTree = ""; }; EC2E96BF19103A00001A42EF /* ANANJAMImplementation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANANJAMImplementation.h; sourceTree = ""; }; EC2E96C019103A00001A42EF /* ANANJAMImplementation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANANJAMImplementation.m; sourceTree = ""; }; @@ -276,8 +209,6 @@ ECABE5641821E4C80037E6C5 /* ANBrowserViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANBrowserViewController.m; sourceTree = ""; }; ECABE5671821E4C80037E6C5 /* ANGlobal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGlobal.h; sourceTree = ""; }; ECABE5681821E4C80037E6C5 /* ANGlobal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANGlobal.m; sourceTree = ""; }; - ECABE5691821E4C80037E6C5 /* ANInstallTrackerPixel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInstallTrackerPixel.h; sourceTree = ""; }; - ECABE56A1821E4C80037E6C5 /* ANInstallTrackerPixel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInstallTrackerPixel.m; sourceTree = ""; }; ECABE56B1821E4C80037E6C5 /* ANInterstitialAd.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAd.m; sourceTree = ""; }; ECABE56C1821E4C80037E6C5 /* ANInterstitialAdViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANInterstitialAdViewController.h; sourceTree = ""; }; ECABE56D1821E4C80037E6C5 /* ANInterstitialAdViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANInterstitialAdViewController.m; sourceTree = ""; }; @@ -301,7 +232,6 @@ ECABE5831821E4C80037E6C5 /* UIButtonBarArrowLeft@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "UIButtonBarArrowLeft@2x.png"; sourceTree = ""; }; ECABE5841821E4C80037E6C5 /* UIButtonBarArrowRight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = UIButtonBarArrowRight.png; sourceTree = ""; }; ECABE5851821E4C80037E6C5 /* UIButtonBarArrowRight@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "UIButtonBarArrowRight@2x.png"; sourceTree = ""; }; - ECABE5861821E4C80037E6C5 /* MRAID.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MRAID.bundle; sourceTree = ""; }; ECABF119192E5C58006FFFB2 /* ANPBBuffer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANPBBuffer.m; sourceTree = ""; }; ECABF11A192E5C58006FFFB2 /* ANPBBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANPBBuffer.h; sourceTree = ""; }; ECBA78B5187F6D4200F1D73F /* ANTargetingParameters.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ANTargetingParameters.m; sourceTree = ""; }; @@ -365,7 +295,6 @@ buildActionMask = 2147483647; files = ( EC3640E9183FFA9F00DB8000 /* CoreFoundation.framework in Frameworks */, - ECD929B51822CC1B00420840 /* SenTestingKit.framework in Frameworks */, ECFF03291822C2E50021F14C /* AdSupport.framework in Frameworks */, ECFF03261822C2B10021F14C /* AVFoundation.framework in Frameworks */, ECFF03271822C2C90021F14C /* AudioToolbox.framework in Frameworks */, @@ -388,15 +317,9 @@ children = ( 1D3623240D0F684500981E51 /* AppDelegate.h */, 1D3623250D0F684500981E51 /* AppDelegate.m */, - 5C3208F8173061C700DAB5CF /* ANDemoAdsViewController.h */, - 5C3208F9173061C700DAB5CF /* ANDemoAdsViewController.m */, - 5C3208FA173061C700DAB5CF /* ANDemoAdsViewController.xib */, - 5C3208FD1730664500DAB5CF /* RootViewController.h */, - 5C3208FE1730664500DAB5CF /* RootViewController.m */, - 5C3208FF1730664500DAB5CF /* RootViewController.xib */, - 5C320902173090F300DAB5CF /* ANDemoConsoleViewController.h */, - 5C320903173090F300DAB5CF /* ANDemoConsoleViewController.m */, - 5C320904173090F300DAB5CF /* ANDemoConsoleViewController.xib */, + 8A5BBBF319BFA70C00A7C84C /* TestsStoryboard.storyboard */, + 8A5BBBF719BFAB3400A7C84C /* ViewController.h */, + 8A5BBBF819BFAB3400A7C84C /* ViewController.m */, ); path = Classes; sourceTree = ""; @@ -405,7 +328,7 @@ isa = PBXGroup; children = ( 1D6058910D05DD3D006BFB54 /* Tests.app */, - 5CD8155D17DA64C20046A256 /* TestsTests.octest */, + 5CD8155D17DA64C20046A256 /* TestsTests.xctest */, ); name = Products; sourceTree = ""; @@ -413,11 +336,9 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( - 5C3208F6173053FE00DAB5CF /* Default-568h@2x.png */, 080E96DDFE201D6D7F000001 /* Classes */, + 5C3208F6173053FE00DAB5CF /* Default-568h@2x.png */, 29B97323FDCFA39411CA2CEA /* Frameworks */, - 5C3208F3173053D700DAB5CF /* iPad */, - EC09B25C1834340200D76510 /* libs */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 19C28FACFE9D520D11CA2CBB /* Products */, 29B97317FDCFA39411CA2CEA /* Resources */, @@ -431,7 +352,7 @@ isa = PBXGroup; children = ( 32CA4F630368D1EE00C91783 /* Tests_Prefix.pch */, - 29B97316FDCFA39411CA2CEA /* main.m */, + 8A5BBBF519BFA86600A7C84C /* main.m */, ); name = "Other Sources"; sourceTree = ""; @@ -439,7 +360,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - 28AD733E0D9D9553002E5188 /* MainWindow.xib */, 8D1107310486CEB800E47090 /* Tests-Info.plist */, ); name = Resources; @@ -463,155 +383,21 @@ 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 1D30AB110D05D00D00671497 /* Foundation.framework */, 288765FC0DF74451002DB57D /* CoreGraphics.framework */, - 5CD8155E17DA64C20046A256 /* SenTestingKit.framework */, ); name = Frameworks; sourceTree = ""; }; - 5C3208F3173053D700DAB5CF /* iPad */ = { - isa = PBXGroup; - children = ( - 5C3208F4173053D700DAB5CF /* MainWindow-iPad.xib */, - ); - name = iPad; - sourceTree = ""; - }; - EC09B25C1834340200D76510 /* libs */ = { - isa = PBXGroup; - children = ( - EC09B25D1834340200D76510 /* Nocilla */, - ); - path = libs; - sourceTree = ""; - }; - EC09B25D1834340200D76510 /* Nocilla */ = { - isa = PBXGroup; - children = ( - EC09B25E1834340200D76510 /* Categories */, - EC09B2631834340200D76510 /* Diff */, - EC09B2661834340200D76510 /* DSL */, - EC09B26E1834340200D76510 /* Hooks */, - EC09B2811834340200D76510 /* LSNocilla.h */, - EC09B2821834340200D76510 /* LSNocilla.m */, - EC09B2831834340200D76510 /* Matchers */, - EC09B28F1834340200D76510 /* Model */, - EC09B2931834340200D76510 /* Nocilla-Prefix.pch */, - EC09B2941834340200D76510 /* Nocilla.h */, - EC09B2951834340200D76510 /* Stubs */, - ); - path = Nocilla; - sourceTree = ""; - }; - EC09B25E1834340200D76510 /* Categories */ = { - isa = PBXGroup; - children = ( - EC09B25F1834340200D76510 /* NSData+Nocilla.h */, - EC09B2601834340200D76510 /* NSData+Nocilla.m */, - EC09B2611834340200D76510 /* NSString+Nocilla.h */, - EC09B2621834340200D76510 /* NSString+Nocilla.m */, - ); - path = Categories; - sourceTree = ""; - }; - EC09B2631834340200D76510 /* Diff */ = { - isa = PBXGroup; - children = ( - EC09B2641834340200D76510 /* LSHTTPRequestDiff.h */, - EC09B2651834340200D76510 /* LSHTTPRequestDiff.m */, - ); - path = Diff; - sourceTree = ""; - }; - EC09B2661834340200D76510 /* DSL */ = { - isa = PBXGroup; - children = ( - EC09B2671834340200D76510 /* DSL.h */, - EC09B2681834340200D76510 /* LSHTTPRequestDSLRepresentation.h */, - EC09B2691834340200D76510 /* LSHTTPRequestDSLRepresentation.m */, - EC09B26A1834340200D76510 /* LSStubRequestDSL.h */, - EC09B26B1834340200D76510 /* LSStubRequestDSL.m */, - EC09B26C1834340200D76510 /* LSStubResponseDSL.h */, - EC09B26D1834340200D76510 /* LSStubResponseDSL.m */, - ); - path = DSL; - sourceTree = ""; - }; - EC09B26E1834340200D76510 /* Hooks */ = { + 8ABAF7B519BF48C100CA4183 /* Stubbing */ = { isa = PBXGroup; children = ( - EC09B26F1834340200D76510 /* ASIHTTPRequest */, - EC09B2761834340200D76510 /* LSHTTPClientHook.h */, - EC09B2771834340200D76510 /* LSHTTPClientHook.m */, - EC09B2781834340200D76510 /* NSURLRequest */, + 8AA80F8D19CA36E6000007FC /* ANHTTPStubbingManager.h */, + 8AA80F8E19CA36E6000007FC /* ANHTTPStubbingManager.m */, + 8ABAF7B619BF491A00CA4183 /* ANHTTPStubURLProtocol.h */, + 8ABAF7B719BF491A00CA4183 /* ANHTTPStubURLProtocol.m */, + 8A5BBBEE19BF8B6800A7C84C /* ANURLConnectionStub.h */, + 8A5BBBEF19BF8B6800A7C84C /* ANURLConnectionStub.m */, ); - path = Hooks; - sourceTree = ""; - }; - EC09B26F1834340200D76510 /* ASIHTTPRequest */ = { - isa = PBXGroup; - children = ( - EC09B2701834340200D76510 /* ASIHTTPRequestStub.h */, - EC09B2711834340200D76510 /* ASIHTTPRequestStub.m */, - EC09B2721834340200D76510 /* LSASIHTTPRequestAdapter.h */, - EC09B2731834340200D76510 /* LSASIHTTPRequestAdapter.m */, - EC09B2741834340200D76510 /* LSASIHTTPRequestHook.h */, - EC09B2751834340200D76510 /* LSASIHTTPRequestHook.m */, - ); - path = ASIHTTPRequest; - sourceTree = ""; - }; - EC09B2781834340200D76510 /* NSURLRequest */ = { - isa = PBXGroup; - children = ( - EC09B2791834340200D76510 /* LSHTTPStubURLProtocol.h */, - EC09B27A1834340200D76510 /* LSHTTPStubURLProtocol.m */, - EC09B27B1834340200D76510 /* LSNSURLHook.h */, - EC09B27C1834340200D76510 /* LSNSURLHook.m */, - EC09B27D1834340200D76510 /* NSURLRequest+DSL.h */, - EC09B27E1834340200D76510 /* NSURLRequest+DSL.m */, - EC09B27F1834340200D76510 /* NSURLRequest+LSHTTPRequest.h */, - EC09B2801834340200D76510 /* NSURLRequest+LSHTTPRequest.m */, - ); - path = NSURLRequest; - sourceTree = ""; - }; - EC09B2831834340200D76510 /* Matchers */ = { - isa = PBXGroup; - children = ( - EC09B2841834340200D76510 /* LSMatcheable.h */, - EC09B2851834340200D76510 /* LSMatcher.h */, - EC09B2861834340200D76510 /* LSMatcher.m */, - EC09B2871834340200D76510 /* LSRegexMatcher.h */, - EC09B2881834340200D76510 /* LSRegexMatcher.m */, - EC09B2891834340200D76510 /* LSStringMatcher.h */, - EC09B28A1834340200D76510 /* LSStringMatcher.m */, - EC09B28B1834340200D76510 /* NSRegularExpression+Matcheable.h */, - EC09B28C1834340200D76510 /* NSRegularExpression+Matcheable.m */, - EC09B28D1834340200D76510 /* NSString+Matcheable.h */, - EC09B28E1834340200D76510 /* NSString+Matcheable.m */, - ); - path = Matchers; - sourceTree = ""; - }; - EC09B28F1834340200D76510 /* Model */ = { - isa = PBXGroup; - children = ( - EC09B2901834340200D76510 /* LSHTTPBody.h */, - EC09B2911834340200D76510 /* LSHTTPRequest.h */, - EC09B2921834340200D76510 /* LSHTTPResponse.h */, - ); - path = Model; - sourceTree = ""; - }; - EC09B2951834340200D76510 /* Stubs */ = { - isa = PBXGroup; - children = ( - EC09B2961834340200D76510 /* LSStubRequest.h */, - EC09B2971834340200D76510 /* LSStubRequest.m */, - EC09B2981834340200D76510 /* LSStubResponse.h */, - EC09B2991834340200D76510 /* LSStubResponse.m */, - ); - path = Stubs; + path = Stubbing; sourceTree = ""; }; EC40560C183D5D88006A1D09 /* TestUtils */ = { @@ -649,6 +435,8 @@ ECABE5471821E4C80037E6C5 /* Categories */ = { isa = PBXGroup; children = ( + 8A3EC17319B8FF490049CD29 /* ANBannerAdView+ANContentViewTransitions.h */, + 8A3EC17419B8FF490049CD29 /* ANBannerAdView+ANContentViewTransitions.m */, ECABE5481821E4C80037E6C5 /* NSString+ANCategory.h */, ECABE5491821E4C80037E6C5 /* NSString+ANCategory.m */, ECABE54A1821E4C80037E6C5 /* NSTimer+ANCategory.h */, @@ -666,10 +454,10 @@ children = ( ECABE5591821E4C80037E6C5 /* ANAdFetcher.h */, ECABE55A1821E4C80037E6C5 /* ANAdFetcher.m */, - ECABE55B1821E4C80037E6C5 /* ANAdResponse.h */, - ECABE55C1821E4C80037E6C5 /* ANAdResponse.m */, EC7AB08C188883DB00C27B1E /* ANAdRequestUrl.h */, EC7AB08D188883DB00C27B1E /* ANAdRequestUrl.m */, + ECABE55B1821E4C80037E6C5 /* ANAdResponse.h */, + ECABE55C1821E4C80037E6C5 /* ANAdResponse.m */, ECABE55E1821E4C80037E6C5 /* ANAdView.m */, ECABE55F1821E4C80037E6C5 /* ANAdViewDelegate.h */, ECABE5601821E4C80037E6C5 /* ANAdWebViewController.h */, @@ -683,8 +471,6 @@ 8A13B6A019492A9F006CFC9C /* ANClickOverlayView.m */, ECABE5671821E4C80037E6C5 /* ANGlobal.h */, ECABE5681821E4C80037E6C5 /* ANGlobal.m */, - ECABE5691821E4C80037E6C5 /* ANInstallTrackerPixel.h */, - ECABE56A1821E4C80037E6C5 /* ANInstallTrackerPixel.m */, ECABE56B1821E4C80037E6C5 /* ANInterstitialAd.m */, ECABE56C1821E4C80037E6C5 /* ANInterstitialAdViewController.h */, ECABE56D1821E4C80037E6C5 /* ANInterstitialAdViewController.m */, @@ -696,11 +482,15 @@ ECABE5741821E4C80037E6C5 /* ANMediatedAd.m */, ECABE5751821E4C80037E6C5 /* ANMediationAdViewController.h */, ECABE5761821E4C80037E6C5 /* ANMediationAdViewController.m */, + 8A7E79C819BE0F80002C17A8 /* ANMediationContainerView.h */, + 8A7E79C919BE0F80002C17A8 /* ANMediationContainerView.m */, EC2E96C119103A00001A42EF /* ANMRAIDProperties.h */, EC4055F9183D43FB006A1D09 /* ANMRAIDViewController.h */, EC4055FA183D43FB006A1D09 /* ANMRAIDViewController.m */, ECABF11A192E5C58006FFFB2 /* ANPBBuffer.h */, ECABF119192E5C58006FFFB2 /* ANPBBuffer.m */, + 8A67DC2C19C346A00097A288 /* ANPBContainerView.h */, + 8A67DC2D19C346A00097A288 /* ANPBContainerView.m */, ECABE5771821E4C80037E6C5 /* ANReachability.h */, ECABE5781821E4C80037E6C5 /* ANReachability.m */, ECBA78B5187F6D4200F1D73F /* ANTargetingParameters.m */, @@ -713,11 +503,11 @@ ECABE57B1821E4C80037E6C5 /* Resources */ = { isa = PBXGroup; children = ( + 8A3EC17119B8FF3A0049CD29 /* ANMRAID.bundle */, ECE5B259184FA4C900D0C8FD /* ANBrowserViewController.xib */, ECE5B25A184FA4C900D0C8FD /* ANInterstitialAdViewController.xib */, ECABE57C1821E4C80037E6C5 /* errors.strings */, ECABE57D1821E4C80037E6C5 /* images */, - ECABE5861821E4C80037E6C5 /* MRAID.bundle */, ); path = Resources; sourceTree = ""; @@ -725,6 +515,8 @@ ECABE57D1821E4C80037E6C5 /* images */ = { isa = PBXGroup; children = ( + 8A7E79CE19BE0F9C002C17A8 /* appnexus_logo_icon.png */, + 8A7E79CF19BE0F9C002C17A8 /* appnexus_logo_icon@2x.png */, ECABE57E1821E4C80037E6C5 /* interstitial_closebox-down.png */, ECABE57F1821E4C80037E6C5 /* interstitial_closebox-down@2x.png */, ECABE5801821E4C80037E6C5 /* interstitial_closebox.png */, @@ -745,6 +537,7 @@ ECD9298D1822CAD300420840 /* MediationCallbacksTests.m */, ECD9298F1822CAD300420840 /* MediationTests.m */, 8A3C4095189705500070F145 /* MRAIDTests.m */, + 8ABAF7B519BF48C100CA4183 /* Stubbing */, ECD929901822CAD300420840 /* TestsTests-Info.plist */, ECD929911822CAD300420840 /* TestsTests-Prefix.pch */, EC40560C183D5D88006A1D09 /* TestUtils */, @@ -822,8 +615,8 @@ ); name = TestsTests; productName = DemoTests; - productReference = 5CD8155D17DA64C20046A256 /* TestsTests.octest */; - productType = "com.apple.product-type.bundle"; + productReference = 5CD8155D17DA64C20046A256 /* TestsTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ @@ -857,24 +650,22 @@ buildActionMask = 2147483647; files = ( ECABE5A71821E4C80037E6C5 /* UIButtonBarArrowRight.png in Resources */, - ECABE5A91821E4C80037E6C5 /* MRAID.bundle in Resources */, ECABE5A81821E4C80037E6C5 /* UIButtonBarArrowRight@2x.png in Resources */, ECE5B25C184FA4C900D0C8FD /* ANInterstitialAdViewController.xib in Resources */, + 8A7E79D119BE0F9C002C17A8 /* appnexus_logo_icon@2x.png in Resources */, ECABE5A51821E4C80037E6C5 /* UIButtonBarArrowLeft.png in Resources */, ECABE5A31821E4C80037E6C5 /* interstitial_closebox.png in Resources */, ECABE5A11821E4C80037E6C5 /* interstitial_closebox-down.png in Resources */, ECABE5A01821E4C80037E6C5 /* errors.strings in Resources */, - 28AD733F0D9D9553002E5188 /* MainWindow.xib in Resources */, - 5C3208F5173053D700DAB5CF /* MainWindow-iPad.xib in Resources */, + 8A3EC17219B8FF3A0049CD29 /* ANMRAID.bundle in Resources */, ECD929A71822CAD300420840 /* InfoPlist.strings in Resources */, + 8A7E79D019BE0F9C002C17A8 /* appnexus_logo_icon.png in Resources */, ECD929AA1822CAD300420840 /* TestsTests-Info.plist in Resources */, ECABE5A61821E4C80037E6C5 /* UIButtonBarArrowLeft@2x.png in Resources */, 5C3208F7173053FE00DAB5CF /* Default-568h@2x.png in Resources */, - 5C3208FC173061C700DAB5CF /* ANDemoAdsViewController.xib in Resources */, + 8A5BBBF419BFA70C00A7C84C /* TestsStoryboard.storyboard in Resources */, ECE5B25B184FA4C900D0C8FD /* ANBrowserViewController.xib in Resources */, ECABE5A41821E4C80037E6C5 /* interstitial_closebox@2x.png in Resources */, - 5C3209011730664500DAB5CF /* RootViewController.xib in Resources */, - 5C320906173090F300DAB5CF /* ANDemoConsoleViewController.xib in Resources */, ECABE5A21821E4C80037E6C5 /* interstitial_closebox-down@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -909,25 +700,23 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 1D60589B0D05DD56006BFB54 /* main.m in Sources */, + 8A3EC17519B8FF490049CD29 /* ANBannerAdView+ANContentViewTransitions.m in Sources */, 8A13B6A119492A9F006CFC9C /* ANClickOverlayView.m in Sources */, - 5C3208FB173061C700DAB5CF /* ANDemoAdsViewController.m in Sources */, - 5C320905173090F300DAB5CF /* ANDemoConsoleViewController.m in Sources */, ECBA78B6187F6D4200F1D73F /* ANTargetingParameters.m in Sources */, 1D3623260D0F684500981E51 /* AppDelegate.m in Sources */, - 5C3209001730664500DAB5CF /* RootViewController.m in Sources */, ECABF11B192E5C58006FFFB2 /* ANPBBuffer.m in Sources */, ECABE58E1821E4C80037E6C5 /* ANAdFetcher.m in Sources */, EC7AB08E188883DB00C27B1E /* ANAdRequestUrl.m in Sources */, EC7AB08B188883C300C27B1E /* ANLogManager.m in Sources */, ECABE58F1821E4C80037E6C5 /* ANAdResponse.m in Sources */, + 8A5BBBF619BFA86600A7C84C /* main.m in Sources */, ECABE5911821E4C80037E6C5 /* ANAdWebViewController.m in Sources */, ECABE5901821E4C80037E6C5 /* ANAdView.m in Sources */, EC2E96C219103A00001A42EF /* ANANJAMImplementation.m in Sources */, ECABE5921821E4C80037E6C5 /* ANBannerAdView.m in Sources */, ECABE5931821E4C80037E6C5 /* ANBrowserViewController.m in Sources */, + 8A67DC2E19C346A00097A288 /* ANPBContainerView.m in Sources */, ECABE5951821E4C80037E6C5 /* ANGlobal.m in Sources */, - ECABE5961821E4C80037E6C5 /* ANInstallTrackerPixel.m in Sources */, ECABE5971821E4C80037E6C5 /* ANInterstitialAd.m in Sources */, ECABE5981821E4C80037E6C5 /* ANInterstitialAdViewController.m in Sources */, ECABE59A1821E4C80037E6C5 /* ANLocation.m in Sources */, @@ -936,8 +725,10 @@ ECABE59D1821E4C80037E6C5 /* ANMediationAdViewController.m in Sources */, EC4055FB183D43FB006A1D09 /* ANMRAIDViewController.m in Sources */, ECABE59E1821E4C80037E6C5 /* ANReachability.m in Sources */, + 8A5BBBF919BFAB3400A7C84C /* ViewController.m in Sources */, ECABE59F1821E4C80037E6C5 /* ANWebView.m in Sources */, ECABE5871821E4C80037E6C5 /* NSString+ANCategory.m in Sources */, + 8A7E79CC19BE0F80002C17A8 /* ANMediationContainerView.m in Sources */, ECABE5881821E4C80037E6C5 /* NSTimer+ANCategory.m in Sources */, ECABE58A1821E4C80037E6C5 /* UIWebView+ANCategory.m in Sources */, ECABE5891821E4C80037E6C5 /* UIView+ANCategory.m in Sources */, @@ -948,6 +739,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 8A5BBBF119BF8B6C00A7C84C /* ANHTTPStubURLProtocol.m in Sources */, EC40561D183D6818006A1D09 /* ANAdAdapterBannerDummy.m in Sources */, EC40561F183D6818006A1D09 /* ANAdAdapterBannerNoAds.m in Sources */, EC405621183D6818006A1D09 /* ANAdAdapterBannerRequestFail.m in Sources */, @@ -955,6 +747,7 @@ EC2E96C419103A7D001A42EF /* ANFailAndHitOtherCallbacks.m in Sources */, EC405625183D6818006A1D09 /* ANFailedMultiple.m in Sources */, EC405627183D6818006A1D09 /* ANFailThenLoad.m in Sources */, + 8A5BBBF019BF8B6800A7C84C /* ANURLConnectionStub.m in Sources */, EC405629183D6818006A1D09 /* ANLoadAndHitOtherCallbacks.m in Sources */, EC40562B183D6818006A1D09 /* ANLoadedMultiple.m in Sources */, EC40562D183D6818006A1D09 /* ANLoadThenFail.m in Sources */, @@ -965,31 +758,10 @@ EC40561A183D670D006A1D09 /* ANTestResponses.m in Sources */, ECD929B91822CD0E00420840 /* MediationCallbacksTests.m in Sources */, ECD929BA1822CD0E00420840 /* MediationTests.m in Sources */, + 8AA80F9019CA3779000007FC /* ANHTTPStubbingManager.m in Sources */, 8A3C409C18970AFC0070F145 /* ANMRAIDTestResponses.m in Sources */, EC09B2B31834350E00D76510 /* BasicTests.m in Sources */, - EC09B2F8183437CC00D76510 /* NSData+Nocilla.m in Sources */, - EC09B2FA183437CC00D76510 /* NSString+Nocilla.m in Sources */, - EC09B2FC183437CC00D76510 /* LSHTTPRequestDiff.m in Sources */, - EC09B2FF183437CC00D76510 /* LSHTTPRequestDSLRepresentation.m in Sources */, - EC09B301183437CC00D76510 /* LSStubRequestDSL.m in Sources */, - EC09B303183437CC00D76510 /* LSStubResponseDSL.m in Sources */, - EC09B305183437CC00D76510 /* ASIHTTPRequestStub.m in Sources */, 8A3C4098189705500070F145 /* MRAIDTests.m in Sources */, - EC09B307183437CC00D76510 /* LSASIHTTPRequestAdapter.m in Sources */, - EC09B309183437CC00D76510 /* LSASIHTTPRequestHook.m in Sources */, - EC09B30B183437CC00D76510 /* LSHTTPClientHook.m in Sources */, - EC09B30D183437CC00D76510 /* LSHTTPStubURLProtocol.m in Sources */, - EC09B30F183437CC00D76510 /* LSNSURLHook.m in Sources */, - EC09B311183437CC00D76510 /* NSURLRequest+DSL.m in Sources */, - EC09B313183437CC00D76510 /* NSURLRequest+LSHTTPRequest.m in Sources */, - EC09B315183437CC00D76510 /* LSNocilla.m in Sources */, - EC09B318183437CC00D76510 /* LSMatcher.m in Sources */, - EC09B31A183437CC00D76510 /* LSRegexMatcher.m in Sources */, - EC09B31C183437CC00D76510 /* LSStringMatcher.m in Sources */, - EC09B31E183437CC00D76510 /* NSRegularExpression+Matcheable.m in Sources */, - EC09B320183437CC00D76510 /* NSString+Matcheable.m in Sources */, - EC09B327183437CC00D76510 /* LSStubRequest.m in Sources */, - EC09B329183437CC00D76510 /* LSStubResponse.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1068,6 +840,7 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PREBINDING = NO; @@ -1114,8 +887,8 @@ COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", - "$(DEVELOPER_LIBRARY_DIR)/Frameworks", "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(inherited)", ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; @@ -1134,7 +907,6 @@ ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = TestsTests; TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = octest; }; name = Debug; }; @@ -1154,8 +926,8 @@ COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", - "$(DEVELOPER_LIBRARY_DIR)/Frameworks", "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(inherited)", ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -1167,7 +939,6 @@ PRODUCT_NAME = TestsTests; TEST_HOST = "$(BUNDLE_LOADER)"; VALIDATE_PRODUCT = YES; - WRAPPER_EXTENSION = octest; }; name = Release; }; @@ -1187,8 +958,8 @@ COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", - "$(DEVELOPER_LIBRARY_DIR)/Frameworks", "$(DEVELOPER_FRAMEWORKS_DIR)", + "$(inherited)", ); GCC_C_LANGUAGE_STANDARD = gnu99; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -1200,7 +971,6 @@ PRODUCT_NAME = TestsTests; TEST_HOST = "$(BUNDLE_LOADER)"; VALIDATE_PRODUCT = YES; - WRAPPER_EXTENSION = octest; }; name = "Ad-Hoc"; }; @@ -1212,6 +982,7 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; ONLY_ACTIVE_ARCH = YES; OTHER_LDFLAGS = "-ObjC"; PREBINDING = NO; @@ -1228,6 +999,7 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PREBINDING = NO; diff --git a/tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/Tests.xccheckout b/tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/Tests.xccheckout index 1bf2a7aa0..b859cec6d 100644 --- a/tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/Tests.xccheckout +++ b/tests/Tests.xcodeproj/project.xcworkspace/xcshareddata/Tests.xccheckout @@ -5,34 +5,46 @@ IDESourceControlProjectFavoriteDictionaryKey IDESourceControlProjectIdentifier - 067B9D43-A82A-4BED-BFBF-303818A8E506 + 5C843CD5-B7CF-4456-A76A-AE3CC7A02617 IDESourceControlProjectName Tests IDESourceControlProjectOriginsDictionary - 96B626BB-5A60-4B1C-99AB-A00E13088190 + 229CD7D3AF4E29BF9E6D417CA169C98BE9561CFB + git.corp.appnexus.com:app/mobile-sdk.git + 75690160C18926C10675D0414428FBB50DA5D17C ssh://git.corp.appnexus.com/app/mobile-sdk-ios.git IDESourceControlProjectPath tests/Tests.xcodeproj/project.xcworkspace IDESourceControlProjectRelativeInstallPathDictionary - 96B626BB-5A60-4B1C-99AB-A00E13088190 + 229CD7D3AF4E29BF9E6D417CA169C98BE9561CFB + ../../../.. + 75690160C18926C10675D0414428FBB50DA5D17C ../../.. IDESourceControlProjectURL ssh://git.corp.appnexus.com/app/mobile-sdk-ios.git IDESourceControlProjectVersion - 110 + 111 IDESourceControlProjectWCCIdentifier - 96B626BB-5A60-4B1C-99AB-A00E13088190 + 75690160C18926C10675D0414428FBB50DA5D17C IDESourceControlProjectWCConfigurations IDESourceControlRepositoryExtensionIdentifierKey public.vcs.git IDESourceControlWCCIdentifierKey - 96B626BB-5A60-4B1C-99AB-A00E13088190 + 229CD7D3AF4E29BF9E6D417CA169C98BE9561CFB + IDESourceControlWCCName + + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + 75690160C18926C10675D0414428FBB50DA5D17C IDESourceControlWCCName mobile-sdk-ios diff --git a/tests/Tests.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme b/tests/Tests.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme index bf589bf1d..6392cc35f 100644 --- a/tests/Tests.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme +++ b/tests/Tests.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme @@ -33,7 +33,7 @@ diff --git a/tests/Tests.xcodeproj/xcshareddata/xcschemes/TestsTests.xcscheme b/tests/Tests.xcodeproj/xcshareddata/xcschemes/TestsTests.xcscheme index a4caea0b4..98f9331a5 100644 --- a/tests/Tests.xcodeproj/xcshareddata/xcschemes/TestsTests.xcscheme +++ b/tests/Tests.xcodeproj/xcshareddata/xcschemes/TestsTests.xcscheme @@ -17,7 +17,7 @@ diff --git a/tests/iPad/MainWindow-iPad.xib b/tests/iPad/MainWindow-iPad.xib deleted file mode 100644 index 8779ca901..000000000 --- a/tests/iPad/MainWindow-iPad.xib +++ /dev/null @@ -1,204 +0,0 @@ - - - - 768 - 11G63b - 3084 - 1138.51 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 2083 - - - YES - IBProxyObject - IBUICustomObject - IBUIWindow - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - IBIPadFramework - - - - 1316 - - {768, 1024} - - - - 1 - MCAwIDAAA - - NO - NO - - 2 - - IBIPadFramework - YES - YES - - - - - YES - - - delegate - - - - 4 - - - - window - - - - 5 - - - - - YES - - 0 - - YES - - - - - - 2 - - - YES - - - - - -1 - - - File's Owner - - - 3 - - - - - -2 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 2.IBAttributePlaceholdersKey - 2.IBLastUsedUIStatusBarStylesToTargetRuntimesMap - 2.IBPluginDependency - 3.CustomClassName - 3.IBPluginDependency - - - YES - UIApplication - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - - - IBCocoaTouchFramework - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - AppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 16 - - - - YES - - AppDelegate - NSObject - - window - UIWindow - - - window - - window - UIWindow - - - - IBProjectSource - ./Classes/AppDelegate.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 2083 - - diff --git a/tests/libs/Nocilla/Categories/NSData+Nocilla.h b/tests/libs/Nocilla/Categories/NSData+Nocilla.h deleted file mode 100644 index 92ebbc75c..000000000 --- a/tests/libs/Nocilla/Categories/NSData+Nocilla.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import "LSHTTPBody.h" - -@interface NSData (Nocilla) - -@end diff --git a/tests/libs/Nocilla/Categories/NSData+Nocilla.m b/tests/libs/Nocilla/Categories/NSData+Nocilla.m deleted file mode 100644 index 0572aeb50..000000000 --- a/tests/libs/Nocilla/Categories/NSData+Nocilla.m +++ /dev/null @@ -1,9 +0,0 @@ -#import "NSData+Nocilla.h" - -@implementation NSData (Nocilla) - -- (NSData *)data { - return self; -} - -@end diff --git a/tests/libs/Nocilla/Categories/NSString+Nocilla.h b/tests/libs/Nocilla/Categories/NSString+Nocilla.h deleted file mode 100644 index cc0df6d89..000000000 --- a/tests/libs/Nocilla/Categories/NSString+Nocilla.h +++ /dev/null @@ -1,8 +0,0 @@ -#import -#import "LSHTTPBody.h" - -@interface NSString (Nocilla) - -- (NSRegularExpression *)regex; - -@end diff --git a/tests/libs/Nocilla/Categories/NSString+Nocilla.m b/tests/libs/Nocilla/Categories/NSString+Nocilla.m deleted file mode 100644 index be28f78a7..000000000 --- a/tests/libs/Nocilla/Categories/NSString+Nocilla.m +++ /dev/null @@ -1,18 +0,0 @@ -#import "NSString+Nocilla.h" - -@implementation NSString (Nocilla) - -- (NSRegularExpression *)regex { - NSError *error = nil; - NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:self options:0 error:&error]; - if (error) { - [NSException raise:NSInvalidArgumentException format:@"Invalid regex pattern: %@\nError: %@", self, error]; - } - return regex; -} - -- (NSData *)data { - return [self dataUsingEncoding:NSUTF8StringEncoding]; -} - -@end diff --git a/tests/libs/Nocilla/DSL/DSL.h b/tests/libs/Nocilla/DSL/DSL.h deleted file mode 100644 index 41b26dfa9..000000000 --- a/tests/libs/Nocilla/DSL/DSL.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef _DSL_h -#define _DSL_h - -#import "LSStubRequestDSL.h" -#import "LSStubResponseDSL.h" - -#endif diff --git a/tests/libs/Nocilla/DSL/LSHTTPRequestDSLRepresentation.h b/tests/libs/Nocilla/DSL/LSHTTPRequestDSLRepresentation.h deleted file mode 100644 index 6a5fcb105..000000000 --- a/tests/libs/Nocilla/DSL/LSHTTPRequestDSLRepresentation.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import "LSHTTPRequest.h" - -@interface LSHTTPRequestDSLRepresentation : NSObject -- (id)initWithRequest:(id)request; -@end diff --git a/tests/libs/Nocilla/DSL/LSHTTPRequestDSLRepresentation.m b/tests/libs/Nocilla/DSL/LSHTTPRequestDSLRepresentation.m deleted file mode 100644 index bcfbb96cc..000000000 --- a/tests/libs/Nocilla/DSL/LSHTTPRequestDSLRepresentation.m +++ /dev/null @@ -1,39 +0,0 @@ -#import "LSHTTPRequestDSLRepresentation.h" - -@interface LSHTTPRequestDSLRepresentation () -@property (nonatomic, strong) id request; -@end - -@implementation LSHTTPRequestDSLRepresentation -- (id)initWithRequest:(id)request { - self = [super init]; - if (self) { - _request = request; - } - return self; -} - -- (NSString *)description { - NSMutableString *result = [NSMutableString stringWithFormat:@"stubRequest(@\"%@\", @\"%@\")", self.request.method, [self.request.url absoluteString]]; - if (self.request.headers.count) { - [result appendString:@".\nwithHeaders(@{ "]; - NSMutableArray *headerElements = [NSMutableArray arrayWithCapacity:self.request.headers.count]; - - NSArray *descriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"" ascending:YES]]; - NSArray * sortedHeaders = [[self.request.headers allKeys] sortedArrayUsingDescriptors:descriptors]; - - for (NSString * header in sortedHeaders) { - NSString *value = [self.request.headers objectForKey:header]; - [headerElements addObject:[NSString stringWithFormat:@"@\"%@\": @\"%@\"", header, value]]; - } - [result appendString:[headerElements componentsJoinedByString:@", "]]; - [result appendString:@" })"]; - } - if (self.request.body.length) { - NSString *escapedBody = [[NSString alloc] initWithData:self.request.body encoding:NSUTF8StringEncoding]; - escapedBody = [escapedBody stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; - [result appendFormat:@".\nwithBody(@\"%@\")", escapedBody]; - } - return [NSString stringWithFormat:@"%@;", result]; -} -@end diff --git a/tests/libs/Nocilla/DSL/LSStubRequestDSL.h b/tests/libs/Nocilla/DSL/LSStubRequestDSL.h deleted file mode 100644 index c194ce81a..000000000 --- a/tests/libs/Nocilla/DSL/LSStubRequestDSL.h +++ /dev/null @@ -1,37 +0,0 @@ -#import -#import "NSString+Matcheable.h" -#import "NSString+Matcheable.h" -#import "NSRegularExpression+Matcheable.h" - -@class LSStubRequestDSL; -@class LSStubResponseDSL; -@class LSStubRequest; - -@protocol LSHTTPBody; - -typedef LSStubRequestDSL *(^WithHeaderMethod)(NSString *, NSString *); -typedef LSStubRequestDSL *(^WithHeadersMethod)(NSDictionary *); -typedef LSStubRequestDSL *(^AndBodyMethod)(id); -typedef LSStubResponseDSL *(^AndReturnMethod)(NSInteger); -typedef LSStubResponseDSL *(^AndReturnRawResponseMethod)(NSData *rawResponseData); -typedef void (^AndFailWithErrorMethod)(NSError *error); - -@interface LSStubRequestDSL : NSObject -- (id)initWithRequest:(LSStubRequest *)request; -- (WithHeaderMethod)withHeader; -- (WithHeadersMethod)withHeaders; -- (AndBodyMethod)withBody; -- (AndReturnMethod)andReturn; -- (AndReturnRawResponseMethod)andReturnRawResponse; -- (AndFailWithErrorMethod)andFailWithError; -@end - -#ifdef __cplusplus -extern "C" { -#endif - -LSStubRequestDSL * stubRequest(NSString *method, id url); - -#ifdef __cplusplus -} -#endif diff --git a/tests/libs/Nocilla/DSL/LSStubRequestDSL.m b/tests/libs/Nocilla/DSL/LSStubRequestDSL.m deleted file mode 100644 index 6d3c4c5e4..000000000 --- a/tests/libs/Nocilla/DSL/LSStubRequestDSL.m +++ /dev/null @@ -1,72 +0,0 @@ -#import "LSStubRequestDSL.h" -#import "LSStubResponseDSL.h" -#import "LSStubRequest.h" -#import "LSNocilla.h" - -@interface LSStubRequestDSL () -@property (nonatomic, strong) LSStubRequest *request; -@end - -@implementation LSStubRequestDSL - -- (id)initWithRequest:(LSStubRequest *)request { - self = [super init]; - if (self) { - _request = request; - } - return self; -} -- (WithHeadersMethod)withHeaders { - return ^(NSDictionary *headers) { - for (NSString *header in headers) { - NSString *value = [headers objectForKey:header]; - [self.request setHeader:header value:value]; - } - return self; - }; -} - -- (WithHeaderMethod)withHeader { - return ^(NSString * header, NSString * value) { - [self.request setHeader:header value:value]; - return self; - }; -} - -- (AndBodyMethod)withBody { - return ^(id body) { - self.request.body = [body data]; - return self; - }; -} - -- (AndReturnMethod)andReturn { - return ^(NSInteger statusCode) { - self.request.response = [[LSStubResponse alloc] initWithStatusCode:statusCode]; - LSStubResponseDSL *responseDSL = [[LSStubResponseDSL alloc] initWithResponse:self.request.response]; - return responseDSL; - }; -} - -- (AndReturnRawResponseMethod)andReturnRawResponse { - return ^(NSData *rawResponseData) { - self.request.response = [[LSStubResponse alloc] initWithRawResponse:rawResponseData]; - LSStubResponseDSL *responseDSL = [[LSStubResponseDSL alloc] initWithResponse:self.request.response]; - return responseDSL; - }; -} - -- (AndFailWithErrorMethod)andFailWithError { - return ^(NSError *error) { - self.request.response = [[LSStubResponse alloc] initWithError:error]; - }; -} - -@end - -LSStubRequestDSL * stubRequest(NSString *method, id url) { - LSStubRequest *request = [[LSStubRequest alloc] initWithMethod:method urlMatcher:url.matcher]; - LSStubRequestDSL *dsl = [[LSStubRequestDSL alloc] initWithRequest:request]; - [[LSNocilla sharedInstance] addStubbedRequest:request]; - return dsl; -} diff --git a/tests/libs/Nocilla/DSL/LSStubResponseDSL.h b/tests/libs/Nocilla/DSL/LSStubResponseDSL.h deleted file mode 100644 index f058e91c2..000000000 --- a/tests/libs/Nocilla/DSL/LSStubResponseDSL.h +++ /dev/null @@ -1,17 +0,0 @@ -#import - -@class LSStubResponse; -@class LSStubResponseDSL; - -@protocol LSHTTPBody; - -typedef LSStubResponseDSL *(^ResponseWithBodyMethod)(id); -typedef LSStubResponseDSL *(^ResponseWithHeaderMethod)(NSString *, NSString *); -typedef LSStubResponseDSL *(^ResponseWithHeadersMethod)(NSDictionary *); - -@interface LSStubResponseDSL : NSObject -- (id)initWithResponse:(LSStubResponse *)response; -- (ResponseWithHeaderMethod)withHeader; -- (ResponseWithHeadersMethod)withHeaders; -- (ResponseWithBodyMethod)withBody; -@end diff --git a/tests/libs/Nocilla/DSL/LSStubResponseDSL.m b/tests/libs/Nocilla/DSL/LSStubResponseDSL.m deleted file mode 100644 index 06e978644..000000000 --- a/tests/libs/Nocilla/DSL/LSStubResponseDSL.m +++ /dev/null @@ -1,40 +0,0 @@ -#import "LSStubResponseDSL.h" -#import "LSStubResponse.h" -#import "LSHTTPBody.h" - -@interface LSStubResponseDSL () -@property (nonatomic, strong) LSStubResponse *response; -@end - -@implementation LSStubResponseDSL -- (id)initWithResponse:(LSStubResponse *)response { - self = [super init]; - if (self) { - _response = response; - } - return self; -} -- (ResponseWithHeaderMethod)withHeader { - return ^(NSString * header, NSString * value) { - [self.response setHeader:header value:value]; - return self; - }; -} - -- (ResponseWithHeadersMethod)withHeaders; { - return ^(NSDictionary *headers) { - for (NSString *header in headers) { - NSString *value = [headers objectForKey:header]; - [self.response setHeader:header value:value]; - } - return self; - }; -} - -- (ResponseWithBodyMethod)withBody { - return ^(id body) { - self.response.body = [body data]; - return self; - }; -} -@end diff --git a/tests/libs/Nocilla/Diff/LSHTTPRequestDiff.h b/tests/libs/Nocilla/Diff/LSHTTPRequestDiff.h deleted file mode 100644 index 2f9b8eac4..000000000 --- a/tests/libs/Nocilla/Diff/LSHTTPRequestDiff.h +++ /dev/null @@ -1,8 +0,0 @@ -#import -#import "LSHTTPRequest.h" - -@interface LSHTTPRequestDiff : NSObject -@property (nonatomic, assign, readonly, getter = isEmpty) BOOL empty; - -- (id)initWithRequest:(id)oneRequest andRequest:(id)anotherRequest; -@end diff --git a/tests/libs/Nocilla/Diff/LSHTTPRequestDiff.m b/tests/libs/Nocilla/Diff/LSHTTPRequestDiff.m deleted file mode 100644 index 413121d57..000000000 --- a/tests/libs/Nocilla/Diff/LSHTTPRequestDiff.m +++ /dev/null @@ -1,114 +0,0 @@ -#import "LSHTTPRequestDiff.h" - -@interface LSHTTPRequestDiff () -@property (nonatomic, strong) idoneRequest; -@property (nonatomic, strong) idanotherRequest; - -- (BOOL)isMethodDifferent; -- (BOOL)isUrlDifferent; -- (BOOL)areHeadersDifferent; -- (BOOL)isBodyDifferent; - -- (void)appendMethodDiff:(NSMutableString *)diff; -- (void)appendUrlDiff:(NSMutableString *)diff; -- (void)appendHeadersDiff:(NSMutableString *)diff; -- (void)appendBodyDiff:(NSMutableString *)diff; -@end - -@implementation LSHTTPRequestDiff -- (id)initWithRequest:(id)oneRequest andRequest:(id)anotherRequest { - self = [super init]; - if (self) { - _oneRequest = oneRequest; - _anotherRequest = anotherRequest; - } - return self; -} - -- (BOOL)isEmpty { - if ([self isMethodDifferent] || - [self isUrlDifferent] || - [self areHeadersDifferent] || - [self isBodyDifferent]) { - return NO; - } - return YES; -} - -- (NSString *)description { - NSMutableString *diff = [@"" mutableCopy]; - if ([self isMethodDifferent]) { - [self appendMethodDiff:diff]; - } - if ([self isUrlDifferent]) { - [self appendUrlDiff:diff]; - } - if([self areHeadersDifferent]) { - [self appendHeadersDiff:diff]; - } - if([self isBodyDifferent]) { - [self appendBodyDiff:diff]; - } - return [NSString stringWithString:diff]; -} - -#pragma mark - Private Methods -- (BOOL)isMethodDifferent { - return ![self.oneRequest.method isEqualToString:self.anotherRequest.method]; -} - -- (BOOL)isUrlDifferent { - return ![self.oneRequest.url isEqual:self.anotherRequest.url]; -} - -- (BOOL)areHeadersDifferent { - return ![self.oneRequest.headers isEqual:self.anotherRequest.headers]; -} - -- (BOOL)isBodyDifferent { - return (((self.oneRequest.body) && (![self.oneRequest.body isEqual:self.anotherRequest.body])) || - ((self.anotherRequest.body) && (![self.anotherRequest.body isEqual:self.oneRequest.body]))); -} - -- (void)appendMethodDiff:(NSMutableString *)diff { - [diff appendFormat:@"- Method: %@\n+ Method: %@\n", self.oneRequest.method, self.anotherRequest.method]; -} - -- (void)appendUrlDiff:(NSMutableString *)diff { - [diff appendFormat:@"- URL: %@\n+ URL: %@\n", [self.oneRequest.url absoluteString], [self.anotherRequest.url absoluteString]]; -} - -- (void)appendHeadersDiff:(NSMutableString *)diff { - [diff appendString:@" Headers:\n"]; - NSSet *headersInOneButNotInTheOther = [self.oneRequest.headers keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *stop) { - return ![self.anotherRequest.headers objectForKey:key] || ![obj isEqual:[self.anotherRequest.headers objectForKey:key]]; - }]; - NSSet *headersInTheOtherButNotInOne = [self.anotherRequest.headers keysOfEntriesPassingTest:^BOOL(id key, id obj, BOOL *stop) { - return ![self.oneRequest.headers objectForKey:key] || ![obj isEqual:[self.oneRequest.headers objectForKey:key]]; - }]; - - NSArray *descriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"" ascending:YES]]; - NSArray * sortedHeadersInOneButNotInTheOther = [headersInOneButNotInTheOther sortedArrayUsingDescriptors:descriptors]; - NSArray * sortedHeadersInTheOtherButNotInOne = [headersInTheOtherButNotInOne sortedArrayUsingDescriptors:descriptors]; - for (NSString *header in sortedHeadersInOneButNotInTheOther) { - NSString *value = [self.oneRequest.headers objectForKey:header]; - [diff appendFormat:@"-\t\"%@\": \"%@\"\n", header, value]; - - } - for (NSString *header in sortedHeadersInTheOtherButNotInOne) { - NSString *value = [self.anotherRequest.headers objectForKey:header]; - [diff appendFormat:@"+\t\"%@\": \"%@\"\n", header, value]; - } -} - -- (void)appendBodyDiff:(NSMutableString *)diff { - NSString *oneBody = [[NSString alloc] initWithData:self.oneRequest.body encoding:NSUTF8StringEncoding]; - if (oneBody.length) { - [diff appendFormat:@"- Body: \"%@\"\n", oneBody]; - } - NSString *anotherBody = [[NSString alloc] initWithData:self.anotherRequest.body encoding:NSUTF8StringEncoding]; - if (anotherBody.length) { - [diff appendFormat:@"+ Body: \"%@\"\n", anotherBody]; - } -} -@end diff --git a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/ASIHTTPRequestStub.h b/tests/libs/Nocilla/Hooks/ASIHTTPRequest/ASIHTTPRequestStub.h deleted file mode 100644 index b2c7e731f..000000000 --- a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/ASIHTTPRequestStub.h +++ /dev/null @@ -1,6 +0,0 @@ -@interface ASIHTTPRequestStub : NSObject -- (int)stub_responseStatusCode; -- (NSData *)stub_responseData; -- (NSDictionary *)stub_responseHeaders; -- (void)stub_startRequest; -@end diff --git a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/ASIHTTPRequestStub.m b/tests/libs/Nocilla/Hooks/ASIHTTPRequest/ASIHTTPRequestStub.m deleted file mode 100644 index fcda977f7..000000000 --- a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/ASIHTTPRequestStub.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "ASIHTTPRequestStub.h" -#import "LSStubResponse.h" -#import "LSNocilla.h" -#import "LSASIHTTPRequestAdapter.h" -#import - -@interface ASIHTTPRequestStub () -@property (nonatomic, strong) LSStubResponse *stubResponse; -@end - -@interface ASIHTTPRequestStub (Private) -- (void)failWithError:(NSError *)error; -- (void)requestFinished; -- (void)markAsFinished; -@end - -static void const * ASIHTTPRequestStubResponseKey = &ASIHTTPRequestStubResponseKey; - -@implementation ASIHTTPRequestStub - -- (void)setStubResponse:(LSStubResponse *)stubResponse { - objc_setAssociatedObject(self, ASIHTTPRequestStubResponseKey, stubResponse, OBJC_ASSOCIATION_RETAIN); -} - -- (LSStubResponse *)stubResponse { - return objc_getAssociatedObject(self, ASIHTTPRequestStubResponseKey); -} - -- (int)stub_responseStatusCode { - return self.stubResponse.statusCode; -} - -- (NSData *)stub_responseData { - return self.stubResponse.body; -} - -- (NSDictionary *)stub_responseHeaders { - return self.stubResponse.headers; -} - -- (void)stub_startRequest { - self.stubResponse = [[LSNocilla sharedInstance] responseForRequest:[[LSASIHTTPRequestAdapter alloc] initWithASIHTTPRequest:(id)self]]; - - if (self.stubResponse.shouldFail) { - [self failWithError:self.stubResponse.error]; - } else { - [self requestFinished]; - } - [self markAsFinished]; -} - -@end \ No newline at end of file diff --git a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestAdapter.h b/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestAdapter.h deleted file mode 100644 index 6cf7b1c47..000000000 --- a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestAdapter.h +++ /dev/null @@ -1,10 +0,0 @@ -#import -#import "LSHTTPRequest.h" - -@class ASIHTTPRequest; - -@interface LSASIHTTPRequestAdapter : NSObject - -- (instancetype)initWithASIHTTPRequest:(ASIHTTPRequest *)request; - -@end diff --git a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestAdapter.m b/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestAdapter.m deleted file mode 100644 index 91cf7913c..000000000 --- a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestAdapter.m +++ /dev/null @@ -1,42 +0,0 @@ -#import "LSASIHTTPRequestAdapter.h" - -@interface ASIHTTPRequest - -@property (nonatomic, strong, readonly) NSURL *url; -@property (nonatomic, strong, readonly) NSString *requestMethod; -@property (nonatomic, strong, readonly) NSDictionary *requestHeaders; -@property (nonatomic, strong, readonly) NSData *postBody; - -@end - -@interface LSASIHTTPRequestAdapter () -@property (nonatomic, strong) ASIHTTPRequest *request; -@end - -@implementation LSASIHTTPRequestAdapter - -- (instancetype)initWithASIHTTPRequest:(ASIHTTPRequest *)request { - self = [super init]; - if (self) { - _request = request; - } - return self; -} - -- (NSURL *)url { - return self.request.url; -} - -- (NSString *)method { - return self.request.requestMethod; -} - -- (NSDictionary *)headers { - return self.request.requestHeaders; -} - -- (NSData *)body { - return self.request.postBody; -} - -@end diff --git a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestHook.h b/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestHook.h deleted file mode 100644 index 2450072ee..000000000 --- a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestHook.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "LSHTTPClientHook.h" - -@interface LSASIHTTPRequestHook : LSHTTPClientHook - -@end diff --git a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestHook.m b/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestHook.m deleted file mode 100644 index 14d18d3f7..000000000 --- a/tests/libs/Nocilla/Hooks/ASIHTTPRequest/LSASIHTTPRequestHook.m +++ /dev/null @@ -1,48 +0,0 @@ -#import "LSASIHTTPRequestHook.h" -#import "ASIHTTPRequestStub.h" -#import - -@implementation LSASIHTTPRequestHook - -- (void)load { - if (!NSClassFromString(@"ASIHTTPRequest")) return; - [self swizzleASIHTTPRequest]; -} - -- (void)unload { - if (!NSClassFromString(@"ASIHTTPRequest")) return; - [self swizzleASIHTTPRequest]; -} - -#pragma mark - Internal Methods - -- (void)swizzleASIHTTPRequest { - [self swizzleASIHTTPSelector:@selector(responseStatusCode) withSelector:@selector(stub_responseStatusCode)]; - [self swizzleASIHTTPSelector:@selector(responseData) withSelector:@selector(stub_responseData)]; - [self swizzleASIHTTPSelector:@selector(responseHeaders) withSelector:@selector(stub_responseHeaders)]; - [self swizzleASIHTTPSelector:@selector(startRequest) withSelector:@selector(stub_startRequest)]; - [self addMethodToASIHTTPRequest:@selector(stubResponse)]; - [self addMethodToASIHTTPRequest:@selector(setStubResponse:)]; -} - -- (void)swizzleASIHTTPSelector:(SEL)original withSelector:(SEL)stub { - Class asiHttpRequest = NSClassFromString(@"ASIHTTPRequest"); - Method originalMethod = class_getInstanceMethod(asiHttpRequest, original); - Method stubMethod = class_getInstanceMethod([ASIHTTPRequestStub class], stub); - if (!originalMethod || !stubMethod) { - [self fail]; - } - method_exchangeImplementations(originalMethod, stubMethod); -} - -- (void)addMethodToASIHTTPRequest:(SEL)newMethod { - Method method = class_getInstanceMethod([ASIHTTPRequestStub class], newMethod); - const char *types = method_getTypeEncoding(method); - class_addMethod(NSClassFromString(@"ASIHTTPRequest"), newMethod, class_getMethodImplementation([ASIHTTPRequestStub class], newMethod), types); -} - -- (void)fail { - [NSException raise:NSInternalInconsistencyException format:@"Couldn't load ASIHTTPRequest hook."]; -} - -@end diff --git a/tests/libs/Nocilla/Hooks/LSHTTPClientHook.h b/tests/libs/Nocilla/Hooks/LSHTTPClientHook.h deleted file mode 100644 index 80ddc4c22..000000000 --- a/tests/libs/Nocilla/Hooks/LSHTTPClientHook.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - -@interface LSHTTPClientHook : NSObject -- (void)load; -- (void)unload; -@end diff --git a/tests/libs/Nocilla/Hooks/LSHTTPClientHook.m b/tests/libs/Nocilla/Hooks/LSHTTPClientHook.m deleted file mode 100644 index 8256ca66e..000000000 --- a/tests/libs/Nocilla/Hooks/LSHTTPClientHook.m +++ /dev/null @@ -1,13 +0,0 @@ -#import "LSHTTPClientHook.h" - -@implementation LSHTTPClientHook -- (void)load { - [NSException raise:NSInternalInconsistencyException - format:@"Method '%@' not implemented. Subclass '%@' and override it", NSStringFromSelector(_cmd), NSStringFromClass([self class])]; -} - -- (void)unload { - [NSException raise:NSInternalInconsistencyException - format:@"Method '%@' not implemented. Subclass '%@' and override it", NSStringFromSelector(_cmd), NSStringFromClass([self class])]; -} -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/LSHTTPStubURLProtocol.h b/tests/libs/Nocilla/Hooks/NSURLRequest/LSHTTPStubURLProtocol.h deleted file mode 100644 index d5a9a1f09..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/LSHTTPStubURLProtocol.h +++ /dev/null @@ -1,5 +0,0 @@ -#import - -@interface LSHTTPStubURLProtocol : NSURLProtocol - -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/LSHTTPStubURLProtocol.m b/tests/libs/Nocilla/Hooks/NSURLRequest/LSHTTPStubURLProtocol.m deleted file mode 100644 index 9237ab77c..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/LSHTTPStubURLProtocol.m +++ /dev/null @@ -1,49 +0,0 @@ -#import "LSHTTPStubURLProtocol.h" -#import "LSNocilla.h" -#import "NSURLRequest+LSHTTPRequest.h" -#import "LSStubRequest.h" -#import "NSURLRequest+DSL.h" - -@interface NSHTTPURLResponse(UndocumentedInitializer) -- (id)initWithURL:(NSURL*)URL statusCode:(NSInteger)statusCode headerFields:(NSDictionary*)headerFields requestTime:(double)requestTime; -@end - -@implementation LSHTTPStubURLProtocol - -+ (BOOL)canInitWithRequest:(NSURLRequest *)request { - return [@[ @"http", @"https" ] containsObject:request.URL.scheme]; -} - -+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request { - return request; -} -+ (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b { - return NO; -} - -- (void)startLoading { - NSURLRequest* request = [self request]; - id client = [self client]; - - LSStubResponse* stubbedResponse = [[LSNocilla sharedInstance] responseForRequest:request]; - - if (stubbedResponse.shouldFail) { - [client URLProtocol:self didFailWithError:stubbedResponse.error]; - } else { - NSHTTPURLResponse* urlResponse = [[NSHTTPURLResponse alloc] initWithURL:request.URL - statusCode:stubbedResponse.statusCode - headerFields:stubbedResponse.headers - requestTime:0]; - NSData *body = stubbedResponse.body; - - [client URLProtocol:self didReceiveResponse:urlResponse - cacheStoragePolicy:NSURLCacheStorageNotAllowed]; - [client URLProtocol:self didLoadData:body]; - [client URLProtocolDidFinishLoading:self]; - } -} - -- (void)stopLoading { -} - -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/LSNSURLHook.h b/tests/libs/Nocilla/Hooks/NSURLRequest/LSNSURLHook.h deleted file mode 100644 index abba2cbfd..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/LSNSURLHook.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "LSHTTPClientHook.h" - -@interface LSNSURLHook : LSHTTPClientHook - -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/LSNSURLHook.m b/tests/libs/Nocilla/Hooks/NSURLRequest/LSNSURLHook.m deleted file mode 100644 index 77d702002..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/LSNSURLHook.m +++ /dev/null @@ -1,14 +0,0 @@ -#import "LSNSURLHook.h" -#import "LSHTTPStubURLProtocol.h" - -@implementation LSNSURLHook - -- (void)load { - [NSURLProtocol registerClass:[LSHTTPStubURLProtocol class]]; -} - -- (void)unload { - [NSURLProtocol unregisterClass:[LSHTTPStubURLProtocol class]]; -} - -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+DSL.h b/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+DSL.h deleted file mode 100644 index e13dbbd42..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+DSL.h +++ /dev/null @@ -1,5 +0,0 @@ -#import - -@interface NSURLRequest (DSL) -- (NSString *)toNocillaDSL; -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+DSL.m b/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+DSL.m deleted file mode 100644 index 73e249b14..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+DSL.m +++ /dev/null @@ -1,9 +0,0 @@ -#import "NSURLRequest+DSL.h" -#import "LSHTTPRequestDSLRepresentation.h" -#import "NSURLRequest+LSHTTPRequest.h" - -@implementation NSURLRequest (DSL) -- (NSString *)toNocillaDSL { - return [[[LSHTTPRequestDSLRepresentation alloc] initWithRequest:self] description]; -} -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+LSHTTPRequest.h b/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+LSHTTPRequest.h deleted file mode 100644 index 0ac96b2d8..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+LSHTTPRequest.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import "LSHTTPRequest.h" - -@interface NSURLRequest (LSHTTPRequest) - -@end diff --git a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+LSHTTPRequest.m b/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+LSHTTPRequest.m deleted file mode 100644 index 6d1dbd609..000000000 --- a/tests/libs/Nocilla/Hooks/NSURLRequest/NSURLRequest+LSHTTPRequest.m +++ /dev/null @@ -1,45 +0,0 @@ -#import "NSURLRequest+LSHTTPRequest.h" - -@implementation NSURLRequest (LSHTTPRequest) - -- (NSURL*)url { - return self.URL; -} - -- (NSString *)method { - return self.HTTPMethod; -} - -- (NSDictionary *)headers { - return self.allHTTPHeaderFields; -} - -- (NSData *)body { - if (self.HTTPBodyStream) { - NSInputStream *stream = self.HTTPBodyStream; - NSMutableData *data = [NSMutableData data]; - [stream open]; - size_t bufferSize = 4096; - uint8_t *buffer = malloc(bufferSize); - if (buffer == NULL) { - [NSException raise:@"NocillaMallocFailure" format:@"Could not allocate %zu bytes to read HTTPBodyStream", bufferSize]; - } - while ([stream hasBytesAvailable]) { - NSInteger bytesRead = [stream read:buffer maxLength:bufferSize]; - if (bytesRead > 0) { - NSData *readData = [NSData dataWithBytes:buffer length:bytesRead]; - [data appendData:readData]; - } else if (bytesRead < 0) { - [NSException raise:@"NocillaStreamReadError" format:@"An error occurred while reading HTTPBodyStream (%d)", bytesRead]; - } - } - free(buffer); - [stream close]; - - return data; - } - - return self.HTTPBody; -} - -@end diff --git a/tests/libs/Nocilla/LSNocilla.h b/tests/libs/Nocilla/LSNocilla.h deleted file mode 100644 index d271634f2..000000000 --- a/tests/libs/Nocilla/LSNocilla.h +++ /dev/null @@ -1,23 +0,0 @@ -#import -#import "Nocilla.h" - -@class LSStubRequest; -@class LSStubResponse; -@class LSHTTPClientHook; -@protocol LSHTTPRequest; - -extern NSString * const LSUnexpectedRequest; - -@interface LSNocilla : NSObject -+ (LSNocilla *)sharedInstance; - -@property (nonatomic, strong, readonly) NSArray *stubbedRequests; -- (void)start; -- (void)stop; -- (void)addStubbedRequest:(LSStubRequest *)request; -- (void)clearStubs; - -- (void)registerHook:(LSHTTPClientHook *)hook; - -- (LSStubResponse *)responseForRequest:(id)request; -@end diff --git a/tests/libs/Nocilla/LSNocilla.m b/tests/libs/Nocilla/LSNocilla.m deleted file mode 100644 index e23d69e4e..000000000 --- a/tests/libs/Nocilla/LSNocilla.m +++ /dev/null @@ -1,105 +0,0 @@ -#import "LSNocilla.h" -#import "LSNSURLHook.h" -#import "LSStubRequest.h" -#import "LSHTTPRequestDSLRepresentation.h" -#import "LSASIHTTPRequestHook.h" - -NSString * const LSUnexpectedRequest = @"Unexpected Request"; - -@interface LSNocilla () -@property (nonatomic, strong) NSMutableArray *mutableRequests; -@property (nonatomic, strong) NSMutableArray *hooks; -@property (nonatomic, assign, getter = isStarted) BOOL started; - -- (void)loadHooks; -- (void)unloadHooks; -@end - -static LSNocilla *sharedInstace = nil; - -@implementation LSNocilla - -+ (LSNocilla *)sharedInstance { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - sharedInstace = [[self alloc] init]; - }); - return sharedInstace; -} - -- (id)init { - self = [super init]; - if (self) { - _mutableRequests = [NSMutableArray array]; - _hooks = [NSMutableArray array]; - [self registerHook:[[LSNSURLHook alloc] init]]; - } - return self; -} - -- (NSArray *)stubbedRequests { - return [NSArray arrayWithArray:self.mutableRequests]; -} - -- (void)start { - if (!self.isStarted){ - [self loadHooks]; - self.started = YES; - } -} - -- (void)stop { - [self unloadHooks]; - [self clearStubs]; - self.started = NO; -} - -- (void)addStubbedRequest:(LSStubRequest *)request { - [self.mutableRequests addObject:request]; -} - -- (void)clearStubs { - [self.mutableRequests removeAllObjects]; -} - -- (LSStubResponse *)responseForRequest:(id)actualRequest { - NSArray* requests = [LSNocilla sharedInstance].stubbedRequests; - - for(LSStubRequest *someStubbedRequest in requests) { - if ([someStubbedRequest matchesRequest:actualRequest]) { - return someStubbedRequest.response; - } - } - [NSException raise:@"NocillaUnexpectedRequest" format:@"An unexpected HTTP request was fired.\n\nUse this snippet to stub the request:\n%@\n", [[[LSHTTPRequestDSLRepresentation alloc] initWithRequest:actualRequest] description]]; - - return nil; -} - -- (void)registerHook:(LSHTTPClientHook *)hook { - if (![self hookWasRegistered:hook]) { - [[self hooks] addObject:hook]; - } -} - -- (BOOL)hookWasRegistered:(LSHTTPClientHook *)aHook { - for (LSHTTPClientHook *hook in self.hooks) { - if ([hook isMemberOfClass: [aHook class]]) { - return YES; - } - } - return NO; -} -#pragma mark - Private -- (void)loadHooks { - for (LSHTTPClientHook *hook in self.hooks) { - [hook load]; - } -} - -- (void)unloadHooks { - for (LSHTTPClientHook *hook in self.hooks) { - [hook unload]; - } -} - -@end diff --git a/tests/libs/Nocilla/Matchers/LSMatcheable.h b/tests/libs/Nocilla/Matchers/LSMatcheable.h deleted file mode 100644 index f18bb843d..000000000 --- a/tests/libs/Nocilla/Matchers/LSMatcheable.h +++ /dev/null @@ -1,8 +0,0 @@ -#import -#import "LSMatcher.h" - -@protocol LSMatcheable - -- (LSMatcher *)matcher; - -@end diff --git a/tests/libs/Nocilla/Matchers/LSMatcher.h b/tests/libs/Nocilla/Matchers/LSMatcher.h deleted file mode 100644 index 33ec236b9..000000000 --- a/tests/libs/Nocilla/Matchers/LSMatcher.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@interface LSMatcher : NSObject - -- (BOOL)matches:(NSString *)string; - -@end diff --git a/tests/libs/Nocilla/Matchers/LSMatcher.m b/tests/libs/Nocilla/Matchers/LSMatcher.m deleted file mode 100644 index 0ffe99c80..000000000 --- a/tests/libs/Nocilla/Matchers/LSMatcher.m +++ /dev/null @@ -1,9 +0,0 @@ -#import "LSMatcher.h" - -@implementation LSMatcher - -- (BOOL)matches:(NSString *)string { - @throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"[LSMatcher matches:] is an abstract method" userInfo:nil]; -} - -@end diff --git a/tests/libs/Nocilla/Matchers/LSRegexMatcher.h b/tests/libs/Nocilla/Matchers/LSRegexMatcher.h deleted file mode 100644 index 7111c8728..000000000 --- a/tests/libs/Nocilla/Matchers/LSRegexMatcher.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "LSMatcher.h" - -@interface LSRegexMatcher : LSMatcher - -- (instancetype)initWithRegex:(NSRegularExpression *)regex; - -@end diff --git a/tests/libs/Nocilla/Matchers/LSRegexMatcher.m b/tests/libs/Nocilla/Matchers/LSRegexMatcher.m deleted file mode 100644 index 34fef70a9..000000000 --- a/tests/libs/Nocilla/Matchers/LSRegexMatcher.m +++ /dev/null @@ -1,21 +0,0 @@ -#import "LSRegexMatcher.h" - -@interface LSRegexMatcher () -@property (nonatomic, strong) NSRegularExpression *regex; -@end - -@implementation LSRegexMatcher - -- (instancetype)initWithRegex:(NSRegularExpression *)regex { - self = [super init]; - if (self) { - _regex = regex; - } - return self; -} - -- (BOOL)matches:(NSString *)string { - return [self.regex numberOfMatchesInString:string options:0 range:NSMakeRange(0, string.length)] > 0; -} - -@end diff --git a/tests/libs/Nocilla/Matchers/LSStringMatcher.h b/tests/libs/Nocilla/Matchers/LSStringMatcher.h deleted file mode 100644 index 56af21262..000000000 --- a/tests/libs/Nocilla/Matchers/LSStringMatcher.h +++ /dev/null @@ -1,8 +0,0 @@ -#import -#import "LSMatcher.h" - -@interface LSStringMatcher : LSMatcher - -- (instancetype)initWithString:(NSString *)string; - -@end diff --git a/tests/libs/Nocilla/Matchers/LSStringMatcher.m b/tests/libs/Nocilla/Matchers/LSStringMatcher.m deleted file mode 100644 index ea9ffa66d..000000000 --- a/tests/libs/Nocilla/Matchers/LSStringMatcher.m +++ /dev/null @@ -1,23 +0,0 @@ -#import "LSStringMatcher.h" - -@interface LSStringMatcher () - -@property (nonatomic, copy) NSString *string; - -@end - -@implementation LSStringMatcher - -- (instancetype)initWithString:(NSString *)string { - self = [super init]; - if (self) { - _string = string; - } - return self; -} - -- (BOOL)matches:(NSString *)string { - return [self.string isEqualToString:string]; -} - -@end diff --git a/tests/libs/Nocilla/Matchers/NSRegularExpression+Matcheable.h b/tests/libs/Nocilla/Matchers/NSRegularExpression+Matcheable.h deleted file mode 100644 index 9d9717f89..000000000 --- a/tests/libs/Nocilla/Matchers/NSRegularExpression+Matcheable.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import "LSMatcheable.h" - -@interface NSRegularExpression (Matcheable) - -@end diff --git a/tests/libs/Nocilla/Matchers/NSRegularExpression+Matcheable.m b/tests/libs/Nocilla/Matchers/NSRegularExpression+Matcheable.m deleted file mode 100644 index 39792c51c..000000000 --- a/tests/libs/Nocilla/Matchers/NSRegularExpression+Matcheable.m +++ /dev/null @@ -1,10 +0,0 @@ -#import "NSRegularExpression+Matcheable.h" -#import "LSRegexMatcher.h" - -@implementation NSRegularExpression (Matcheable) - -- (LSMatcher *)matcher { - return [[LSRegexMatcher alloc] initWithRegex:self]; -} - -@end diff --git a/tests/libs/Nocilla/Matchers/NSString+Matcheable.h b/tests/libs/Nocilla/Matchers/NSString+Matcheable.h deleted file mode 100644 index ca63ec737..000000000 --- a/tests/libs/Nocilla/Matchers/NSString+Matcheable.h +++ /dev/null @@ -1,6 +0,0 @@ -#import -#import "LSMatcheable.h" - -@interface NSString (Matcheable) - -@end diff --git a/tests/libs/Nocilla/Matchers/NSString+Matcheable.m b/tests/libs/Nocilla/Matchers/NSString+Matcheable.m deleted file mode 100644 index 67809e0af..000000000 --- a/tests/libs/Nocilla/Matchers/NSString+Matcheable.m +++ /dev/null @@ -1,10 +0,0 @@ -#import "NSString+Matcheable.h" -#import "LSStringMatcher.h" - -@implementation NSString (Matcheable) - -- (LSMatcher *)matcher { - return [[LSStringMatcher alloc] initWithString:self]; -} - -@end diff --git a/tests/libs/Nocilla/Model/LSHTTPBody.h b/tests/libs/Nocilla/Model/LSHTTPBody.h deleted file mode 100644 index 8c26687f5..000000000 --- a/tests/libs/Nocilla/Model/LSHTTPBody.h +++ /dev/null @@ -1,5 +0,0 @@ -#import - -@protocol LSHTTPBody -- (NSData *)data; -@end diff --git a/tests/libs/Nocilla/Model/LSHTTPRequest.h b/tests/libs/Nocilla/Model/LSHTTPRequest.h deleted file mode 100644 index f0e796614..000000000 --- a/tests/libs/Nocilla/Model/LSHTTPRequest.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -@protocol LSHTTPRequest - -@property (nonatomic, strong, readonly) NSURL *url; -@property (nonatomic, strong, readonly) NSString *method; -@property (nonatomic, strong, readonly) NSDictionary *headers; -@property (nonatomic, strong, readonly) NSData *body; - -@end diff --git a/tests/libs/Nocilla/Model/LSHTTPResponse.h b/tests/libs/Nocilla/Model/LSHTTPResponse.h deleted file mode 100644 index db643b70a..000000000 --- a/tests/libs/Nocilla/Model/LSHTTPResponse.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@protocol LSHTTPResponse -@property (nonatomic, assign, readonly) NSInteger statusCode; -@property (nonatomic, strong, readonly) NSDictionary *headers; -@property (nonatomic, strong, readonly) NSData *body; -@end diff --git a/tests/libs/Nocilla/Nocilla-Prefix.pch b/tests/libs/Nocilla/Nocilla-Prefix.pch deleted file mode 100644 index 8f4dd6730..000000000 --- a/tests/libs/Nocilla/Nocilla-Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'Nocilla' target in the 'Nocilla' project -// - -#ifdef __OBJC__ - #import -#endif diff --git a/tests/libs/Nocilla/Nocilla.h b/tests/libs/Nocilla/Nocilla.h deleted file mode 100644 index f94a046d6..000000000 --- a/tests/libs/Nocilla/Nocilla.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - -#import "LSNocilla.h" -#import "DSL.h" -#import "NSString+Nocilla.h" -#import "NSData+Nocilla.h" diff --git a/tests/libs/Nocilla/Stubs/LSStubRequest.h b/tests/libs/Nocilla/Stubs/LSStubRequest.h deleted file mode 100644 index 77e61b71e..000000000 --- a/tests/libs/Nocilla/Stubs/LSStubRequest.h +++ /dev/null @@ -1,24 +0,0 @@ -#import -#import "LSStubResponse.h" -#import "LSHTTPRequest.h" - - -@class LSMatcher; -@class LSStubRequest; -@class LSStubResponse; - -@interface LSStubRequest : NSObject -@property (nonatomic, assign, readonly) NSString *method; -@property (nonatomic, strong, readonly) LSMatcher *urlMatcher; -@property (nonatomic, strong, readonly) NSDictionary *headers; -@property (nonatomic, strong, readwrite) NSData *body; - -@property (nonatomic, strong) LSStubResponse *response; - -- (instancetype)initWithMethod:(NSString *)method url:(NSString *)url; -- (instancetype)initWithMethod:(NSString *)method urlMatcher:(LSMatcher *)urlMatcher; - -- (void)setHeader:(NSString *)header value:(NSString *)value; - -- (BOOL)matchesRequest:(id)request; -@end diff --git a/tests/libs/Nocilla/Stubs/LSStubRequest.m b/tests/libs/Nocilla/Stubs/LSStubRequest.m deleted file mode 100644 index 5d91ca91d..000000000 --- a/tests/libs/Nocilla/Stubs/LSStubRequest.m +++ /dev/null @@ -1,98 +0,0 @@ -#import "LSStubRequest.h" -#import "LSMatcher.h" -#import "NSString+Matcheable.h" - -@interface LSStubRequest () -@property (nonatomic, assign, readwrite) NSString *method; -@property (nonatomic, strong, readwrite) LSMatcher *urlMatcher; -@property (nonatomic, strong, readwrite) NSMutableDictionary *mutableHeaders; - --(BOOL)matchesMethod:(id)request; --(BOOL)matchesURL:(id)request; --(BOOL)matchesHeaders:(id)request; --(BOOL)matchesBody:(id)request; -@end - -@implementation LSStubRequest - -- (instancetype)initWithMethod:(NSString *)method url:(NSString *)url { - return [self initWithMethod:method urlMatcher:[url matcher]]; -} - -- (instancetype)initWithMethod:(NSString *)method urlMatcher:(LSMatcher *)urlMatcher; { - self = [super init]; - if (self) { - self.method = method; - self.urlMatcher = urlMatcher; - self.mutableHeaders = [NSMutableDictionary dictionary]; - } - return self; -} - -- (void)setHeader:(NSString *)header value:(NSString *)value { - [self.mutableHeaders setValue:value forKey:header]; -} - -- (NSDictionary *)headers { - return [NSDictionary dictionaryWithDictionary:self.mutableHeaders];; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"StubRequest:\nMethod: %@\nURL: %@\nHeaders: %@\nBody: %@\nResponse: %@", - self.method, - self.urlMatcher, - self.headers, - self.body, - self.response]; -} - -- (LSStubResponse *)response { - if (!_response) { - _response = [[LSStubResponse alloc] initDefaultResponse]; - } - return _response; - -} - -- (BOOL)matchesRequest:(id)request { - if ([self matchesMethod:request] - && [self matchesURL:request] - && [self matchesHeaders:request] - && [self matchesBody:request] - ) { - return YES; - } - return NO; -} - --(BOOL)matchesMethod:(id)request { - if (!self.method || [self.method isEqualToString:request.method]) { - return YES; - } - return NO; -} - --(BOOL)matchesURL:(id)request { - return [self.urlMatcher matches:[request.url absoluteString]]; -} - --(BOOL)matchesHeaders:(id)request { - for (NSString *header in self.headers) { - if (![[request.headers objectForKey:header] isEqualToString:[self.headers objectForKey:header]]) { - return NO; - } - } - return YES; -} - --(BOOL)matchesBody:(id)request { - NSData *selfBody = self.body; - NSData *reqBody = request.body; - if (!selfBody || [selfBody isEqualToData:reqBody]) { - return YES; - } - return NO; -} -@end - - diff --git a/tests/libs/Nocilla/Stubs/LSStubResponse.h b/tests/libs/Nocilla/Stubs/LSStubResponse.h deleted file mode 100644 index d0461db83..000000000 --- a/tests/libs/Nocilla/Stubs/LSStubResponse.h +++ /dev/null @@ -1,18 +0,0 @@ -#import -#import "LSHTTPResponse.h" - -@interface LSStubResponse : NSObject - -@property (nonatomic, assign, readonly) NSInteger statusCode; -@property (nonatomic, strong) NSData *body; -@property (nonatomic, strong, readonly) NSDictionary *headers; - -@property (nonatomic, assign, readonly) BOOL shouldFail; -@property (nonatomic, strong, readonly) NSError *error; - -- (id)initWithError:(NSError *)error; -- (id)initWithStatusCode:(NSInteger)statusCode; -- (id)initWithRawResponse:(NSData *)rawResponseData; -- (id)initDefaultResponse; -- (void)setHeader:(NSString *)header value:(NSString *)value; -@end diff --git a/tests/libs/Nocilla/Stubs/LSStubResponse.m b/tests/libs/Nocilla/Stubs/LSStubResponse.m deleted file mode 100644 index 06f67c758..000000000 --- a/tests/libs/Nocilla/Stubs/LSStubResponse.m +++ /dev/null @@ -1,81 +0,0 @@ -#import "LSStubResponse.h" - -@interface LSStubResponse () -@property (nonatomic, assign, readwrite) NSInteger statusCode; -@property (nonatomic, strong) NSMutableDictionary *mutableHeaders; -@property (nonatomic, assign) UInt64 offset; -@property (nonatomic, assign, getter = isDone) BOOL done; -@property (nonatomic, assign) BOOL shouldFail; -@property (nonatomic, strong) NSError *error; -@end - -@implementation LSStubResponse - -#pragma Initializers -- (id)initDefaultResponse { - self = [super init]; - if (self) { - self.shouldFail = NO; - - self.statusCode = 200; - self.mutableHeaders = [NSMutableDictionary dictionary]; - self.body = [@"" dataUsingEncoding:NSUTF8StringEncoding]; - } - return self; -} - - -- (id)initWithError:(NSError *)error { - self = [super init]; - if (self) { - self.shouldFail = YES; - self.error = error; - } - return self; -} - --(id)initWithStatusCode:(NSInteger)statusCode { - self = [super init]; - if (self) { - self.shouldFail = NO; - self.statusCode = statusCode; - self.mutableHeaders = [NSMutableDictionary dictionary]; - self.body = [@"" dataUsingEncoding:NSUTF8StringEncoding]; - } - return self; -} - -- (id)initWithRawResponse:(NSData *)rawResponseData { - self = [self initDefaultResponse]; - if (self) { - CFHTTPMessageRef httpMessage = CFHTTPMessageCreateEmpty(kCFAllocatorDefault, FALSE); - if (httpMessage) { - CFHTTPMessageAppendBytes(httpMessage, [rawResponseData bytes], [rawResponseData length]); - - self.body = rawResponseData; // By default - - if (CFHTTPMessageIsHeaderComplete(httpMessage)) { - self.statusCode = (NSInteger)CFHTTPMessageGetResponseStatusCode(httpMessage); - self.mutableHeaders = [NSMutableDictionary dictionaryWithDictionary:(__bridge_transfer NSDictionary *)CFHTTPMessageCopyAllHeaderFields(httpMessage)]; - self.body = (__bridge_transfer NSData *)CFHTTPMessageCopyBody(httpMessage); - } - CFRelease(httpMessage); - } - } - return self; -} - -- (void)setHeader:(NSString *)header value:(NSString *)value { - [self.mutableHeaders setValue:value forKey:header]; -} -- (NSDictionary *)headers { - return [NSDictionary dictionaryWithDictionary:self.mutableHeaders]; -} - -- (NSString *)description { - return [NSString stringWithFormat:@"StubRequest:\nStatus Code: %ld\nHeaders: %@\nBody: %@", - (long)self.statusCode, - self.mutableHeaders, - self.body]; -} -@end