From b4b888dffa9239c0b8591b53944140c2066c3469 Mon Sep 17 00:00:00 2001 From: Gustavo Maciel Date: Sun, 17 Jan 2021 15:06:24 -0300 Subject: [PATCH] #27 First try on new Plugin Former-commit-id: b5ac43a4fe72a7d90f8ce0e87a5d22417d27e47a --- .gitignore | 5 + ios/.sconsign.dblite | Bin 0 -> 33953 bytes ios/SConstruct | 136 ++++++ ios/admob/SCsub | 7 - ios/admob/config.py | 15 - ios/admob/lib/README.md | 1 - ios/admob/register_types.cpp | 12 - ios/admob/register_types.h | 2 - ios/admob_plugin.xcodeproj/project.pbxproj | 386 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 64554 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 6 + .../xcschemes/xcschememanagement.plist | 14 + ios/{admob/src => admob_plugin}/Banner.h | 3 +- ios/{admob/src => admob_plugin}/Banner.mm | 0 .../src => admob_plugin}/Interstitial.h | 0 .../src => admob_plugin}/Interstitial.mm | 0 ios/{admob/src => admob_plugin}/Rewarded.h | 0 ios/{admob/src => admob_plugin}/Rewarded.mm | 0 ios/admob_plugin/admob_plugin.h | 9 + ios/admob_plugin/admob_plugin.mm | 30 ++ .../admob_plugin_implementation.h} | 20 +- .../admob_plugin_implementation.mm} | 39 +- 24 files changed, 644 insertions(+), 56 deletions(-) create mode 100644 ios/.sconsign.dblite create mode 100644 ios/SConstruct delete mode 100644 ios/admob/SCsub delete mode 100644 ios/admob/config.py delete mode 100644 ios/admob/lib/README.md delete mode 100644 ios/admob/register_types.cpp delete mode 100644 ios/admob/register_types.h create mode 100644 ios/admob_plugin.xcodeproj/project.pbxproj create mode 100644 ios/admob_plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/admob_plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/admob_plugin.xcodeproj/project.xcworkspace/xcuserdata/gustavomaciel.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ios/admob_plugin.xcodeproj/xcuserdata/gustavomaciel.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 ios/admob_plugin.xcodeproj/xcuserdata/gustavomaciel.xcuserdatad/xcschemes/xcschememanagement.plist rename ios/{admob/src => admob_plugin}/Banner.h (95%) rename ios/{admob/src => admob_plugin}/Banner.mm (100%) rename ios/{admob/src => admob_plugin}/Interstitial.h (100%) rename ios/{admob/src => admob_plugin}/Interstitial.mm (100%) rename ios/{admob/src => admob_plugin}/Rewarded.h (100%) rename ios/{admob/src => admob_plugin}/Rewarded.mm (100%) create mode 100644 ios/admob_plugin/admob_plugin.h create mode 100644 ios/admob_plugin/admob_plugin.mm rename ios/{admob/src/AdMob.h => admob_plugin/admob_plugin_implementation.h} (84%) rename ios/{admob/src/AdMob.mm => admob_plugin/admob_plugin_implementation.mm} (93%) diff --git a/.gitignore b/.gitignore index a30c2153..a0b33f67 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,14 @@ data_*/ *.pyc example/android +example/ios ios/admob/lib +ios/godot +ios/lib +ios/bin .DS_Store +*.a *.o *.d \ No newline at end of file diff --git a/ios/.sconsign.dblite b/ios/.sconsign.dblite new file mode 100644 index 0000000000000000000000000000000000000000..aa46f5ec002320d7f70653d09aa1ebbeb948ff5f GIT binary patch literal 33953 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 -#include - -#include "register_types.h" -#include "src/AdMob.h" - -void register_admob_types() { - Engine::get_singleton()->add_singleton(Engine::Singleton("AdMob", memnew(AdMob))); //register AdMob module as a singleton (iOS) -} - -void unregister_admob_types() { -} diff --git a/ios/admob/register_types.h b/ios/admob/register_types.h deleted file mode 100644 index 3c81d6b5..00000000 --- a/ios/admob/register_types.h +++ /dev/null @@ -1,2 +0,0 @@ -void register_admob_types(); -void unregister_admob_types(); diff --git a/ios/admob_plugin.xcodeproj/project.pbxproj b/ios/admob_plugin.xcodeproj/project.pbxproj new file mode 100644 index 00000000..564a12d6 --- /dev/null +++ b/ios/admob_plugin.xcodeproj/project.pbxproj @@ -0,0 +1,386 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 5E0E8C5225B39AF500730649 /* admob_plugin_implementation.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E0E8C5125B39AF500730649 /* admob_plugin_implementation.mm */; }; + 5E49FAC725B3AF030001A226 /* Banner.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E49FAC125B3AF030001A226 /* Banner.mm */; }; + 5E49FAC825B3AF030001A226 /* Interstitial.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E49FAC525B3AF030001A226 /* Interstitial.mm */; }; + 5E49FAC925B3AF030001A226 /* Rewarded.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5E49FAC625B3AF030001A226 /* Rewarded.mm */; }; + 5EDA216E25B398A50076123B /* admob_plugin.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5EDA216D25B398A50076123B /* admob_plugin.mm */; }; + 5EDA216F25B398A50076123B /* admob_plugin.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 5EDA216C25B398A50076123B /* admob_plugin.h */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 5EDA216725B398A50076123B /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/$(PRODUCT_NAME)"; + dstSubfolderSpec = 16; + files = ( + 5EDA216F25B398A50076123B /* admob_plugin.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 5E0E8C5025B39A6400730649 /* admob_plugin_implementation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = admob_plugin_implementation.h; sourceTree = ""; }; + 5E0E8C5125B39AF500730649 /* admob_plugin_implementation.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = admob_plugin_implementation.mm; sourceTree = ""; }; + 5E49FAC125B3AF030001A226 /* Banner.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Banner.mm; sourceTree = ""; }; + 5E49FAC225B3AF030001A226 /* Interstitial.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Interstitial.h; sourceTree = ""; }; + 5E49FAC325B3AF030001A226 /* Banner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Banner.h; sourceTree = ""; }; + 5E49FAC425B3AF030001A226 /* Rewarded.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Rewarded.h; sourceTree = ""; }; + 5E49FAC525B3AF030001A226 /* Interstitial.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Interstitial.mm; sourceTree = ""; }; + 5E49FAC625B3AF030001A226 /* Rewarded.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Rewarded.mm; sourceTree = ""; }; + 5EDA216925B398A50076123B /* libadmob_plugin.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libadmob_plugin.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 5EDA216C25B398A50076123B /* admob_plugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = admob_plugin.h; sourceTree = ""; }; + 5EDA216D25B398A50076123B /* admob_plugin.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = admob_plugin.mm; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5EDA216625B398A50076123B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5E49FACF25B3B17C0001A226 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + 5EDA216025B398A50076123B = { + isa = PBXGroup; + children = ( + 5EDA216B25B398A50076123B /* admob_plugin */, + 5EDA216A25B398A50076123B /* Products */, + 5E49FACF25B3B17C0001A226 /* Frameworks */, + ); + sourceTree = ""; + }; + 5EDA216A25B398A50076123B /* Products */ = { + isa = PBXGroup; + children = ( + 5EDA216925B398A50076123B /* libadmob_plugin.a */, + ); + name = Products; + sourceTree = ""; + }; + 5EDA216B25B398A50076123B /* admob_plugin */ = { + isa = PBXGroup; + children = ( + 5EDA216C25B398A50076123B /* admob_plugin.h */, + 5E0E8C5025B39A6400730649 /* admob_plugin_implementation.h */, + 5EDA216D25B398A50076123B /* admob_plugin.mm */, + 5E49FAC325B3AF030001A226 /* Banner.h */, + 5E49FAC125B3AF030001A226 /* Banner.mm */, + 5E49FAC225B3AF030001A226 /* Interstitial.h */, + 5E49FAC525B3AF030001A226 /* Interstitial.mm */, + 5E49FAC425B3AF030001A226 /* Rewarded.h */, + 5E49FAC625B3AF030001A226 /* Rewarded.mm */, + 5E0E8C5125B39AF500730649 /* admob_plugin_implementation.mm */, + ); + path = admob_plugin; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5EDA216825B398A50076123B /* admob_plugin */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5EDA217225B398A50076123B /* Build configuration list for PBXNativeTarget "admob_plugin" */; + buildPhases = ( + 5EDA216525B398A50076123B /* Sources */, + 5EDA216625B398A50076123B /* Frameworks */, + 5EDA216725B398A50076123B /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = admob_plugin; + productName = admob_plugin; + productReference = 5EDA216925B398A50076123B /* libadmob_plugin.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5EDA216125B398A50076123B /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1230; + TargetAttributes = { + 5EDA216825B398A50076123B = { + CreatedOnToolsVersion = 12.3; + }; + }; + }; + buildConfigurationList = 5EDA216425B398A50076123B /* Build configuration list for PBXProject "admob_plugin" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 5EDA216025B398A50076123B; + productRefGroup = 5EDA216A25B398A50076123B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5EDA216825B398A50076123B /* admob_plugin */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 5EDA216525B398A50076123B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5E0E8C5225B39AF500730649 /* admob_plugin_implementation.mm in Sources */, + 5E49FAC725B3AF030001A226 /* Banner.mm in Sources */, + 5EDA216E25B398A50076123B /* admob_plugin.mm in Sources */, + 5E49FAC825B3AF030001A226 /* Interstitial.mm in Sources */, + 5E49FAC925B3AF030001A226 /* Rewarded.mm in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5EDA217025B398A50076123B /* 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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 = ( + "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 = 14.3; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 5EDA217125B398A50076123B /* 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + 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_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 = 14.3; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5EDA217325B398A50076123B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/lib/GoogleMobileAds.xcframework\"/**", + "\"$(SRCROOT)/lib/GoogleUtilities.xcframework\"/**", + "\"$(SRCROOT)/lib/GoogleAppMeasurement.framework\"", + "\"$(SRCROOT)/lib/nanopb.xcframework\"/**", + "\"$(SRCROOT)/lib/PromisesObjC.xcframework\"/**", + "\"$(SRCROOT)/lib/UserMessagingPlatform.xcframework\"/**", + ); + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/godot", + "$(SRCROOT)/godot/main", + "$(SRCROOT)/godot/core", + "$(SRCROOT)/godot/core/os", + "$(SRCROOT)/godot/servers", + "$(SRCROOT)/godot/platform", + "$(SRCROOT)/godot/platform/iphone", + "$(SRCROOT)/godot/modules", + "$(SRCROOT)/godot/scene", + "$(SRCROOT)/godot/drivers", + "$(SRCROOT)/godot/trirdparty", + ); + LIBRARY_SEARCH_PATHS = ""; + OTHER_CFLAGS = ( + "-fcxx-modules", + "-g", + "-DDEBUG", + "-DDEBUG_ENABLED", + "-DDEBUG_MEMORY_ALLOC", + "-DDISABLE_FORCED_INLINE", + "-DTYPED_METHOD_BIND", + "-fmodules", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SYSTEM_FRAMEWORK_SEARCH_PATHS = ""; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 5EDA217425B398A50076123B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/lib/GoogleMobileAds.xcframework\"/**", + "\"$(SRCROOT)/lib/GoogleUtilities.xcframework\"/**", + "\"$(SRCROOT)/lib/GoogleAppMeasurement.framework\"", + "\"$(SRCROOT)/lib/nanopb.xcframework\"/**", + "\"$(SRCROOT)/lib/PromisesObjC.xcframework\"/**", + "\"$(SRCROOT)/lib/UserMessagingPlatform.xcframework\"/**", + ); + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/godot", + "$(SRCROOT)/godot/main", + "$(SRCROOT)/godot/core", + "$(SRCROOT)/godot/core/os", + "$(SRCROOT)/godot/servers", + "$(SRCROOT)/godot/platform", + "$(SRCROOT)/godot/platform/iphone", + "$(SRCROOT)/godot/modules", + "$(SRCROOT)/godot/scene", + "$(SRCROOT)/godot/drivers", + "$(SRCROOT)/godot/trirdparty", + ); + LIBRARY_SEARCH_PATHS = ""; + OTHER_CFLAGS = ( + "-fcxx-modules", + "-fmodules", + ); + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SYSTEM_FRAMEWORK_SEARCH_PATHS = ""; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5EDA216425B398A50076123B /* Build configuration list for PBXProject "admob_plugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5EDA217025B398A50076123B /* Debug */, + 5EDA217125B398A50076123B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5EDA217225B398A50076123B /* Build configuration list for PBXNativeTarget "admob_plugin" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5EDA217325B398A50076123B /* Debug */, + 5EDA217425B398A50076123B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5EDA216125B398A50076123B /* Project object */; +} diff --git a/ios/admob_plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/admob_plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/ios/admob_plugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/admob_plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/admob_plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/ios/admob_plugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/admob_plugin.xcodeproj/project.xcworkspace/xcuserdata/gustavomaciel.xcuserdatad/UserInterfaceState.xcuserstate b/ios/admob_plugin.xcodeproj/project.xcworkspace/xcuserdata/gustavomaciel.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..36a3b4c2a902dd417323cd7d9fcadac8ea4ecbdb GIT binary patch literal 64554 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 + + diff --git a/ios/admob_plugin.xcodeproj/xcuserdata/gustavomaciel.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/admob_plugin.xcodeproj/xcuserdata/gustavomaciel.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..5f8cb6a1 --- /dev/null +++ b/ios/admob_plugin.xcodeproj/xcuserdata/gustavomaciel.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + admob_plugin.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/ios/admob/src/Banner.h b/ios/admob_plugin/Banner.h similarity index 95% rename from ios/admob/src/Banner.h rename to ios/admob_plugin/Banner.h index 8b2e45b3..02742a5d 100644 --- a/ios/admob/src/Banner.h +++ b/ios/admob_plugin/Banner.h @@ -1,8 +1,9 @@ +#include "core/object.h" + #import #import #import "app_delegate.h" #import "view_controller.h" -#include "object.h" @class Banner; diff --git a/ios/admob/src/Banner.mm b/ios/admob_plugin/Banner.mm similarity index 100% rename from ios/admob/src/Banner.mm rename to ios/admob_plugin/Banner.mm diff --git a/ios/admob/src/Interstitial.h b/ios/admob_plugin/Interstitial.h similarity index 100% rename from ios/admob/src/Interstitial.h rename to ios/admob_plugin/Interstitial.h diff --git a/ios/admob/src/Interstitial.mm b/ios/admob_plugin/Interstitial.mm similarity index 100% rename from ios/admob/src/Interstitial.mm rename to ios/admob_plugin/Interstitial.mm diff --git a/ios/admob/src/Rewarded.h b/ios/admob_plugin/Rewarded.h similarity index 100% rename from ios/admob/src/Rewarded.h rename to ios/admob_plugin/Rewarded.h diff --git a/ios/admob/src/Rewarded.mm b/ios/admob_plugin/Rewarded.mm similarity index 100% rename from ios/admob/src/Rewarded.mm rename to ios/admob_plugin/Rewarded.mm diff --git a/ios/admob_plugin/admob_plugin.h b/ios/admob_plugin/admob_plugin.h new file mode 100644 index 00000000..b6caf536 --- /dev/null +++ b/ios/admob_plugin/admob_plugin.h @@ -0,0 +1,9 @@ +// +// admob_plugin.h +// admob_plugin +// +// Created by Gustavo Maciel on 16/01/21. +// + +void admob_plugin_init(); +void admob_plugin_deinit(); diff --git a/ios/admob_plugin/admob_plugin.mm b/ios/admob_plugin/admob_plugin.mm new file mode 100644 index 00000000..3ecdd760 --- /dev/null +++ b/ios/admob_plugin/admob_plugin.mm @@ -0,0 +1,30 @@ +// +// admob_plugin.m +// admob_plugin +// +// Created by Gustavo Maciel on 16/01/21. +// + +#import + +#import "admob_plugin.h" +#import "admob_plugin_implementation.h" + +#import "core/engine.h" + +AdMob * admob; + +void admob_plugin_init() { + NSLog(@"init admob plugin"); + + admob = memnew(AdMob); + Engine::get_singleton()->add_singleton(Engine::Singleton("AdMob", admob)); +} + +void admob_plugin_deinit() { + NSLog(@"deinit admob plugin"); + + if (admob) { + memdelete(admob); + } +} diff --git a/ios/admob/src/AdMob.h b/ios/admob_plugin/admob_plugin_implementation.h similarity index 84% rename from ios/admob/src/AdMob.h rename to ios/admob_plugin/admob_plugin_implementation.h index 51850681..cea09241 100644 --- a/ios/admob/src/AdMob.h +++ b/ios/admob_plugin/admob_plugin_implementation.h @@ -1,6 +1,13 @@ -#ifndef ADMOB_H - #define ADMOB_H - #include "object.h" +// +// admob_plugin_implementation.h +// admob_plugin +// +// Created by Gustavo Maciel on 16/01/21. +// + +#ifndef admob_plugin_implementation_h + #define admob_plugin_implementation_h + #include "core/object.h" #ifdef __OBJC__ #include "Banner.h" @@ -34,7 +41,7 @@ protected: static void _bind_methods(); - + public: void initialize(bool is_for_child_directed_treatment, const String &max_ad_content_rating, bool is_real, bool is_test_europe_user_consent, int instance_id); void load_banner(const String &ad_unit_id, int gravity, const String &size); @@ -46,11 +53,12 @@ AdMob(); ~AdMob(); - private: + private: const char* getDeviceId(); void initializeAfterUMP(bool is_for_child_directed_treatment, bool is_real, int instance_id); void loadConsentForm(bool is_for_child_directed_treatment, bool is_real, int instance_id); }; -#endif + +#endif /* admob_plugin_implementation_h */ diff --git a/ios/admob/src/AdMob.mm b/ios/admob_plugin/admob_plugin_implementation.mm similarity index 93% rename from ios/admob/src/AdMob.mm rename to ios/admob_plugin/admob_plugin_implementation.mm index ef91e46e..54b8693e 100644 --- a/ios/admob/src/AdMob.mm +++ b/ios/admob_plugin/admob_plugin_implementation.mm @@ -1,5 +1,12 @@ -#include "AdMob.h" - +// +// admob_plugin_implementation.m +// admob_plugin +// +// Created by Gustavo Maciel on 16/01/21. +// + + +#import #import #import #import @@ -7,7 +14,13 @@ #include #include -AdMob *AdMob::instance = NULL; +#include "core/project_settings.h" +#include "core/class_db.h" + + +#import "admob_plugin_implementation.h" + +AdMob *AdMob::instance = NULL; AdMob::AdMob() { initialized = false; @@ -20,12 +33,14 @@ ERR_FAIL_COND(instance != NULL); instance = this; + NSLog(@"initialize admob"); } -AdMob::~AdMob() { +AdMob::~AdMob() { if (instance == this) { instance = NULL; } + NSLog(@"deinitialize admob"); } void AdMob::loadConsentForm(bool is_for_child_directed_treatment, bool is_real, int instance_id) { @@ -88,17 +103,17 @@ // Request an update to the consent information. [UMPConsentInformation.sharedInstance requestConsentInfoUpdateWithParameters: parameters - completionHandler:^(NSError *_Nullable error) + completionHandler:^(NSError *_Nullable error) { - if (error) + if (error) { objectDB->call_deferred("_on_AdMob_consent_info_update_failure", (int) error.code, error.domain); initializeAfterUMP(is_for_child_directed_treatment, is_real, instance_id); - } - else + } + else { UMPFormStatus formStatus = UMPConsentInformation.sharedInstance.formStatus; - if (formStatus == UMPFormStatusAvailable) + if (formStatus == UMPFormStatusAvailable) { objectDB->call_deferred("_on_AdMob_consent_info_update_success", "Consent Form Available"); loadConsentForm(is_for_child_directed_treatment, is_real, instance_id); @@ -126,7 +141,7 @@ #endif } - [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment:is_for_child_directed_treatment]; + [GADMobileAds.sharedInstance.requestConfiguration tagForChildDirectedTreatment:is_for_child_directed_treatment]; if (self_max_ad_content_rating == "G") { GADMobileAds.sharedInstance.requestConfiguration.maxAdContentRating = GADMaxAdContentRatingGeneral; @@ -147,7 +162,7 @@ if (@available(iOS 14, *)) { [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) { - [[GADMobileAds sharedInstance] startWithCompletionHandler:^(GADInitializationStatus *_Nonnull status) + [[GADMobileAds sharedInstance] startWithCompletionHandler:^(GADInitializationStatus *_Nonnull status) { NSDictionary* states = [status adapterStatusesByClassName]; @@ -172,7 +187,7 @@ initialized = true; bannerObj = [[Banner alloc] init :instance_id]; interstitialObj = [[Interstitial alloc] init :instance_id]; - rewardedObj = [[Rewarded alloc] init :instance_id]; + rewardedObj = [[Rewarded alloc] init :instance_id]; } }