diff --git a/Info.plist b/Info.plist new file mode 100644 index 0000000..9bcb244 --- /dev/null +++ b/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/PapcornsAnalytics.podspec b/PapcornsAnalytics.podspec new file mode 100644 index 0000000..c6c278f --- /dev/null +++ b/PapcornsAnalytics.podspec @@ -0,0 +1,26 @@ + +Pod::Spec.new do |spec| + + spec.name = "PapcornsAnalytics" + spec.version = "1.0.0" + spec.summary = "Papcorns Analytics Tool iOS SDK" + + spec.description = "Internal Papcorns Analytics Tool iOS SDK" + + spec.homepage = "https://www.papcorns.com" + + + spec.license = { :type => "GNU", :file => "LICENSE" } + + + spec.authors = { "Kaan" => "kaan@papcorns.com" } + + + spec.source = { :git => "https://github.com/papcorns/PapcornsAnalyticsiOSSDK.git", :tag => "#{spec.version}" } + + + spec.swift_version = '5.0' + spec.ios.deployment_target = '11.0' + spec.source_files = "PapcornsAnalytics/**/*" + +end \ No newline at end of file diff --git a/PapcornsAnalytics.xcodeproj/project.pbxproj b/PapcornsAnalytics.xcodeproj/project.pbxproj new file mode 100644 index 0000000..846c028 --- /dev/null +++ b/PapcornsAnalytics.xcodeproj/project.pbxproj @@ -0,0 +1,454 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 9A8F1997086FED51DB4F9AFC /* Pods_PapcornsAnalytics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8372147F600C75EB3972125E /* Pods_PapcornsAnalytics.framework */; }; + BB9963A32477D7190004D9C7 /* PapcornsAnalytics.h in Headers */ = {isa = PBXBuildFile; fileRef = BB9963A12477D7190004D9C7 /* PapcornsAnalytics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BB9963AC2477D9CE0004D9C7 /* PapcornsConfigManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963AB2477D9CE0004D9C7 /* PapcornsConfigManager.swift */; }; + BB9963AF2477DA070004D9C7 /* PapcornsConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963AE2477DA070004D9C7 /* PapcornsConfiguration.swift */; }; + BB9963B12477DE000004D9C7 /* PapcornsRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963B02477DE000004D9C7 /* PapcornsRequest.swift */; }; + BB9963B52477F5F20004D9C7 /* PapcornsAPISuccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963B42477F5F20004D9C7 /* PapcornsAPISuccess.swift */; }; + BB9963B72477F5FB0004D9C7 /* PapcornsAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963B62477F5FB0004D9C7 /* PapcornsAPIError.swift */; }; + BB9963B92477F6B70004D9C7 /* PapcornsError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963B82477F6B70004D9C7 /* PapcornsError.swift */; }; + BB9963BB2477F8E10004D9C7 /* PapcornsAPILogEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963BA2477F8E10004D9C7 /* PapcornsAPILogEvent.swift */; }; + BB9963BD2477F8EB0004D9C7 /* PapcornsAPILogScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963BC2477F8EB0004D9C7 /* PapcornsAPILogScreen.swift */; }; + BB9963BF2477F8F70004D9C7 /* PapcornsAPISetUser.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963BE2477F8F70004D9C7 /* PapcornsAPISetUser.swift */; }; + BB9963C12477FA670004D9C7 /* PapcornsAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB9963C02477FA670004D9C7 /* PapcornsAnalytics.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 51EFDF6DA917FB0491CBD458 /* Pods-PapcornsAnalytics.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PapcornsAnalytics.debug.xcconfig"; path = "Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.debug.xcconfig"; sourceTree = ""; }; + 8372147F600C75EB3972125E /* Pods_PapcornsAnalytics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PapcornsAnalytics.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BB99639E2477D7190004D9C7 /* PapcornsAnalytics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PapcornsAnalytics.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BB9963A12477D7190004D9C7 /* PapcornsAnalytics.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PapcornsAnalytics.h; sourceTree = ""; }; + BB9963A22477D7190004D9C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BB9963AB2477D9CE0004D9C7 /* PapcornsConfigManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsConfigManager.swift; sourceTree = ""; }; + BB9963AE2477DA070004D9C7 /* PapcornsConfiguration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsConfiguration.swift; sourceTree = ""; }; + BB9963B02477DE000004D9C7 /* PapcornsRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsRequest.swift; sourceTree = ""; }; + BB9963B42477F5F20004D9C7 /* PapcornsAPISuccess.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsAPISuccess.swift; sourceTree = ""; }; + BB9963B62477F5FB0004D9C7 /* PapcornsAPIError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsAPIError.swift; sourceTree = ""; }; + BB9963B82477F6B70004D9C7 /* PapcornsError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsError.swift; sourceTree = ""; }; + BB9963BA2477F8E10004D9C7 /* PapcornsAPILogEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsAPILogEvent.swift; sourceTree = ""; }; + BB9963BC2477F8EB0004D9C7 /* PapcornsAPILogScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsAPILogScreen.swift; sourceTree = ""; }; + BB9963BE2477F8F70004D9C7 /* PapcornsAPISetUser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsAPISetUser.swift; sourceTree = ""; }; + BB9963C02477FA670004D9C7 /* PapcornsAnalytics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PapcornsAnalytics.swift; sourceTree = ""; }; + DAF2E8429F498D990011B9DC /* Pods-PapcornsAnalytics.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PapcornsAnalytics.release.xcconfig"; path = "Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + BB99639B2477D7190004D9C7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 9A8F1997086FED51DB4F9AFC /* Pods_PapcornsAnalytics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 717AA2C3E9ECF058587E44BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8372147F600C75EB3972125E /* Pods_PapcornsAnalytics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + BB9963942477D7190004D9C7 = { + isa = PBXGroup; + children = ( + BB9963A02477D7190004D9C7 /* PapcornsAnalytics */, + BB9963A22477D7190004D9C7 /* Info.plist */, + BB99639F2477D7190004D9C7 /* Products */, + E2849BB03860E3357AEDAA1E /* Pods */, + 717AA2C3E9ECF058587E44BF /* Frameworks */, + ); + sourceTree = ""; + }; + BB99639F2477D7190004D9C7 /* Products */ = { + isa = PBXGroup; + children = ( + BB99639E2477D7190004D9C7 /* PapcornsAnalytics.framework */, + ); + name = Products; + sourceTree = ""; + }; + BB9963A02477D7190004D9C7 /* PapcornsAnalytics */ = { + isa = PBXGroup; + children = ( + BB9963C02477FA670004D9C7 /* PapcornsAnalytics.swift */, + BB9963AA2477D95A0004D9C7 /* Manager */, + BB9963AD2477D9F70004D9C7 /* Models */, + BB9963A92477D94F0004D9C7 /* API */, + BB9963A12477D7190004D9C7 /* PapcornsAnalytics.h */, + ); + path = PapcornsAnalytics; + sourceTree = ""; + }; + BB9963A92477D94F0004D9C7 /* API */ = { + isa = PBXGroup; + children = ( + BB9963BA2477F8E10004D9C7 /* PapcornsAPILogEvent.swift */, + BB9963BC2477F8EB0004D9C7 /* PapcornsAPILogScreen.swift */, + BB9963BE2477F8F70004D9C7 /* PapcornsAPISetUser.swift */, + ); + path = API; + sourceTree = ""; + }; + BB9963AA2477D95A0004D9C7 /* Manager */ = { + isa = PBXGroup; + children = ( + BB9963AB2477D9CE0004D9C7 /* PapcornsConfigManager.swift */, + ); + path = Manager; + sourceTree = ""; + }; + BB9963AD2477D9F70004D9C7 /* Models */ = { + isa = PBXGroup; + children = ( + BB9963AE2477DA070004D9C7 /* PapcornsConfiguration.swift */, + BB9963B02477DE000004D9C7 /* PapcornsRequest.swift */, + BB9963B42477F5F20004D9C7 /* PapcornsAPISuccess.swift */, + BB9963B62477F5FB0004D9C7 /* PapcornsAPIError.swift */, + BB9963B82477F6B70004D9C7 /* PapcornsError.swift */, + ); + path = Models; + sourceTree = ""; + }; + E2849BB03860E3357AEDAA1E /* Pods */ = { + isa = PBXGroup; + children = ( + 51EFDF6DA917FB0491CBD458 /* Pods-PapcornsAnalytics.debug.xcconfig */, + DAF2E8429F498D990011B9DC /* Pods-PapcornsAnalytics.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + BB9963992477D7190004D9C7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BB9963A32477D7190004D9C7 /* PapcornsAnalytics.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + BB99639D2477D7190004D9C7 /* PapcornsAnalytics */ = { + isa = PBXNativeTarget; + buildConfigurationList = BB9963A62477D7190004D9C7 /* Build configuration list for PBXNativeTarget "PapcornsAnalytics" */; + buildPhases = ( + D4BA437E2D051AB4564F8744 /* [CP] Check Pods Manifest.lock */, + BB9963992477D7190004D9C7 /* Headers */, + BB99639A2477D7190004D9C7 /* Sources */, + BB99639B2477D7190004D9C7 /* Frameworks */, + BB99639C2477D7190004D9C7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = PapcornsAnalytics; + productName = PapcornsAnalytics; + productReference = BB99639E2477D7190004D9C7 /* PapcornsAnalytics.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BB9963952477D7190004D9C7 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1150; + ORGANIZATIONNAME = Papcorns; + TargetAttributes = { + BB99639D2477D7190004D9C7 = { + CreatedOnToolsVersion = 11.5; + LastSwiftMigration = 1150; + }; + }; + }; + buildConfigurationList = BB9963982477D7190004D9C7 /* Build configuration list for PBXProject "PapcornsAnalytics" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = BB9963942477D7190004D9C7; + productRefGroup = BB99639F2477D7190004D9C7 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + BB99639D2477D7190004D9C7 /* PapcornsAnalytics */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + BB99639C2477D7190004D9C7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + D4BA437E2D051AB4564F8744 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-PapcornsAnalytics-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + BB99639A2477D7190004D9C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BB9963BB2477F8E10004D9C7 /* PapcornsAPILogEvent.swift in Sources */, + BB9963B12477DE000004D9C7 /* PapcornsRequest.swift in Sources */, + BB9963BD2477F8EB0004D9C7 /* PapcornsAPILogScreen.swift in Sources */, + BB9963BF2477F8F70004D9C7 /* PapcornsAPISetUser.swift in Sources */, + BB9963C12477FA670004D9C7 /* PapcornsAnalytics.swift in Sources */, + BB9963B52477F5F20004D9C7 /* PapcornsAPISuccess.swift in Sources */, + BB9963AF2477DA070004D9C7 /* PapcornsConfiguration.swift in Sources */, + BB9963AC2477D9CE0004D9C7 /* PapcornsConfigManager.swift in Sources */, + BB9963B72477F5FB0004D9C7 /* PapcornsAPIError.swift in Sources */, + BB9963B92477F6B70004D9C7 /* PapcornsError.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + BB9963A42477D7190004D9C7 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + 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 = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BB9963A52477D7190004D9C7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + 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 = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + BB9963A72477D7190004D9C7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 51EFDF6DA917FB0491CBD458 /* Pods-PapcornsAnalytics.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 7W89KC43S5; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.papcorns.analytics.PapcornsAnalytics; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + BB9963A82477D7190004D9C7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DAF2E8429F498D990011B9DC /* Pods-PapcornsAnalytics.release.xcconfig */; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 7W89KC43S5; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.papcorns.analytics.PapcornsAnalytics; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SUPPORTS_MACCATALYST = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + BB9963982477D7190004D9C7 /* Build configuration list for PBXProject "PapcornsAnalytics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BB9963A42477D7190004D9C7 /* Debug */, + BB9963A52477D7190004D9C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BB9963A62477D7190004D9C7 /* Build configuration list for PBXNativeTarget "PapcornsAnalytics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BB9963A72477D7190004D9C7 /* Debug */, + BB9963A82477D7190004D9C7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BB9963952477D7190004D9C7 /* Project object */; +} diff --git a/PapcornsAnalytics.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/PapcornsAnalytics.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..5d61c4a --- /dev/null +++ b/PapcornsAnalytics.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/PapcornsAnalytics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/PapcornsAnalytics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/PapcornsAnalytics.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/PapcornsAnalytics.xcodeproj/project.xcworkspace/xcuserdata/barbayrak.xcuserdatad/UserInterfaceState.xcuserstate b/PapcornsAnalytics.xcodeproj/project.xcworkspace/xcuserdata/barbayrak.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..aa1f4e1 Binary files /dev/null and b/PapcornsAnalytics.xcodeproj/project.xcworkspace/xcuserdata/barbayrak.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/PapcornsAnalytics.xcodeproj/xcshareddata/xcschemes/PapcornsAnalytics.xcscheme b/PapcornsAnalytics.xcodeproj/xcshareddata/xcschemes/PapcornsAnalytics.xcscheme new file mode 100644 index 0000000..63a7076 --- /dev/null +++ b/PapcornsAnalytics.xcodeproj/xcshareddata/xcschemes/PapcornsAnalytics.xcscheme @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/PapcornsAnalytics.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/xcschememanagement.plist b/PapcornsAnalytics.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..d285bc2 --- /dev/null +++ b/PapcornsAnalytics.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + PapcornsAnalytics.xcscheme_^#shared#^_ + + orderHint + 0 + + + SuppressBuildableAutocreation + + BB99639D2477D7190004D9C7 + + primary + + + + + diff --git a/PapcornsAnalytics.xcworkspace/contents.xcworkspacedata b/PapcornsAnalytics.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3eb9f7f --- /dev/null +++ b/PapcornsAnalytics.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/PapcornsAnalytics.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/PapcornsAnalytics.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/PapcornsAnalytics.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/PapcornsAnalytics.xcworkspace/xcuserdata/barbayrak.xcuserdatad/UserInterfaceState.xcuserstate b/PapcornsAnalytics.xcworkspace/xcuserdata/barbayrak.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..1e67217 Binary files /dev/null and b/PapcornsAnalytics.xcworkspace/xcuserdata/barbayrak.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/PapcornsAnalytics/API/PapcornsAPILogEvent.swift b/PapcornsAnalytics/API/PapcornsAPILogEvent.swift new file mode 100644 index 0000000..9497670 --- /dev/null +++ b/PapcornsAnalytics/API/PapcornsAPILogEvent.swift @@ -0,0 +1,32 @@ +// +// PapcornsAPILogEvent.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +class PapcornsAPILogEvent: PapcornsRequest { + + convenience init(eventName : String,eventParameters : [String : Any]) { + self.init() + + addBodyItem(name: "userId", value: PapcornsConfigManager.shared.config.userId) + addBodyItem(name: "eventName", value: eventName) + addBodyItem(name: "eventParameters", value: eventParameters) + addBodyItem(name: "appId", value: PapcornsConfigManager.shared.config.appId) + addBodyItem(name: "appVersion", value: PapcornsConfigManager.shared.config.appVersion) + + } + + override var httpMethod: HTTPMethod { + return .POST + } + + override var path: String { + return "/logEvent" + } + +} diff --git a/PapcornsAnalytics/API/PapcornsAPILogScreen.swift b/PapcornsAnalytics/API/PapcornsAPILogScreen.swift new file mode 100644 index 0000000..3d8f07e --- /dev/null +++ b/PapcornsAnalytics/API/PapcornsAPILogScreen.swift @@ -0,0 +1,32 @@ +// +// PapcornsAPILogScreen.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +class PapcornsAPILogScreen: PapcornsRequest { + + convenience init(screenName : String,screenParameters : [String : Any]) { + self.init() + + addBodyItem(name: "userId", value: PapcornsConfigManager.shared.config.userId) + addBodyItem(name: "eventName", value: screenName) + addBodyItem(name: "eventParameters", value: screenParameters) + addBodyItem(name: "appId", value: PapcornsConfigManager.shared.config.appId) + addBodyItem(name: "appVersion", value: PapcornsConfigManager.shared.config.appVersion) + + } + + override var httpMethod: HTTPMethod { + return .POST + } + + override var path: String { + return "/screenLog" + } + +} diff --git a/PapcornsAnalytics/API/PapcornsAPISetUser.swift b/PapcornsAnalytics/API/PapcornsAPISetUser.swift new file mode 100644 index 0000000..0e34f7f --- /dev/null +++ b/PapcornsAnalytics/API/PapcornsAPISetUser.swift @@ -0,0 +1,37 @@ +// +// PapcornsAPISetUser.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +class PapcornsAPISetUser: PapcornsRequest { + + convenience init(userId : String) { + self.init() + + addBodyItem(name: "userId", value: PapcornsConfigManager.shared.config.userId) + addBodyItem(name: "idfa", value: PapcornsConfigManager.shared.config.idfa ?? "") + addBodyItem(name: "deviceId", value: PapcornsConfigManager.shared.config.deviceId ?? "") + addBodyItem(name: "deviceModel", value: PapcornsConfigManager.shared.config.deviceModel ?? "") + addBodyItem(name: "deviceVersion", value: PapcornsConfigManager.shared.config.osVersion ?? "") + addBodyItem(name: "preferedLanguage", value: PapcornsConfigManager.shared.config.language ?? "") + addBodyItem(name: "country", value: PapcornsConfigManager.shared.config.country ?? "") + addBodyItem(name: "ip", value: PapcornsConfigManager.shared.config.ip ?? "") + addBodyItem(name: "appId", value: PapcornsConfigManager.shared.config.appId) + addBodyItem(name: "appVersion", value: PapcornsConfigManager.shared.config.appVersion) + + } + + override var httpMethod: HTTPMethod { + return .POST + } + + override var path: String { + return "/userLog" + } + +} diff --git a/PapcornsAnalytics/Manager/PapcornsConfigManager.swift b/PapcornsAnalytics/Manager/PapcornsConfigManager.swift new file mode 100644 index 0000000..93de0e9 --- /dev/null +++ b/PapcornsAnalytics/Manager/PapcornsConfigManager.swift @@ -0,0 +1,21 @@ +// +// PapcornsConfigManager.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation +import UIKit + +class PapcornsConfigManager { + + static let shared = PapcornsConfigManager() + private (set) var config : PapcornsConfiguration + + private init() { + config = PapcornsConfiguration() + } + +} diff --git a/PapcornsAnalytics/Models/PapcornsAPIError.swift b/PapcornsAnalytics/Models/PapcornsAPIError.swift new file mode 100644 index 0000000..4d57b24 --- /dev/null +++ b/PapcornsAnalytics/Models/PapcornsAPIError.swift @@ -0,0 +1,24 @@ +// +// PapcornsAPIError.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +class PapcornsAPIError: Codable { + + var status:String? + var message:String? + + private enum CodingKeys: String, CodingKey { + case status = "status" + case message = "message" + } + + var error : PapcornsError { + return .UnknownError + } +} diff --git a/PapcornsAnalytics/Models/PapcornsAPISuccess.swift b/PapcornsAnalytics/Models/PapcornsAPISuccess.swift new file mode 100644 index 0000000..ca2d72e --- /dev/null +++ b/PapcornsAnalytics/Models/PapcornsAPISuccess.swift @@ -0,0 +1,21 @@ +// +// PapcornsAPISuccess.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +class PapcornsAPISuccess: Codable { + + var status:String? + var message:String? + + private enum CodingKeys: String, CodingKey { + case status = "status" + case message = "message" + } + +} diff --git a/PapcornsAnalytics/Models/PapcornsConfiguration.swift b/PapcornsAnalytics/Models/PapcornsConfiguration.swift new file mode 100644 index 0000000..b98e245 --- /dev/null +++ b/PapcornsAnalytics/Models/PapcornsConfiguration.swift @@ -0,0 +1,188 @@ +// +// PapcornsConfiguration.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation +import UIKit +import AdSupport + +class PapcornsConfiguration { + + var appId : String = "" + var appVersion : String = "" + var userId : String = "" + + fileprivate var adManager: ASIdentifierManager { + return ASIdentifierManager.shared() + } + + fileprivate var localeManager: Locale { + return Locale.current + } + + var isAdTrackingEnabled: Bool { + return adManager.isAdvertisingTrackingEnabled + } + + var idfa: String? { + guard isAdTrackingEnabled else { return nil } + return adManager.advertisingIdentifier.uuidString + } + + var ip : String? { + return getIPAddress() + } + + var language : String? { + return localeManager.languageCode + } + + var country : String? { + return localeManager.regionCode + } + + var deviceId : String? { + return UIDevice.current.identifierForVendor!.uuidString + } + + var deviceModel : String? { + return UIDevice.modelName + } + + var osVersion : String? { + return UIDevice.current.systemVersion + } + + var host:String { + return "us-central1-appanalytics-26210.cloudfunctions.net" + } + + var urlScheme:String { + return "https" + } + +} + +extension PapcornsConfiguration { + + func getIPAddress() -> String? { + var address : String? + + // Get list of all interfaces on the local machine: + var ifaddr : UnsafeMutablePointer? + guard getifaddrs(&ifaddr) == 0 else { return nil } + guard let firstAddr = ifaddr else { return nil } + + // For each interface ... + for ifptr in sequence(first: firstAddr, next: { $0.pointee.ifa_next }) { + let interface = ifptr.pointee + + // Check for IPv4 or IPv6 interface: + let addrFamily = interface.ifa_addr.pointee.sa_family + if addrFamily == UInt8(AF_INET) || addrFamily == UInt8(AF_INET6) { + + // Check interface name: + let name = String(cString: interface.ifa_name) + if name == "en0" || name == "pdp_ip0" { + + // Convert interface address to a human readable string: + var hostname = [CChar](repeating: 0, count: Int(NI_MAXHOST)) + getnameinfo(interface.ifa_addr, socklen_t(interface.ifa_addr.pointee.sa_len), + &hostname, socklen_t(hostname.count), + nil, socklen_t(0), NI_NUMERICHOST) + address = String(cString: hostname) + } + } + } + freeifaddrs(ifaddr) + + return address + } + +} + +public extension UIDevice { + + static let modelName: String = { + var systemInfo = utsname() + uname(&systemInfo) + let machineMirror = Mirror(reflecting: systemInfo.machine) + let identifier = machineMirror.children.reduce("") { identifier, element in + guard let value = element.value as? Int8, value != 0 else { return identifier } + return identifier + String(UnicodeScalar(UInt8(value))) + } + + func mapToDevice(identifier: String) -> String { // swiftlint:disable:this cyclomatic_complexity + #if os(iOS) + switch identifier { + case "iPod5,1": return "iPod touch (5th generation)" + case "iPod7,1": return "iPod touch (6th generation)" + case "iPod9,1": return "iPod touch (7th generation)" + case "iPhone3,1", "iPhone3,2", "iPhone3,3": return "iPhone 4" + case "iPhone4,1": return "iPhone 4s" + case "iPhone5,1", "iPhone5,2": return "iPhone 5" + case "iPhone5,3", "iPhone5,4": return "iPhone 5c" + case "iPhone6,1", "iPhone6,2": return "iPhone 5s" + case "iPhone7,2": return "iPhone 6" + case "iPhone7,1": return "iPhone 6 Plus" + case "iPhone8,1": return "iPhone 6s" + case "iPhone8,2": return "iPhone 6s Plus" + case "iPhone8,4": return "iPhone SE" + case "iPhone9,1", "iPhone9,3": return "iPhone 7" + case "iPhone9,2", "iPhone9,4": return "iPhone 7 Plus" + case "iPhone10,1", "iPhone10,4": return "iPhone 8" + case "iPhone10,2", "iPhone10,5": return "iPhone 8 Plus" + case "iPhone10,3", "iPhone10,6": return "iPhone X" + case "iPhone11,2": return "iPhone XS" + case "iPhone11,4", "iPhone11,6": return "iPhone XS Max" + case "iPhone11,8": return "iPhone XR" + case "iPhone12,1": return "iPhone 11" + case "iPhone12,3": return "iPhone 11 Pro" + case "iPhone12,5": return "iPhone 11 Pro Max" + case "iPhone12,8": return "iPhone SE (2nd generation)" + case "iPad2,1", "iPad2,2", "iPad2,3", "iPad2,4":return "iPad 2" + case "iPad3,1", "iPad3,2", "iPad3,3": return "iPad (3rd generation)" + case "iPad3,4", "iPad3,5", "iPad3,6": return "iPad (4th generation)" + case "iPad6,11", "iPad6,12": return "iPad (5th generation)" + case "iPad7,5", "iPad7,6": return "iPad (6th generation)" + case "iPad7,11", "iPad7,12": return "iPad (7th generation)" + case "iPad4,1", "iPad4,2", "iPad4,3": return "iPad Air" + case "iPad5,3", "iPad5,4": return "iPad Air 2" + case "iPad11,4", "iPad11,5": return "iPad Air (3rd generation)" + case "iPad2,5", "iPad2,6", "iPad2,7": return "iPad mini" + case "iPad4,4", "iPad4,5", "iPad4,6": return "iPad mini 2" + case "iPad4,7", "iPad4,8", "iPad4,9": return "iPad mini 3" + case "iPad5,1", "iPad5,2": return "iPad mini 4" + case "iPad11,1", "iPad11,2": return "iPad mini (5th generation)" + case "iPad6,3", "iPad6,4": return "iPad Pro (9.7-inch)" + case "iPad7,3", "iPad7,4": return "iPad Pro (10.5-inch)" + case "iPad8,1", "iPad8,2", "iPad8,3", "iPad8,4":return "iPad Pro (11-inch)" + case "iPad8,9", "iPad8,10": return "iPad Pro (11-inch) (2nd generation)" + case "iPad6,7", "iPad6,8": return "iPad Pro (12.9-inch)" + case "iPad7,1", "iPad7,2": return "iPad Pro (12.9-inch) (2nd generation)" + case "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8":return "iPad Pro (12.9-inch) (3rd generation)" + case "iPad8,11", "iPad8,12": return "iPad Pro (12.9-inch) (4th generation)" + case "AppleTV5,3": return "Apple TV" + case "AppleTV6,2": return "Apple TV 4K" + case "AudioAccessory1,1": return "HomePod" + case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "iOS"))" + default: return identifier + } + #elseif os(tvOS) + switch identifier { + case "AppleTV5,3": return "Apple TV 4" + case "AppleTV6,2": return "Apple TV 4K" + case "i386", "x86_64": return "Simulator \(mapToDevice(identifier: ProcessInfo().environment["SIMULATOR_MODEL_IDENTIFIER"] ?? "tvOS"))" + default: return identifier + } + #endif + } + + return mapToDevice(identifier: identifier) + }() + +} diff --git a/PapcornsAnalytics/Models/PapcornsError.swift b/PapcornsAnalytics/Models/PapcornsError.swift new file mode 100644 index 0000000..cfe3175 --- /dev/null +++ b/PapcornsAnalytics/Models/PapcornsError.swift @@ -0,0 +1,24 @@ +// +// PapcornsError.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +enum PapcornsError: Error { + case UnknownError +} + +extension PapcornsError: LocalizedError { + + public var errorDescription: String? { + switch self { + case .UnknownError: + return "Unknown error" + } + } + +} diff --git a/PapcornsAnalytics/Models/PapcornsRequest.swift b/PapcornsAnalytics/Models/PapcornsRequest.swift new file mode 100644 index 0000000..be1b691 --- /dev/null +++ b/PapcornsAnalytics/Models/PapcornsRequest.swift @@ -0,0 +1,150 @@ +// +// PapcornsRequest.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +public enum HTTPMethod: String { + case GET = "GET" + case POST = "POST" + case PUT = "PUT" + case DELETE = "DELETE" +} + +typealias PapcornsRequestFailClosure = (Error) -> () +typealias PapcornsEmptySuccessClosure = ()->() + +class PapcornsRequest { + + typealias PapcornsRequestSuccessClosure = (PapcornsAPISuccess) -> () + + var path:String { + return "/" + } + var httpMethod:HTTPMethod { + return .GET + } + var needsAuthentication:Bool { + return true + } + var dateDecodingStrategy:JSONDecoder.DateDecodingStrategy { + return .secondsSince1970 + } + + private var httpHeaders:[String:String] = [ + "Content-Type":"application/json", + "Accept":"application/json" + ] + + private var queryItems:[URLQueryItem]? + private var bodyItems:[String:Any]? + + + var url: URL? { + var components = URLComponents() + components.scheme = PapcornsConfigManager.shared.config.urlScheme + components.host = PapcornsConfigManager.shared.config.host + components.path = path + components.queryItems = queryItems + return components.url + } + + func addHeader(name:String, value:String) { + httpHeaders[name] = value + } + + + func addQueryItem(name:String, value:String?) { + if queryItems == nil { + queryItems = [] + } + queryItems?.append(.init(name: name, value: value)) + } + + func addBodyItem(name:String, value:Any) { + if bodyItems == nil { + bodyItems = [:] + } + bodyItems?[name] = value + } + + private func generateRequest(url:URL) -> URLRequest { + var request = URLRequest(url: url) + request.httpMethod = self.httpMethod.rawValue + self.httpHeaders.forEach({request.setValue($0.value, forHTTPHeaderField: $0.key)}) + + if let bodyItems = self.bodyItems, let bodyData = try? JSONSerialization.data(withJSONObject: bodyItems, options: []) { + request.httpBody = bodyData + } + return request + } + + func startRequest(_ onSuccess:PapcornsRequestSuccessClosure? = nil, _ onFail:PapcornsRequestFailClosure? = nil) { + guard let url = self.url else { + print("PapcornsAnalytics -> Url is missing") + return + } + let session = URLSession.shared + let request = generateRequest(url: url) + + let task = session.dataTask(with: request) { (data, response, error) in + + if let error = error { + onFail?(error) + } else if let data = data { + + let responseOK = { + do { + let decoder = JSONDecoder() + decoder.dateDecodingStrategy = self.dateDecodingStrategy + let response = try decoder.decode(PapcornsAPISuccess.self , from: data) + onSuccess?(response) + } catch { + onFail?(error) + } + } + + //On fail + let apiError = { + do { + let decoder = JSONDecoder() + decoder.dateDecodingStrategy = self.dateDecodingStrategy + let response = try decoder.decode(PapcornsAPIError.self , from: data) + onFail?(response.error) + + } catch { + onFail?(error) + } + } + + if let response = response as? HTTPURLResponse { + if response.statusCode >= 200 && response.statusCode < 300 { + responseOK() + } + else { + apiError() + } + } + + + + } + } + + task.resume() + } + + + func request(_ onSuccess:PapcornsRequestSuccessClosure? = nil, _ onFail:PapcornsRequestFailClosure? = nil) { + startRequest({ (response) in + onSuccess?(response) + }) { (error) in + onFail?(error) + } + } + +} diff --git a/PapcornsAnalytics/PapcornsAnalytics.h b/PapcornsAnalytics/PapcornsAnalytics.h new file mode 100644 index 0000000..aca53d3 --- /dev/null +++ b/PapcornsAnalytics/PapcornsAnalytics.h @@ -0,0 +1,19 @@ +// +// PapcornsAnalytics.h +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +#import + +//! Project version number for PapcornsAnalytics. +FOUNDATION_EXPORT double PapcornsAnalyticsVersionNumber; + +//! Project version string for PapcornsAnalytics. +FOUNDATION_EXPORT const unsigned char PapcornsAnalyticsVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/PapcornsAnalytics/PapcornsAnalytics.swift b/PapcornsAnalytics/PapcornsAnalytics.swift new file mode 100644 index 0000000..57070cb --- /dev/null +++ b/PapcornsAnalytics/PapcornsAnalytics.swift @@ -0,0 +1,58 @@ +// +// PapcornsAnalytics.swift +// PapcornsAnalytics +// +// Created by Kaan Baris BAYRAK on 22.05.2020. +// Copyright © 2020 Papcorns. All rights reserved. +// + +import Foundation + +public class PapcornsAnalytics { + + public static var appId:String { + set { + PapcornsConfigManager.shared.config.appId = newValue + } + get { + return PapcornsConfigManager.shared.config.appId + } + } + + public static var appVersion:String { + set { + PapcornsConfigManager.shared.config.appVersion = newValue + } + get { + return PapcornsConfigManager.shared.config.appVersion + } + } + + public static var userId:String { + set { + PapcornsConfigManager.shared.config.userId = newValue + } + get { + return PapcornsConfigManager.shared.config.userId + } + } + + public static func configure(appId:String, + appVersion:String) { + PapcornsConfigManager.shared.config.appId = appId + PapcornsConfigManager.shared.config.appVersion = appVersion + } + + public static func logScreen(screenName : String , screenParameters : [String:Any]) { + PapcornsAPILogScreen.init(screenName: screenName, screenParameters: screenParameters).request() + } + + public static func logEvent(eventName : String , eventParameters : [String:Any]) { + PapcornsAPILogEvent.init(eventName: eventName, eventParameters: eventParameters).request() + } + + public static func logScreen(userId : String) { + PapcornsConfigManager.shared.config.userId = userId + PapcornsAPISetUser.init(userId: userId).request() + } +} diff --git a/Podfile b/Podfile new file mode 100644 index 0000000..b37daee --- /dev/null +++ b/Podfile @@ -0,0 +1,10 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'PapcornsAnalytics' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + # Pods for PapcornsAnalytics + +end diff --git a/Podfile.lock b/Podfile.lock new file mode 100644 index 0000000..13efe44 --- /dev/null +++ b/Podfile.lock @@ -0,0 +1,3 @@ +PODFILE CHECKSUM: 44f07ffd14972ff0ccdf51966afcb523db058207 + +COCOAPODS: 1.9.1 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock new file mode 100644 index 0000000..13efe44 --- /dev/null +++ b/Pods/Manifest.lock @@ -0,0 +1,3 @@ +PODFILE CHECKSUM: 44f07ffd14972ff0ccdf51966afcb523db058207 + +COCOAPODS: 1.9.1 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 0000000..07fd355 --- /dev/null +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,405 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 1645337CF6525C6D57F702E5BFBCB2D2 /* Pods-PapcornsAnalytics-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 571357A7127A8727F32D17560C724FA2 /* Pods-PapcornsAnalytics-dummy.m */; }; + 1F9DA18F353B9A944745D1BD4E482C19 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */; }; + B80F19FF77C7D605AACCD2898C35BD13 /* Pods-PapcornsAnalytics-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E449B0F30E831091994F1901BFF79ED /* Pods-PapcornsAnalytics-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 21BA8F35FB067CBFF4FF93113E161E0D /* Pods_PapcornsAnalytics.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_PapcornsAnalytics.framework; path = "Pods-PapcornsAnalytics.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.2.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 4064E06BE76B6C10FF9C205677D055EC /* Pods-PapcornsAnalytics-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PapcornsAnalytics-acknowledgements.plist"; sourceTree = ""; }; + 4420A672B4E931CAFFEA5352147B9A6F /* Pods-PapcornsAnalytics-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-PapcornsAnalytics-acknowledgements.markdown"; sourceTree = ""; }; + 571357A7127A8727F32D17560C724FA2 /* Pods-PapcornsAnalytics-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-PapcornsAnalytics-dummy.m"; sourceTree = ""; }; + 6C15962280AA0021E25D6DD18B0784A4 /* Pods-PapcornsAnalytics.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PapcornsAnalytics.release.xcconfig"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9E449B0F30E831091994F1901BFF79ED /* Pods-PapcornsAnalytics-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-PapcornsAnalytics-umbrella.h"; sourceTree = ""; }; + A78D3FE984ECA98FC8138E62137E3BA3 /* Pods-PapcornsAnalytics.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-PapcornsAnalytics.modulemap"; sourceTree = ""; }; + C1DB43508E25A6ADE74C15ADCFD9ACEA /* Pods-PapcornsAnalytics-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-PapcornsAnalytics-Info.plist"; sourceTree = ""; }; + C8F22F7B2BD6CFF186AD5181893DD38D /* Pods-PapcornsAnalytics.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-PapcornsAnalytics.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 867DF3156D7AFD078CED2CF3124A9268 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F9DA18F353B9A944745D1BD4E482C19 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + A17E5A7063B37A4DB5F4AE7C8DB65729 /* Products */ = { + isa = PBXGroup; + children = ( + 21BA8F35FB067CBFF4FF93113E161E0D /* Pods_PapcornsAnalytics.framework */, + ); + name = Products; + sourceTree = ""; + }; + B0B3B4F0828ACC560F5733DC88809EF9 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + DC5ACF705E0BC54F81D9F9E0B2A54554 /* Pods-PapcornsAnalytics */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + C0834CEBB1379A84116EF29F93051C60 /* iOS */ = { + isa = PBXGroup; + children = ( + 3212113385A8FBBDB272BD23C409FF61 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */, + A17E5A7063B37A4DB5F4AE7C8DB65729 /* Products */, + B0B3B4F0828ACC560F5733DC88809EF9 /* Targets Support Files */, + ); + sourceTree = ""; + }; + D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + C0834CEBB1379A84116EF29F93051C60 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + DC5ACF705E0BC54F81D9F9E0B2A54554 /* Pods-PapcornsAnalytics */ = { + isa = PBXGroup; + children = ( + A78D3FE984ECA98FC8138E62137E3BA3 /* Pods-PapcornsAnalytics.modulemap */, + 4420A672B4E931CAFFEA5352147B9A6F /* Pods-PapcornsAnalytics-acknowledgements.markdown */, + 4064E06BE76B6C10FF9C205677D055EC /* Pods-PapcornsAnalytics-acknowledgements.plist */, + 571357A7127A8727F32D17560C724FA2 /* Pods-PapcornsAnalytics-dummy.m */, + C1DB43508E25A6ADE74C15ADCFD9ACEA /* Pods-PapcornsAnalytics-Info.plist */, + 9E449B0F30E831091994F1901BFF79ED /* Pods-PapcornsAnalytics-umbrella.h */, + C8F22F7B2BD6CFF186AD5181893DD38D /* Pods-PapcornsAnalytics.debug.xcconfig */, + 6C15962280AA0021E25D6DD18B0784A4 /* Pods-PapcornsAnalytics.release.xcconfig */, + ); + name = "Pods-PapcornsAnalytics"; + path = "Target Support Files/Pods-PapcornsAnalytics"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 63E021E057A1F523274ED2270FACBC08 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B80F19FF77C7D605AACCD2898C35BD13 /* Pods-PapcornsAnalytics-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + CD01BDEA119BF8F42F460E5FE947BDAF /* Pods-PapcornsAnalytics */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9215E90AEBB46EE2F3FFF0958E8CEB4C /* Build configuration list for PBXNativeTarget "Pods-PapcornsAnalytics" */; + buildPhases = ( + 63E021E057A1F523274ED2270FACBC08 /* Headers */, + 395D503639363281C1F2950EC6E42B5A /* Sources */, + 867DF3156D7AFD078CED2CF3124A9268 /* Frameworks */, + 1665FC609D8AA6ABD7D729A745BDEEE4 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-PapcornsAnalytics"; + productName = "Pods-PapcornsAnalytics"; + productReference = 21BA8F35FB067CBFF4FF93113E161E0D /* Pods_PapcornsAnalytics.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = A17E5A7063B37A4DB5F4AE7C8DB65729 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + CD01BDEA119BF8F42F460E5FE947BDAF /* Pods-PapcornsAnalytics */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1665FC609D8AA6ABD7D729A745BDEEE4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 395D503639363281C1F2950EC6E42B5A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1645337CF6525C6D57F702E5BFBCB2D2 /* Pods-PapcornsAnalytics-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 257497152829C177993B5EC99C1D227A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + 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 = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + 85FF51C80FC95C5834D8DDE8E4AD69CB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C8F22F7B2BD6CFF186AD5181893DD38D /* Pods-PapcornsAnalytics.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + DD8F832993327D1DD8046C3CBCBD97CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", + "$(inherited)", + ); + 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 = 11.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + F383C34F41CCE6CA81E6590493FA40D9 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6C15962280AA0021E25D6DD18B0784A4 /* Pods-PapcornsAnalytics.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD8F832993327D1DD8046C3CBCBD97CD /* Debug */, + 257497152829C177993B5EC99C1D227A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9215E90AEBB46EE2F3FFF0958E8CEB4C /* Build configuration list for PBXNativeTarget "Pods-PapcornsAnalytics" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 85FF51C80FC95C5834D8DDE8E4AD69CB /* Debug */, + F383C34F41CCE6CA81E6590493FA40D9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; +} diff --git a/Pods/Pods.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/Pods-PapcornsAnalytics.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/Pods-PapcornsAnalytics.xcscheme new file mode 100644 index 0000000..b18a518 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/Pods-PapcornsAnalytics.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/xcschememanagement.plist b/Pods/Pods.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..04021ec --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/barbayrak.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,16 @@ + + + + + SchemeUserState + + Pods-PapcornsAnalytics.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + + diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-Info.plist b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-Info.plist new file mode 100644 index 0000000..2243fe6 --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-acknowledgements.markdown b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-acknowledgements.markdown new file mode 100644 index 0000000..102af75 --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-acknowledgements.plist b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-acknowledgements.plist new file mode 100644 index 0000000..7acbad1 --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-dummy.m b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-dummy.m new file mode 100644 index 0000000..e9d781b --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_PapcornsAnalytics : NSObject +@end +@implementation PodsDummy_Pods_PapcornsAnalytics +@end diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-umbrella.h b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-umbrella.h new file mode 100644 index 0000000..9c51d9a --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_PapcornsAnalyticsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_PapcornsAnalyticsVersionString[]; + diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.debug.xcconfig b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.debug.xcconfig new file mode 100644 index 0000000..b52088a --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.debug.xcconfig @@ -0,0 +1,6 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.modulemap b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.modulemap new file mode 100644 index 0000000..04ce952 --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.modulemap @@ -0,0 +1,6 @@ +framework module Pods_PapcornsAnalytics { + umbrella header "Pods-PapcornsAnalytics-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.release.xcconfig b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.release.xcconfig new file mode 100644 index 0000000..b52088a --- /dev/null +++ b/Pods/Target Support Files/Pods-PapcornsAnalytics/Pods-PapcornsAnalytics.release.xcconfig @@ -0,0 +1,6 @@ +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods +USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES