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