Skip to content

Commit af14c47

Browse files
Merge pull request #19 from godot-x/fix-log-event
fix log event
2 parents 232da55 + 3c4bf84 commit af14c47

9 files changed

Lines changed: 50 additions & 76 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func _on_analytics_initialized(success: bool):
239239
if success:
240240
# Now you can log events
241241
var params = {"level": "5", "score": "1000"}
242-
analytics.log_event("level_complete", JSON.stringify(params))
242+
analytics.log_event("level_complete", params)
243243
```
244244

245245
### Firebase Crashlytics

addons/godotx_firebase/plugin.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
name="Godotx Firebase"
44
description="Firebase integration for Godot"
55
author="Paulo Coutinho"
6-
version="1.6.0"
6+
version="1.7.0"
77
script="export_plugin.gd"

scripts/Main.gd

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,9 @@ func _on_log_event_pressed() -> void:
113113
"screen": "main",
114114
"test_value": "42"
115115
}
116-
var params_json = JSON.stringify(params)
117116
log_message("\n[Analytics] Logging event: " + event_name)
118-
log_message(" Params: " + params_json)
119-
analytics.log_event(event_name, params_json)
117+
log_message(" Params: " + str(params))
118+
analytics.log_event(event_name, params)
120119
else:
121120
log_message("[Analytics] Plugin not available")
122121

@@ -126,10 +125,9 @@ func _on_log_screen_pressed() -> void:
126125
"screen_name": "main_screen",
127126
"screen_class": "MainScene"
128127
}
129-
var params_json = JSON.stringify(params)
130128
log_message("\n[Analytics] Logging screen view")
131-
log_message(" Params: " + params_json)
132-
analytics.log_event("screen_view", params_json)
129+
log_message(" Params: " + str(params))
130+
analytics.log_event("screen_view", params)
133131
else:
134132
log_message("[Analytics] Plugin not available")
135133

source/android/firebase_analytics/src/main/java/com/godotx/firebase/analytics/FirebaseAnalyticsPlugin.kt

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import org.godotengine.godot.plugin.GodotPlugin
88
import org.godotengine.godot.plugin.SignalInfo
99
import org.godotengine.godot.plugin.UsedByGodot
1010
import org.json.JSONObject
11+
import org.godotengine.godot.Dictionary
1112

1213
class FirebaseAnalyticsPlugin(godot: Godot) : GodotPlugin(godot) {
1314

@@ -27,13 +28,16 @@ class FirebaseAnalyticsPlugin(godot: Godot) : GodotPlugin(godot) {
2728

2829
override fun getPluginSignals(): Set<SignalInfo> {
2930
return setOf(
30-
SignalInfo("analytics_initialized",
31+
SignalInfo(
32+
"analytics_initialized",
3133
Boolean::class.javaObjectType
3234
),
33-
SignalInfo("analytics_event_logged",
35+
SignalInfo(
36+
"analytics_event_logged",
3437
String::class.java
3538
),
36-
SignalInfo("analytics_error",
39+
SignalInfo(
40+
"analytics_error",
3741
String::class.java
3842
)
3943
)
@@ -60,7 +64,7 @@ class FirebaseAnalyticsPlugin(godot: Godot) : GodotPlugin(godot) {
6064
}
6165

6266
@UsedByGodot
63-
fun log_event(event_name: String, params_json: String) {
67+
fun log_event(event_name: String, params: Dictionary) {
6468
val analytics = firebaseAnalytics
6569
if (analytics == null) {
6670
Log.e(TAG, "Firebase Analytics not initialized")
@@ -69,19 +73,30 @@ class FirebaseAnalyticsPlugin(godot: Godot) : GodotPlugin(godot) {
6973
}
7074

7175
try {
72-
val params = if (params_json.isNotEmpty()) JSONObject(params_json) else JSONObject()
7376
val bundle = Bundle()
7477

75-
val keys = params.keys()
76-
while (keys.hasNext()) {
77-
val key = keys.next()
78-
val value = params.get(key)
78+
for (key in params.keys) {
79+
val value = params[key]
80+
81+
// firebase parameter names must be strings
82+
if (key !is String || value == null) {
83+
continue
84+
}
85+
7986
when (value) {
8087
is Int -> bundle.putInt(key, value)
8188
is Long -> bundle.putLong(key, value)
89+
is Float -> bundle.putDouble(key, value.toDouble())
8290
is Double -> bundle.putDouble(key, value)
83-
is Boolean -> bundle.putBoolean(key, value)
84-
else -> bundle.putString(key, value.toString())
91+
is Boolean -> {
92+
// firebase analytics does NOT support boolean
93+
bundle.putInt(key, if (value) 1 else 0)
94+
}
95+
is String -> bundle.putString(key, value)
96+
else -> {
97+
// unsupported types are silently ignored
98+
Log.w(TAG, "Unsupported param type for key=$key (${value::class.java})")
99+
}
85100
}
86101
}
87102

source/ios/firebase_analytics/Sources/godotx_firebase_analytics.mm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333
} else if (value.get_type() == Variant::FLOAT) {
3434
nsDict[nsKey] = @((double)value);
3535
} else if (value.get_type() == Variant::BOOL) {
36-
nsDict[nsKey] = @((bool)value);
36+
// firebase analytics does NOT support boolean
37+
nsDict[nsKey] = @((bool)value ? 1 : 0);
3738
}
3839
}
3940

source/ios/firebase_analytics/firebase_analytics.gdip

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,13 @@ deinitialization="uninitialize_godotx_firebase_analytics_module"
99
[dependencies]
1010

1111
linked=[]
12-
embedded=[
13-
"FBLPromises.xcframework",
14-
"FirebaseAnalytics.xcframework",
15-
"FirebaseCore.xcframework",
16-
"FirebaseCoreInternal.xcframework",
17-
"FirebaseInstallations.xcframework",
18-
"GoogleAdsOnDeviceConversion.xcframework",
19-
"GoogleAppMeasurement.xcframework",
20-
"GoogleAppMeasurementIdentitySupport.xcframework",
21-
"GoogleUtilities.xcframework",
22-
"nanopb.xcframework"
23-
]
12+
13+
embedded=["FBLPromises.xcframework", "FirebaseAnalytics.xcframework", "FirebaseCore.xcframework", "FirebaseCoreInternal.xcframework", "FirebaseInstallations.xcframework", "GoogleAdsOnDeviceConversion.xcframework", "GoogleAppMeasurement.xcframework", "GoogleAppMeasurementIdentitySupport.xcframework", "GoogleUtilities.xcframework", "nanopb.xcframework"]
14+
2415
system=["UserNotifications.framework", "UIKit.framework", "Foundation.framework"]
2516

2617
capabilities=[]
2718

2819
files=[]
2920

30-
linker_flags=[
31-
"-ObjC",
32-
"-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"
33-
]
34-
21+
linker_flags=["-ObjC", "-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"]

source/ios/firebase_core/firebase_core.gdip

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,13 @@ deinitialization="uninitialize_godotx_firebase_core_module"
99
[dependencies]
1010

1111
linked=[]
12-
embedded=[
13-
"FBLPromises.xcframework",
14-
"FirebaseAnalytics.xcframework",
15-
"FirebaseCore.xcframework",
16-
"FirebaseCoreInternal.xcframework",
17-
"FirebaseInstallations.xcframework",
18-
"GoogleAdsOnDeviceConversion.xcframework",
19-
"GoogleAppMeasurement.xcframework",
20-
"GoogleAppMeasurementIdentitySupport.xcframework",
21-
"GoogleUtilities.xcframework",
22-
"nanopb.xcframework"
23-
]
12+
13+
embedded=["FBLPromises.xcframework", "FirebaseAnalytics.xcframework", "FirebaseCore.xcframework", "FirebaseCoreInternal.xcframework", "FirebaseInstallations.xcframework", "GoogleAdsOnDeviceConversion.xcframework", "GoogleAppMeasurement.xcframework", "GoogleAppMeasurementIdentitySupport.xcframework", "GoogleUtilities.xcframework", "nanopb.xcframework"]
14+
2415
system=["UserNotifications.framework", "UIKit.framework", "Foundation.framework"]
2516

2617
capabilities=[]
2718

2819
files=[]
2920

30-
linker_flags=[
31-
"-ObjC",
32-
"-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"
33-
]
34-
21+
linker_flags=["-ObjC", "-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"]

source/ios/firebase_crashlytics/firebase_crashlytics.gdip

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,13 @@ deinitialization="uninitialize_godotx_firebase_crashlytics_module"
99
[dependencies]
1010

1111
linked=[]
12-
embedded=[
13-
"FirebaseCoreExtension.xcframework",
14-
"FirebaseCrashlytics.xcframework",
15-
"FirebaseRemoteConfigInterop.xcframework",
16-
"FirebaseSessions.xcframework",
17-
"GoogleDataTransport.xcframework",
18-
"Promises.xcframework"
19-
]
12+
13+
embedded=["FirebaseCoreExtension.xcframework", "FirebaseCrashlytics.xcframework", "FirebaseRemoteConfigInterop.xcframework", "FirebaseSessions.xcframework", "GoogleDataTransport.xcframework", "Promises.xcframework"]
14+
2015
system=["UserNotifications.framework", "UIKit.framework", "Foundation.framework"]
2116

2217
capabilities=[]
2318

2419
files=[]
2520

26-
linker_flags=[
27-
"-ObjC",
28-
"-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"
29-
]
30-
21+
linker_flags=["-ObjC", "-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"]

source/ios/firebase_messaging/firebase_messaging.gdip

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,13 @@ deinitialization="uninitialize_godotx_firebase_messaging_module"
99
[dependencies]
1010

1111
linked=[]
12-
embedded=[
13-
"FirebaseMessaging.xcframework",
14-
"GoogleDataTransport.xcframework"
15-
]
12+
13+
embedded=["FirebaseMessaging.xcframework", "GoogleDataTransport.xcframework"]
14+
1615
system=["UserNotifications.framework", "UIKit.framework", "Foundation.framework"]
1716

1817
capabilities=[]
1918

2019
files=[]
2120

22-
linker_flags=[
23-
"-ObjC",
24-
"-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"
25-
]
26-
21+
linker_flags=["-ObjC", "-L$(DEVELOPER_DIR)/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/$(PLATFORM_NAME)"]

0 commit comments

Comments
 (0)