From 6f67fca86c63cf9aef382de78a13748556db07b7 Mon Sep 17 00:00:00 2001 From: Alan Mortis Date: Thu, 18 Sep 2025 13:32:23 +0100 Subject: [PATCH 1/2] enable spm --- Package.swift | 31 +++++++++++++++++++++++++++++++ ios/Plugin/Plugin.h | 10 ---------- ios/Plugin/Plugin.m | 15 --------------- ios/Plugin/Plugin.swift | 19 +++++++++++++++++-- 4 files changed, 48 insertions(+), 27 deletions(-) create mode 100644 Package.swift delete mode 100644 ios/Plugin/Plugin.h delete mode 100644 ios/Plugin/Plugin.m diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..d9ff92a --- /dev/null +++ b/Package.swift @@ -0,0 +1,31 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "CapacitorCommunityFirebaseAnalytics", + platforms: [.iOS(.v15)], + products: [ + .library( + name: "CapacitorCommunityFirebaseAnalytics", + targets: ["Plugin"]) + ], + dependencies: [ + .package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", from: "7.0.0"), + .package(url: "https://github.com/firebase/firebase-ios-sdk", from: "12.3.0") + ], + targets: [ + .target( + name: "Plugin", + dependencies: [ + .product(name: "Capacitor", package: "capacitor-swift-pm"), + .product(name: "Cordova", package: "capacitor-swift-pm"), + .product(name: "FirebaseCore", package: "firebase-ios-sdk"), + .product(name: "FirebaseAnalytics", package: "firebase-ios-sdk"), + ], + path: "ios/Plugin"), + .testTarget( + name: "PluginTests", + dependencies: ["Plugin"], + path: "ios/PluginTests") + ] +) diff --git a/ios/Plugin/Plugin.h b/ios/Plugin/Plugin.h deleted file mode 100644 index f2bd9e0..0000000 --- a/ios/Plugin/Plugin.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -//! Project version number for Plugin. -FOUNDATION_EXPORT double PluginVersionNumber; - -//! Project version string for Plugin. -FOUNDATION_EXPORT const unsigned char PluginVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - diff --git a/ios/Plugin/Plugin.m b/ios/Plugin/Plugin.m deleted file mode 100644 index c37e131..0000000 --- a/ios/Plugin/Plugin.m +++ /dev/null @@ -1,15 +0,0 @@ -#import -#import - -CAP_PLUGIN(FirebaseAnalytics, "FirebaseAnalytics", - CAP_PLUGIN_METHOD(setUserId, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(setUserProperty, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(getAppInstanceId, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(setScreenName, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(reset, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(logEvent, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(setCollectionEnabled, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(setSessionTimeoutDuration, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(enable, CAPPluginReturnPromise); - CAP_PLUGIN_METHOD(disable, CAPPluginReturnPromise); -) diff --git a/ios/Plugin/Plugin.swift b/ios/Plugin/Plugin.swift index 2dbd181..449ca2a 100644 --- a/ios/Plugin/Plugin.swift +++ b/ios/Plugin/Plugin.swift @@ -1,10 +1,25 @@ import Foundation +import Cordova import Capacitor import FirebaseCore import FirebaseAnalytics @objc(FirebaseAnalytics) -public class FirebaseAnalytics: CAPPlugin { +public class FirebaseAnalytics: CAPPlugin, CAPBridgedPlugin { + public let identifier = "FirebaseAnalyticsPlugin" + public let jsName = "FirebaseAnalytics" + public let pluginMethods: [CAPPluginMethod] = [ + CAPPluginMethod(name: "setUserId", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "setUserProperty", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "getAppInstanceId", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "setScreenName", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "reset", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "logEvent", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "setCollectionEnabled", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "setSessionTimeoutDuration", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "enable", returnType: CAPPluginReturnPromise), + CAPPluginMethod(name: "disable", returnType: CAPPluginReturnPromise) + ] public override func load() { if FirebaseApp.app() == nil { @@ -42,7 +57,7 @@ public class FirebaseAnalytics: CAPPlugin { /// Retrieves the app instance id from the service. /// - Parameter call: instanceId - current instance if of the app @objc func getAppInstanceId(_ call: CAPPluginCall) { - let instanceId = Analytics.appInstanceID() + let instanceId = Analytics.appInstanceID() ?? "" call.resolve([ "instanceId": instanceId ]) From cf743f8730c8675c586921a234f20d54e824b33a Mon Sep 17 00:00:00 2001 From: Alan Mortis Date: Fri, 19 Sep 2025 11:37:23 +0100 Subject: [PATCH 2/2] add Package.swift to files --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index be8c38f..c81ac48 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,8 @@ "android/build.gradle", "dist/", "ios/Plugin/", - "CapacitorCommunityFirebaseAnalytics.podspec" + "CapacitorCommunityFirebaseAnalytics.podspec", + "Package.swift" ], "keywords": [ "capacitor",