Coder Social home page Coder Social logo

poingstudios / godot-admob-ios Goto Github PK

View Code? Open in Web Editor NEW
88.0 4.0 14.0 603 KB

Godot's AdMob Plugin for iOS with support for Mediations.

Home Page: https://poingstudios.github.io/godot-admob-plugin/

License: MIT License

Python 4.08% Objective-C 26.66% Objective-C++ 61.04% Shell 2.35% Ruby 1.30% C 3.63% C++ 0.94%
admob admob-demo gdscript github-actions godot godot-admob godot-engine ios mediation objective-c-plus-plus

godot-admob-ios's Introduction


GodotAdMob
Godot AdMob iOS

A Godot's plugin for iOS of AdMob.

AboutHow to useDocsDownloads

❓ About

Preview

This repository is for a Godot Engine Plugin that allows showing the ads offered by AdMob in an easy way, without worrying about the building or version, just download and use.

The purpose of this plugin is to always keep up to date with Godot, supporting ALMOST ALL versions from v4.1+, and also make the code compatible on Android and iOS, so each advertisement will work identically on both systems.

🔑 Key features

  • It's a wrapper for Google Mobile Ads SDK. 🎁
  • Easy Configuration. 😀
  • Supports nearly all Ad Formats: Banner, Interstitial, Rewarded, Rewarded Interstitial. 📺
  • GDPR Compliance with UMP Support. ✉️
  • Targeting Capabilities. 🎯
  • Seamless integration with Mediation partners: Meta, Vungle. 💰
  • CI/CD for streamlined development and deployment. 🔄🚀
  • Features a dedicated Godot Plugin, reducing the need for extensive coding. 🔌
  • There is also an Android Plugin available, which has the same behavior. 🤖

🙋‍♂️How to use

  • We recommend you to use the AdMob Plugin, you can download direcly from Godot Assets.
  • After download, we recommend you to read the README.md of the Plugin to know how to use.

📦Installing:

📥Download

  • To get started, download the poing-godot-admob-ios-v{{ your_godot_version }}.zip file from the releases tab. We recommend checking the supported Godot version before proceeding. You can also use the AdMob Plugin for this step by navigating to Tools -> AdMob Download Manager -> iOS -> LatestVersion.

🧑‍💻Usage

  • Video tutorial: https://youtu.be/WpVGn7ZasKM.
  • Inside poing-godot-admob-ios-v{{ your_godot_version }}.zip you downloaded, you will face some folders like 'ads', 'meta', 'vungle'. To AdMob works only 'ads' is required, but if you want Mediation, you need the other folders.
  • Move the content inside the folder which you need into res://ios/plugins directory on your Godot project.
  • Update the configuration in res://ios/plugins/poing-godot-admob-ads.gdip. The GADApplicationIdentifier is required to change when release your game.
  • If you are using Mediation: On SKAdNetworkItems in .gdip file, you can remove the comments of the Mediations Networks which you are using.
  • Export the project enabling the Ad Mob, if you have Mediation, also mark Ad Mob Meta, etc...

💻Xcode preparation

  • Go to {{ ios_xcode_export_folder }}/{{your_project_name}}/ios/plugins/poing-godot-admob/scripts/ folder and open the terminal (must be inside this folder).
  • Run the commands:
chmod +x update_and_install.sh
./update_and_install.sh
  • This will create for your a {{ your_project_name }}.xcworkspace file on your {{ ios_xcode_export_folder }}, open this file.
  • Go to the Target of your Application and them General -> Frameworks, Libraries, and Embedded Content and add all Pods in section.
  • Run the Game.
  • If you are trying to run on Simulator and is not working read this.

📎Useful links:

📄Documentation

For a complete documentation of this Plugin: check here.

Alternatively, you can check the docs of AdMob itself of iOS.

🙏 Support

If you find our work valuable and would like to support us, consider contributing via these platforms:

Patreon

Ko-fi

Paypal

Your support helps us continue to improve and maintain this plugin. Thank you for being a part of our community!

🆘Getting help

DISCUSSIONS DISCORD

⭐ Star History

If you appreciate our work, don't forget to give us a star on GitHub! ⭐

Star History Chart

godot-admob-ios's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

godot-admob-ios's Issues

[BUG] Incorrect load state signal in Reward Ads

Describe the bug

I think this line have incorrect signal, it should be load_fail rather than show_fail.

Just testing it on my iphone and this cause the Toast to repeating show just like when user click on view ads but there is no ads :D

Expected behavior

Should have valid signal

[BUG] Can't run on an iOS simulator with an m1 macbook

Describe the bug
Following the youtube guide I get the following error when trying to run my game in the simulator

Undefined symbols for architecture x86_64:
"Object::emit_signal(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&)", referenced from:
___34-[Interstitial load_interstitial:]_block_invoke in admob.a(Interstitial.o)
-[Interstitial ad:didFailToPresentFullScreenContentWithError:] in admob.a(Interstitial.o)
-[Interstitial adDidPresentFullScreenContent:] in admob.a(Interstitial.o)
-[Interstitial adDidDismissFullScreenContent:] in admob.a(Interstitial.o)
___26-[Rewarded load_rewarded:]_block_invoke in admob.a(Rewarded.o)
-[Rewarded show_rewarded] in admob.a(Rewarded.o)
___25-[Rewarded show_rewarded]_block_invoke in admob.a(Rewarded.o)
...
(maybe you meant: Object::emit_signal(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&))
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

To Reproduce
Steps to reproduce the behavior:

  1. Export for iOS
  2. Modify Build Settings to be Standard Architectures & exclude arm64 + i386
  3. Select simulator and press run

Expected behavior
The game to build and run in the simulator

Additional context
using a macbook pro m1 and the latest version of xcode

Note - when I follow the same steps without the Admob plugin the game can be played on the simulator just fine

No ad to show iOS

Describe the bug

I have recently released a mobile game on iOS and I was getting an error saying no ad to show before I released it and now it is released I am still getting this error. The intersticial ad unit was created on admob months ago and I have other apps with working adverts that have been out for a while now so my admob account is not new. Why am I still getting this error? Is it an admob problem?

Thanks

Steps to reproduce
Godot 3.2.3 iOS release app interstitial ad

[BUG] IOS Error/warning

Describe the bug
Big error/warning when loading interstitial on IOS. Ads apears as expected and looks like this error is not a problem, but I'm not sure. Can I ask you to check?

To Reproduce
Steps to reproduce the behavior:

  1. Create application on AdMob website, link to Godot application
  2. Load interstitial -> Show interstitial -> see error/warning (it might appears after 2-nd or 3-rd load/show)

Expected behavior
pass

Screenshots
image

Smartphone (please complete the following information):

  • Device: iPad 9. gen
  • OS: iOS 15.6
  • Version Godot: 3.4.4

Additional context
I dont know what is "WebKit" and why it fails ...

App Tracking Transparency permission request in admob

Greetings,

i have been using ur admob plugin for a while. fantastic job btw

just a quick question, I'm always getting this msg from apple when i submit my application, is there something that I'm missing?

i remember that sometimes i see the popup for tacking the user and sometimes i don't.

We're looking forward to completing our review, but we need more information to continue. Your app uses the AppTrackingTransparency framework, but we are unable to locate the App Tracking Transparency permission request when reviewed on iOS 15.2.1.

thank you for your work

Banner doesn't load when TOP is unchecked

Godot version

3.4

Plugin version

v2.0.0

Phone information

Android

Issue description

When I uncheck banner on TOP the banner won't load anymore.
I tried to solve the problem myself but to no avail.

Steps to reproduce

Go to Admob settings -> Banner -> uncheck on TOP

Additional context

No response

Create ObjectToGodotDictionary class

Methods:

  • convertGADInitializationStatusToDictionary
  • convertGADAdapterStatusToDictionary
  • convertGADAdSizeToDictionary
  • convertNSErrorToDictionaryAsAdError
  • convertNSErrorToDictionaryAsLoadAdError
  • convertResponseInfoToDictionary
  • convertLoadedAdapterResponseInfoToDictionary
  • convertAdapterResponsesToDictionary
  • convertBundleNSDictionaryToDictionary
  • convertGADAdRewardToDictionary
  • convertNSErrorToDictionaryAsFormError

ATT not showing on iOS

Godot version

3.x

Plugin version

master

Phone information

iPhone X on iOS 15

Issue description

Seems like ATT changed here: 7c51d5a

Note the link in the commit is not valid anymore, but using wayback I can see the old instructions from Google: https://web.archive.org/web/20211204084748/https://support.google.com/fundingchoices/answer/9995402

When I revert this commit, I get the ATT message (but I noticed I don't get ads if I say "ask not to track").

I have a IDFA message setup in my Admob account and waited several hours to make sure it's ready, I am not seeing the IDFA message or prompt.

I tried in release and debug, I also tried the flag is_test_europe_user_consent, having this flag does show the Europe prompt, but not the idfa prompt.

Looks like Google is saying that the Funding Choices IDFA explainer message should display, but I am not seeing that.

I also tried doing MobileAds.request_user_consent() before and after Admob is initialized (this is not documented that we should do this)

My app is not yet release, maybe it needs to be release first for this to work?

Steps to reproduce

In the description

Additional context

No response

Investigate error "Undefined Symbol"

Godot version

3.5.1

Plugin version

v2.1.2

Phone information

?

Issue description

Hi, I downloaded and Installed https://github.com/Poing-Studios/godot-admob-ios V.2.1.2 (template 3.5.1) and I get this issue on Xcode 13.12.1 -> On Product (Any iOS device)-> Archive (What is strange is that the game compiles fine when I use the simulators)

V2.1.1 works fine on iOS. But Note that V.2.1.1 gets the issue -> Testing the plugin with the Xcode simulators, you will get the issue: "Undefined symbols for architecture arm64"
This issue is solved here -> https://github.com/rzuf79/godot-ios-plugins/releases/tag/3.5.0

Summarizing -> Admob iOSV2.1.2, XCode compiles fine, without any issues using the phone simulators, and the issue "Undefined symbols for architecture arm64" on simulators is solved but I get a new issue Undefined Symbol ... Undefined Symbol ... etc ...

Steps to reproduce

Try to export to iPhone

image

Additional context

Seen on Discord: https://discord.gg/YEPvYjSSMk

[BUG] `Admob not initialized` ERROR when you try to launch the game for the first time

Describe the bug
Sometimes when you start the game for the first time, the error Admob not initialized appears, but restarting the game, it works again

To Reproduce
Steps to reproduce the behavior:
Export the game and runs on XCode simulator to see, like this: https://youtu.be/ZnlH3INcAGs?t=645

Expected behavior
Always (or almost always) launch AdMob on first try

Screenshots
If applicable, add screenshots to help explain your problem.

Smartphone (please complete the following information):

  • Device: iPhone 12 mini
  • OS: iOS 15.5
  • Version v2.1.0

Additional context
It was somehow quoted in a comment on this video: https://www.youtube.com/watch?v=ZnlH3INcAGs

image

[BUG] Banner ADAPTIVE doesn't load

Hi @gumaciel , i finally found out. The plugin work perfectly, that's just the ADAPTIVE option. I'v used it in android so i think it will work on iOS too and keep it. But don't know why it doesn't work. I'v changed it to SMART_BANNER and now it working normally on both Simulator and Real Devices. :D

Originally posted by @kyoz in #4 (comment)

[BUG] Error calling method from signal 'consent_info_update_failure'

Describe the bug
I tried to configured my Godot Game with your Admob Plugin and follow the instructions on your site. After starting it on iOS I got the following Error messages:

2021-12-06 13:18:38.510669+0100 [6914:488088] <UMP SDK> To enable debug mode for this device, set: UMPDebugSettings.testDeviceIdentifiers = @[ @"6EA5A6CC-552B-400E-8D49-6ED9D1ABE9FD" ];
2021-12-06 13:18:38.906711+0100 [6914:488088] ERROR: Error calling method from signal 'consent_info_update_failure': 'Node(MobileAds.gd)::_on_AdMob_consent_info_update_failure': Cannot convert argument 2 from bool to String..
2021-12-06 13:18:38.906797+0100 [6914:488088]    at: emit_signal (core/object.cpp:1236) - Error calling method from signal 'consent_info_update_failure': 'Node(MobileAds.gd)::_on_AdMob_consent_info_update_failure': Cannot convert argument 2 from bool to String..
ERROR: Error calling method from signal 'consent_info_update_failure': 'Node(MobileAds.gd)::_on_AdMob_consent_info_update_failure': Cannot convert argument 2 from bool to String..
   at: emit_signal (core/object.cpp:1236) - Error calling method from signal 'consent_info_update_failure': 'Node(MobileAds.gd)::_on_AdMob_consent_info_update_failure': Cannot convert argument 2 from bool to String..
2021-12-06 13:18:42.535940+0100 [6914:488316]  - <Google>[I-ACS012056] Transaction failed. Transaction failed

To Reproduce
Steps to reproduce the behavior:
Follow your instruction
Export Godot Project for iOS
Config Xcode
Start it on iPad

Expected behavior
Display Ads

Smartphone (please complete the following information):

  • Device: iPad 6. Gen
  • OS: iOS
  • Version 15.1

Godot 3.4
MacBook Air

Additional context
Add any other context about the problem here.

[FEATURE] Use Cocoapods to use Mobile Ads SDK instead of manual downloading

Is your feature request related to a problem? Please describe.
Using Cocoapods is recommended by the Google AdMob team to use for the reason of being a dependency manager and it is much simpler to download and use in the project besides changing/maintaining/updating the version whenever we want.

Additional context

  1. Use pod init to create a Podfile.
  2. Open Podfile and add pod 'Google-Mobile-Ads-SDK'
  3. Run pod install to install the Pods

(BREAKING CHANGES) Refactoring MobileAds API to v3.0.0

Is your feature request related to a problem? If so, please describe.

This change intends to change many of the plugins in all aspects, in order to make the plugin more dynamic and easy to use, it is necessary almost completely to redo the plugin to meet the use of mediation.

⚠️WARNING⚠️:

What feature or improvement would you like to see?

✅GOALS✅

  • Create an Interface of MobileAds class with Objective-C with the most important methods used on AdMob.
    Example:
void PoingGodotAdMob::initialize() {
    [[GADMobileAds sharedInstance] startWithCompletionHandler:^(GADInitializationStatus *_Nonnull status)
    {
        Dictionary dictionary = [ObjectToGodotDictionary convertGADInitializationStatusToDictionary:status];
        emit_signal("on_initialization_complete", dictionary);
    }];
}

void PoingGodotAdMob::_bind_methods() {
    ADD_SIGNAL(MethodInfo("on_initialization_complete", PropertyInfo(Variant::DICTIONARY, "initialization_status_dictionary")));

    ClassDB::bind_method(D_METHOD("initialize"), &PoingGodotAdMob::initialize);
};
  • #30
  • Use CocoaPods to build the project Mediations
  • Build on Terminal
  • Build on Xcode
  • #46
  • #47
  • #48
  • Create PoingGodotAdMobAdSize class
  • Create PoingGodotAdMobAdView class
  • #52
  • #53
  • #56
  • #57
  • #58
  • #49
  • #59
  • #60
  • #61
  • Add proper logs
  • #62

Additional context

No response

[BUG] Unable to reinitialize plugin after getting GDPR consent

Hi, first of all, thanks for the plugin, I've been using it in my iOS app that was released recently, and now I'd like to implement GDPR consent, I just realized that your plugin also supports this. I'm almost done debugging it, but I noticed that the plugin won't reinitialize after getting user consent (in case they choose non-personalized ads), I couldn't find "is_personalized" parameter or something like that in your initialization function (https://github.com/Poing-Studios/godot-admob-ios/blob/master/plugin/admob/src/main/admob.mm#L143), so I'm curious how do you forward consent to the Google Mobile Ads SDK?

I'm using https://github.com/Shin-NiL/Godot-Android-Admob-Plugin + https://github.com/pschw/GodotConsentPlugin for the Android version of my app and I'm able to reinitialize the admob plugin with the "is_personalized" parameter set to false when users don't consent, Shin-NiL's plugin also configures GADRequest (https://github.com/Shin-NiL/Godot-Android-Admob-Plugin/blob/main/admob-plugin/godotadmob/src/main/java/shinnil/godot/plugin/android/godotadmob/GodotAdMob.java#L115) as described in the admob documentation (https://developers.google.com/admob/ump/android/quick-start#forward-consent / https://developers.google.com/admob/ump/ios/quick-start#forward-consent). I just want to make sure your plugin works the same to comply with GDPR, since I'm thinking of using it in android too instead of Shin-NiL's.

Btw, the consent works as expected with "Test Europe User Consent" enabled or using a vpn, but when testing it in my location (Colombia), it still shows a window but only with a continue button and a different text that says something like "ads keep our app free, select allow in the next screen...", then it shows ATT consent as expected (I use another plugin for that), is that intended? because the console prints "Consent Form Available" and then "User consent obtained. Personalization not defined." when I was actually expecting "Consent Form not Available" or "User consent not required. For example, the user is not in the EEA or the UK.".

Hope I made myself understood, and please let me know if these are bugs or missing features, I'd like to contribute but idk much about those languages nor creating plugins, anyways, thanks for reading.

Plugin v2.0.4
Editor plugin v1.2.4
Godot v3.4.2

[FEATURE] Change `GADApplicationIdentifier` on `.gdip` file to `string_input` type

Is your feature request related to a problem? Please describe.
Every time the user needs to change the GADApplicationIdentifier, he needs to open the .gdip file or the .plist file of the exported project

https://github.com/Poing-Studios/godot-admob-ios/blob/master/plugin/admob/config/admob.gdip

Describe the solution you'd like
Change GADApplicationIdentifier on .gdip file to string_input type, so the user will be able to change this value without openning the .gdip file or .plist file

Describe alternatives you've considered

Additional context
It would be a good Android to do this, but it's currently not possible due to limitations of exporting Godot's Android plugin

[BUG] Animations don't start after rewarded ad is closed

Describe the bug

When a rewarded ad is closed, it switches back to the game but it doesn't seem to continuing the game. All the animations stop playing and it won't take input. It is like the game is not getting updated.

After switching apps everything resumes like normal.

To Reproduce
Steps to reproduce the behavior:

  1. Wait for MobileAds to initialize.
  2. Load a rewarded ad.
  3. Show the rewarded ad.
  4. After closing it, nothing gets updated.

Expected behavior
After the ad is closed the game should resume.

Screenshots
N.a.

Smartphone (please complete the following information):

  • Device: iPhone SE 2016
  • OS: iOS 14.6
  • Version: 3.3.2

Additional context
A stack trace:

******** stop animation!
2021-07-03 15:57:43.228692+0200 bouncybox[9735:347477] Calling load_rewarded
2021-07-03 15:57:43.228845+0200 bouncybox[9735:347477] rewarded will load with the id
2021-07-03 15:57:43.228919+0200 bouncybox[9735:347477] ca-app-pub-xxxxxxxxxxxxxxxxx/xxxxxx
2021-07-03 15:57:44.403777+0200 bouncybox[9735:347477] WF: _userSettingsForUser mobile: {
    filterBlacklist =     (
    );
    filterWhitelist =     (
    );
    restrictWeb = 1;
    useContentFilter = 0;
    useContentFilterOverrides = 0;
    whitelistEnabled = 0;
}
2021-07-03 15:57:44.403845+0200 bouncybox[9735:347477] WF: _WebFilterIsActive returning: NO
2021-07-03 15:57:45.671336+0200 bouncybox[9735:347477] reward successfully loaded
2021-07-03 15:57:49.997390+0200 bouncybox[9735:347477] [assertion] Error acquiring assertion: <Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"Suspended" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}>
2021-07-03 15:57:49.997542+0200 bouncybox[9735:347477] [ProcessSuspension] 0x114bc8cc0 - ProcessAssertion: Failed to acquire RBS Suspended assertion 'WebProcess Suspended Assertion' for process with PID 9854, error: Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target entitlement is missing" UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"Suspended" sourceEnvironment:"(null)">, NSLocalizedFailureReason=Target is not running or required target entitlement is missing}

After switching apps an going back to my game I see this:

2021-07-03 15:58:08.748383+0200 bouncybox[9735:347477] Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
2021-07-03 15:58:19.983539+0200 bouncybox[9735:347477] Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service
2021-07-03 15:58:22.830438+0200 bouncybox[9735:350475] [connection] nw_endpoint_handler_set_adaptive_read_handler [C7.1.1 2a00:1450:400e:808::200e.443 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for read_timeout failed
2021-07-03 15:58:22.830686+0200 bouncybox[9735:350475] [connection] nw_endpoint_handler_set_adaptive_write_handler [C7.1.1 2a00:1450:400e:808::200e.443 ready channel-flow (satisfied (Path is satisfied), viable, interface: en0, ipv4, ipv6, dns)] unregister notification for write_timeout failed
start animation!

I think it has something to do with the

******** stop animation!

and

start animation!

lines.

Create GodotDictionaryToObject class

Methods:

  • convertDictionaryToGADAdSize
  • convertDictionaryToGADRequest
  • convertDictionaryToNSDictionary
  • convertDictionaryToGADServerSideVerificationOptions
  • convertDictionaryToUMPRequestParameters
  • convertDictionaryToUMPDebugSettings

[BUG] Game freezes when interstitial ad fails to load or show despite connection to API

Describe the bug
My game freezes/hangs when interstitial fails to load or show. At most times, all the ads including interstitial load and show without a problem. But when it fails to initialize quick enough at the beginning or has no internet connection at that very moment, the game just hangs completely. I have the relevant API signals connected so by right, this shouldn't happen unless I am missing something?

To Reproduce
Steps to reproduce the behavior:

  1. Turn off all internet connection on device
  2. Trigger interstitial ad in-game
  3. My game would freeze as it fails to load the interstitial ad

Expected behavior
I have these API signals connected: initialization_complete(status, adapter_name), interstitial_failed_to_load(error_code), interstitial_failed_to_show(error_code). If any of them is triggered or not status ready, the game should have triggered interstitial_closed().

Smartphone (please complete the following information):

  • Device: iPhone6+, iPhone13, iPhoneXR (updated)
  • OS: iOS 12.5, 14
  • Version: Godot 3.3.4

Additional context
I am not a programmer so if it is not a bug, please do help guide me the right way to fix this. Thank you!

[BUG] Cant export to IOS (from PC) when the plugin is Active.

Describe the bug
Ok, so i followed the tutorial for creating a custom build for ios,
that involved me to download iOS Template and GoogleMobileAdsSdkiOS
also installed both of the files where it should be res://ios/plugins/admob/lib/
so far, so good.
but for some reason, i get this error:
image
and the godot console gives me this:
image

To Reproduce
Export the project on PC, for iOS build, enable/disable the plugin to see the issue.

Expected behavior
when i disable the AdMob Plugin, i can export normally to ios

Versions:
Godot 3.4.2

[BUG??] FIRAnalyticsVersionMismatch

Hi, its me again. All is working perfect, i only have a incompatibility between your plugin and other plugin.

Describe the bug
I added your plugin which is working incredibly good in iOS & Android. My problem now is that i've also a Firebase plugin. Using both plugins, give me a crash only on iOS, and it's because both uses FIRAnalytics but with different versions.

To Reproduce
Steps to reproduce the behavior:

  1. Add your plugin.
  2. Add Firebase Plugin.
  3. Compile on iOS.
  4. See error

I'm just wondering if there's some file where i can change the number of version or something like that. I open many files on both plugins, but i dont found anything. I find GoogleAppMeasurement folders, but i cant change version, or maybe i dont know where or with which software.

Here it's the exact line of error:

*** Terminating app due to uncaught exception 'FIRAnalyticsVersionMismatch', reason: 'Google Analytics for Firebase version (70100000) does not match with Google App Measurement (80901000) version. Please update.'

Thank you!

Build failure in Xcode with Admob plugin enabled (Mac OSx Ventura)

Godot version

3.5.1

Plugin version

v 2.1.1

Phone information

iPhone 14 pro

Issue description

Xcode fails build with admob plugin enabled when exporting from code. Xcode build succeeds when I disable admob plugin when exporting from Godot.

This started failing when I updated Mac OSX to Ventura. The previous week before upgrading, builds worked successfully with the plugin enabled.

Steps to reproduce

  1. On a Mac running Ventura, Running Godot, and Admob plugins installed for iOS (and Android).
  2. Export to iOS
  3. Open in Xcode after export
  4. Try to build the project
  5. Error message is "Undefined symbol: Object::emit_signal(StringName const&, Variant const&, Variant const&, Variant const&, Variant const&, Variant const&)"

Additional context

No response

Remove `tag name` parameter from GitHub Actions

Is your feature request related to a problem? Please describe.
Currently, when running a GitHub Action, you need to specify the tag name as a parameter. This is unnecessary, as the tag name is already selected when you run the Action.

Describe the solution you'd like
I would like to request that the tag name parameter be removed from GitHub Actions. This would make it easier to run Actions and would also reduce the number of parameters that need to be specified.

Additional context

4.0.3 template with 4.1.1

Godot version

4.1.1

Plugin version

v2.1.2

Phone information

iPhone 13

Issue description

After exporting the project, XCode refuses to build and throws the error:
Undefined symbol: ClassDB::bind_methodfi(unsigned int, MethodBind*, MethodDefinition const&, Variant const**, int)
error

Does the plugin just need to be updated? If so, when will the 4.1.1 version be released?

Steps to reproduce

  1. Try to use the 4.0.3 version with 4.1.1 Godot

Additional context

No response

[BUG] Crash on Start/Ad doesn't show right after being loaded

First of all, thank you for your plugin, on Android works pretty well.

Describe the bug
When i open the application, it crashes on test and on release version (wont load main scene or even splash screen). Only if i remove this Admob plugin, it works.

To Reproduce

  1. Compile
  2. Run

Expected behavior
Run the APP.

Screenshots

Smartphone (please complete the following information):
Tested on many devices.

Additional context
I try with many version of your plugin (manually & from Godot Asset Lib too), and also the recommended versions. The other errors on log its because it's a test, but the game works properly with that (when is not Admob plugin installed). Last version i tried is the recommended:

Godot version: 3.4
ios-template 3.4
godot-admob-ios 2.0.4
Android Editor Plugin 1.2.3

{\rtf1\ansi\ansicpg1252\cocoartf2636
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset0 Menlo-Bold;}
{\colortbl;\red255\green255\blue255;\red0\green0\blue0;\red255\green255\blue255;}
{*\expandedcolortbl;;\csgenericrgb\c0\c0\c0;\csgenericrgb\c100000\c100000\c100000;}
\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
\deftab593
\pard\tx593\pardeftab593\pardirnatural\partightenfactor0

\f0\b\fs24 \cf2 \cb3 *********** main.m
running app main
Path: /Users/joseguerraprado/Library/Developer/CoreSimulator/Devices/57BC649E-2FA0-4B2A-8A08-AE62F4BF44B5/data/Containers/Bundle/Application/54C9FD60-F0FC-4DCD-B1B7-0561DDD62777/exported_admob_project.app
godot_iphone /Users/joseguerraprado/Library/Developer/CoreSimulator/Devices/57BC649E-2FA0-4B2A-8A08-AE62F4BF44B5/data/Containers/Bundle/Application/54C9FD60-F0FC-4DCD-B1B7-0561DDD62777/exported_admob_project.app/exported_admob_project
cwd /Users/joseguerraprado/Library/Developer/CoreSimulator/Devices/57BC649E-2FA0-4B2A-8A08-AE62F4BF44B5/data/Containers/Bundle/Application/54C9FD60-F0FC-4DCD-B1B7-0561DDD62777/exported_admob_project.app
os created
setting data dir to /Users/joseguerraprado/Library/Developer/CoreSimulator/Devices/57BC649E-2FA0-4B2A-8A08-AE62F4BF44B5/data/Containers/Data/Application/34DDDE6F-E3F5-492C-95CE-16044E0A6941/Documents from /Users/joseguerraprado/Library/Developer/CoreSimulator/Devices/57BC649E-2FA0-4B2A-8A08-AE62F4BF44B5/data/Containers/Data/Application/34DDDE6F-E3F5-492C-95CE-16044E0A6941/Documents
setup 0
2021-12-17 10:06:37.576804-0300 exported_admob_project[1962:30761] Setting up an OpenGL ES 3.0 context. Based on Project Settings "rendering/quality/driver/driver_name"
2021-12-17 10:06:37.578040-0300 exported_admob_project[1962:30761] failed to make complete framebuffer object 8cd6
2021-12-17 10:06:37.578225-0300 exported_admob_project[1962:30761] Failed to create frame buffer!
******** setting up keyboard input view
******** adding observer for keyboard show/hide
2021-12-17 10:06:37.648967-0300 exported_admob_project[1962:30761] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x600001063ea0> F8BB1C28-BAE8-11D6-9C31-00039315CD46
start animation!
2021-12-17 10:06:37.667984-0300 exported_admob_project[1962:30761] ERROR: AudioOutputUnitStart failed, code: -50
2021-12-17 10:06:37.668158-0300 exported_admob_project[1962:30761] at: start (drivers/coreaudio/audio_driver_coreaudio.cpp:249) - AudioOutputUnitStart failed, code: -50
ERROR: AudioOutputUnitStart failed, code: -50
at: start (drivers/coreaudio/audio_driver_coreaudio.cpp:249) - AudioOutputUnitStart failed, code: -50
2021-12-17 10:06:37.785018-0300 exported_admob_project[1962:30761] Godot Engine v3.4.stable.official.206ba70f4 - https://godotengine.org\
Godot Engine v3.4.stable.official.206ba70f4 - https://godotengine.org\
2021-12-17 10:06:37.965888-0300 exported_admob_project[1962:30761] OpenGL ES 3.0 Renderer: Apple Software Renderer
OpenGL ES 3.0 Renderer: Apple Software Renderer
2021-12-17 10:06:37.966430-0300 exported_admob_project[1962:31203] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-12-17 10:06:37.966689-0300 exported_admob_project[1962:31203] [Client] Updating selectors after delegate addition failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-12-17 10:06:37.966908-0300 exported_admob_project[1962:31147] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-12-17 10:06:37.967698-0300 exported_admob_project[1962:31147] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-12-17 10:06:37.967930-0300 exported_admob_project[1962:31203] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-12-17 10:06:37.969497-0300 exported_admob_project[1962:31147] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-12-17 10:06:37.969875-0300 exported_admob_project[1962:31203] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-12-17 10:06:37.970091-0300 exported_admob_project[1962:30761] OpenGL ES Batching: ON
OpenGL ES Batching: ON
2021-12-17 10:06:38.230689-0300 exported_admob_project[1962:31217] - [I-ACS025031] AdMob App ID changed. Original, new: (nil), ca-app-pub-6443337560966810~4706310500
2021-12-17 10:06:38.368068-0300 exported_admob_project[1962:30761]

2021-12-17 10:06:39.566912-0300 exported_admob_project[1962:30761] ERROR: Failed loading resource: res://Text/languages_tutorial.csv. Make sure resources have been imported by opening the project in the editor at least once.
2021-12-17 10:06:39.567109-0300 exported_admob_project[1962:30761] at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
ERROR: Failed loading resource: res://Text/languages_tutorial.csv. Make sure resources have been imported by opening the project in the editor at least once.
at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
2021-12-17 10:06:39.675975-0300 exported_admob_project[1962:30761] init admob plugin
2021-12-17 10:06:39.676215-0300 exported_admob_project[1962:30761] initialize admob
2021-12-17 10:06:39.877632-0300 exported_admob_project[1962:30761] WARNING: Font oversampling only works with the stretch modes "Keep Width", "Keep Height" and "Expand", not "Ignore". To remove this warning, disable Rendering > Quality > Dynamic Fonts > Use Oversampling in the Project Settings.
2021-12-17 10:06:39.877800-0300 exported_admob_project[1962:30761] at: _update_root_rect (scene/main/scene_tree.cpp:1133) - Font oversampling only works with the stretch modes "Keep Width", "Keep Height" and "Expand", not "Ignore". To remove this warning, disable Rendering > Quality > Dynamic Fonts > Use Oversampling in the Project Settings.
WARNING: Font oversampling only works with the stretch modes "Keep Width", "Keep Height" and "Expand", not "Ignore". To remove this warning, disable Rendering > Quality > Dynamic Fonts > Use Oversampling in the Project Settings.
at: _update_root_rect (scene/main/scene_tree.cpp:1133) - Font oversampling only works with the stretch modes "Keep Width", "Keep Height" and "Expand", not "Ignore". To remove this warning, disable Rendering > Quality > Dynamic Fonts > Use Oversampling in the Project Settings.
2021-12-17 10:06:40.778313-0300 exported_admob_project[1962:30761] SCRIPT ERROR: Parse Error: The class "AdMob" shadows a native class.
2021-12-17 10:06:40.778511-0300 exported_admob_project[1962:30761] at: GDScript::load_byte_code (res://admob-lib/admob.gdc:4) - Parse Error: The class "AdMob" shadows a native class.
SCRIPT ERROR: Parse Error: The class "AdMob" shadows a native class.
at: GDScript::load_byte_code (res://admob-lib/admob.gdc:4) - Parse Error: The class "AdMob" shadows a native class.
2021-12-17 10:06:40.778681-0300 exported_admob_project[1962:30761] ERROR: Method failed. Returning: ERR_PARSE_ERROR
2021-12-17 10:06:40.778874-0300 exported_admob_project[1962:30761] at: load_byte_code (modules/gdscript/gdscript.cpp:750) - Method failed. Returning: ERR_PARSE_ERROR
ERROR: Method failed. Returning: ERR_PARSE_ERROR
at: load_byte_code (modules/gdscript/gdscript.cpp:750) - Method failed. Returning: ERR_PARSE_ERROR
2021-12-17 10:06:40.779069-0300 exported_admob_project[1962:30761] ERROR: Cannot load byte code from file 'res://admob-lib/admob.gdc'.
2021-12-17 10:06:40.779227-0300 exported_admob_project[1962:30761] at: load (modules/gdscript/gdscript.cpp:2173) - Condition "err != OK" is true. Returned: RES()
ERROR: Cannot load byte code from file 'res://admob-lib/admob.gdc'.
at: load (modules/gdscript/gdscript.cpp:2173) - Condition "err != OK" is true. Returned: RES()
2021-12-17 10:06:40.779492-0300 exported_admob_project[1962:30761] ERROR: Failed loading resource: res://admob-lib/admob.gdc. Make sure resources have been imported by opening the project in the editor at least once.
2021-12-17 10:06:40.779643-0300 exported_admob_project[1962:30761] at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
ERROR: Failed loading resource: res://admob-lib/admob.gdc. Make sure resources have been imported by opening the project in the editor at least once.
at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
2021-12-17 10:06:40.783635-0300 exported_admob_project[1962:30761] ERROR: res://Scenes/AdMob_long.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://admob-lib/admob.gd
2021-12-17 10:06:40.783784-0300 exported_admob_project[1962:30761] at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/AdMob_long.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://admob-lib/admob.gd
ERROR: res://Scenes/AdMob_long.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://admob-lib/admob.gd
at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/AdMob_long.tscn:3 - Parse Error: [ext_resource] referenced nonexistent resource at: res://admob-lib/admob.gd
2021-12-17 10:06:40.783938-0300 exported_admob_project[1962:30761] ERROR: Failed to load resource 'res://Scenes/AdMob_long.tscn'.
2021-12-17 10:06:40.784077-0300 exported_admob_project[1962:30761] at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
ERROR: Failed to load resource 'res://Scenes/AdMob_long.tscn'.
at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
2021-12-17 10:06:40.784415-0300 exported_admob_project[1962:30761] ERROR: Failed loading resource: res://Scenes/AdMob_long.tscn. Make sure resources have been imported by opening the project in the editor at least once.
2021-12-17 10:06:40.784587-0300 exported_admob_project[1962:30761] at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
ERROR: Failed loading resource: res://Scenes/AdMob_long.tscn. Make sure resources have been imported by opening the project in the editor at least once.
at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
2021-12-17 10:06:40.784767-0300 exported_admob_project[1962:30761] ERROR: res://Scenes/AdMob.tscn:4 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob_long.tscn
2021-12-17 10:06:40.784925-0300 exported_admob_project[1962:30761] at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/AdMob.tscn:4 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob_long.tscn
ERROR: res://Scenes/AdMob.tscn:4 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob_long.tscn
at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/AdMob.tscn:4 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob_long.tscn
2021-12-17 10:06:40.785106-0300 exported_admob_project[1962:30761] ERROR: Failed to load resource 'res://Scenes/AdMob.tscn'.
2021-12-17 10:06:40.785245-0300 exported_admob_project[1962:30761] at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
ERROR: Failed to load resource 'res://Scenes/AdMob.tscn'.
at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
2021-12-17 10:06:40.785889-0300 exported_admob_project[1962:30761] ERROR: Failed loading resource: res://Scenes/AdMob.tscn. Make sure resources have been imported by opening the project in the editor at least once.
2021-12-17 10:06:40.786121-0300 exported_admob_project[1962:30761] at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
ERROR: Failed loading resource: res://Scenes/AdMob.tscn. Make sure resources have been imported by opening the project in the editor at least once.
at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
2021-12-17 10:06:40.786597-0300 exported_admob_project[1962:30761] ERROR: res://Scenes/game.tscn:24 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob.tscn
2021-12-17 10:06:40.786961-0300 exported_admob_project[1962:30761] at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/game.tscn:24 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob.tscn
ERROR: res://Scenes/game.tscn:24 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob.tscn
at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/game.tscn:24 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/AdMob.tscn
2021-12-17 10:06:40.787386-0300 exported_admob_project[1962:30761] ERROR: Failed to load resource 'res://Scenes/game.tscn'.
2021-12-17 10:06:40.787828-0300 exported_admob_project[1962:30761] at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
ERROR: Failed to load resource 'res://Scenes/game.tscn'.
at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
2021-12-17 10:06:40.788753-0300 exported_admob_project[1962:30761] ERROR: Failed loading resource: res://Scenes/game.tscn. Make sure resources have been imported by opening the project in the editor at least once.
2021-12-17 10:06:40.788924-0300 exported_admob_project[1962:30761] at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
ERROR: Failed loading resource: res://Scenes/game.tscn. Make sure resources have been imported by opening the project in the editor at least once.
at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
2021-12-17 10:06:40.789178-0300 exported_admob_project[1962:30761] ERROR: res://Scenes/mainmenu.tscn:20 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/game.tscn
2021-12-17 10:06:40.789565-0300 exported_admob_project[1962:30761] at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/mainmenu.tscn:20 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/game.tscn
ERROR: res://Scenes/mainmenu.tscn:20 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/game.tscn
at: poll (scene/resources/resource_format_text.cpp:412) - res://Scenes/mainmenu.tscn:20 - Parse Error: [ext_resource] referenced nonexistent resource at: res://Scenes/game.tscn
2021-12-17 10:06:40.790172-0300 exported_admob_project[1962:30761] ERROR: Failed to load resource 'res://Scenes/mainmenu.tscn'.
2021-12-17 10:06:40.790418-0300 exported_admob_project[1962:30761] at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
ERROR: Failed to load resource 'res://Scenes/mainmenu.tscn'.
at: load (core/io/resource_loader.cpp:206) - Condition "err != OK" is true. Returned: RES()
2021-12-17 10:06:40.893415-0300 exported_admob_project[1962:30761] ERROR: Failed loading resource: res://Scenes/mainmenu.tscn. Make sure resources have been imported by opening the project in the editor at least once.
2021-12-17 10:06:40.893588-0300 exported_admob_project[1962:30761] at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
ERROR: Failed loading resource: res://Scenes/mainmenu.tscn. Make sure resources have been imported by opening the project in the editor at least once.
at: _load (core/io/resource_loader.cpp:271) - Condition "found" is true. Returned: RES()
2021-12-17 10:06:40.893759-0300 exported_admob_project[1962:30761] ERROR: Failed loading scene: res://Scenes/mainmenu.tscn
2021-12-17 10:06:40.893894-0300 exported_admob_project[1962:30761] at: start (main/main.cpp:1998) - Condition "!scene" is true. Returned: false
ERROR: Failed loading scene: res://Scenes/mainmenu.tscn
at: start (main/main.cpp:1998) - Condition "!scene" is true. Returned: false
2021-12-17 10:06:40.904398-0300 exported_admob_project[1962:30761] DrawView: 501 error
2021-12-17 10:06:46.079421-0300 exported_admob_project[1962:31567] - [I-ACS023007] Analytics v.80901000 started
2021-12-17 10:06:46.102558-0300 exported_admob_project[1962:31567] - [I-ACS023008] To enable debug logging set the following application argument: -APMAnalyticsDebugEnabled (see http://goo.gl/RfcP7r)\
2021-12-17 10:06:49.903233-0300 exported_admob_project[1962:31567] - [I-ACS800023] No pending snapshot to activate. SDK name: app_measurement
2021-12-17 10:06:54.798931-0300 exported_admob_project[1962:31203] - [I-ACS023012] Analytics collection enabled
}

iOS real ads not shown [BUG]

Hi there
i fallowed the tutorial for adding iOS admob on iOS that you made , and my ads unit made long time ago like 2 weeks and my app in the Appstore for a week now and it show a test ads not a real ads , if it not show ads i think it maybe because that there is no ads to show yet but that not the case , its show ads and its test ads . i talked to admob and they say "the ad unit Id's are not our test ad unit Id's. Please note that we can only support integrating the Mobile Ads SDK into apps natively in Android, iOS, Flutter and Unity. I can only suggest you receive support for your issue from the your plugin's issue tracker. I can only guess that some configuration is still holding the test Id's in your app and is overwriting your personal ad unit Id's."

Godot version 3.3.2

and i use the latest admob version i found on the admob assets

Screen Shot 2021-07-14 at 8 05 43 AM

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.