Skip to content

Commit 0bffff0

Browse files
authored
feat: add SPM support (#795)
* feat: add SPM support * wip * fixes
1 parent 73f3ca4 commit 0bffff0

84 files changed

Lines changed: 697 additions & 447 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/breezy-wasps-clean.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
'@capacitor-firebase/analytics': minor
3+
'@capacitor-firebase/app': minor
4+
'@capacitor-firebase/app-check': minor
5+
'@capacitor-firebase/authentication': minor
6+
'@capacitor-firebase/crashlytics': minor
7+
'@capacitor-firebase/firestore': minor
8+
'@capacitor-firebase/functions': minor
9+
'@capacitor-firebase/messaging': minor
10+
'@capacitor-firebase/performance': minor
11+
'@capacitor-firebase/remote-config': minor
12+
'@capacitor-firebase/storage': minor
13+
---
14+
15+
feat: add SPM support

.github/workflows/ci.yml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ on:
1414
workflow_dispatch:
1515

1616
env:
17-
NODE_VERSION: 18
17+
NODE_VERSION: 20
1818
JAVA_VERSION: 17
1919

2020
jobs:
@@ -35,8 +35,20 @@ jobs:
3535
with:
3636
distribution: 'zulu'
3737
java-version: ${{ env.JAVA_VERSION }}
38-
- name: Install dependencies
38+
- name: Install Node.js dependencies
3939
run: npm ci
40+
- name: Install CocoaPods dependencies of packages affected by changes
41+
if: github.ref != 'refs/heads/main'
42+
run: npm run affected:ios:pod:install
43+
- name: Install all CocoaPods dependencies
44+
if: github.ref == 'refs/heads/main'
45+
run: npm run ios:pod:install
46+
- name: Install SPM dependencies of packages affected by changes
47+
if: github.ref != 'refs/heads/main'
48+
run: npm run affected:ios:spm:install
49+
- name: Install all SPM dependencies
50+
if: github.ref == 'refs/heads/main'
51+
run: npm run ios:spm:install
4052
- name: Build packages affected by changes
4153
if: github.ref != 'refs/heads/main'
4254
run: npm run affected:verify

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"docgen": "turbo run docgen",
1616
"build": "turbo run build",
1717
"ios:pod:install": "turbo run ios:pod:install --concurrency=1 --no-cache",
18+
"ios:spm:install": "turbo run ios:spm:install --concurrency=1 --no-cache",
1819
"affected:verify": "npm run affected:verify:android && npm run affected:verify:ios && npm run affected:verify:web",
1920
"affected:verify:android": "turbo run verify:android --since=origin/main --concurrency=1 --no-cache",
2021
"affected:verify:ios": "turbo run verify:ios --since=origin/main --concurrency=1 --no-cache",
@@ -23,6 +24,8 @@
2324
"affected:fmt": "turbo run fmt --since=origin/main",
2425
"affected:docgen": "turbo run docgen --since=origin/main",
2526
"affected:build": "turbo run build --since=origin/main",
27+
"affected:ios:pod:install": "turbo run ios:pod:install --since=origin/main --concurrency=1 --no-cache",
28+
"affected:ios:spm:install": "turbo run ios:spm:install --since=origin/main --concurrency=1 --no-cache",
2629
"changeset": "changeset",
2730
"release": "npm run build && changeset publish",
2831
"release:preview": "pkg-pr-new publish './packages/*'"

packages/analytics/.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,16 @@ node_modules
55
# iOS files
66
Pods
77
Podfile.lock
8+
Package.resolved
89
Build
910
xcuserdata
11+
/.build
12+
/Packages
13+
xcuserdata/
14+
DerivedData/
15+
.swiftpm/configuration/registries.json
16+
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
17+
.netrc
1018

1119
# macOS files
1220
.DS_Store

packages/analytics/Package.swift

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// swift-tools-version: 5.9
2+
import PackageDescription
3+
4+
let package = Package(
5+
name: "CapacitorFirebaseAnalytics",
6+
platforms: [.iOS(.v13)],
7+
products: [
8+
.library(
9+
name: "CapacitorFirebaseAnalytics",
10+
targets: ["FirebaseAnalyticsPlugin"])
11+
],
12+
dependencies: [
13+
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0"),
14+
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "11.0.0"))
15+
],
16+
targets: [
17+
.target(
18+
name: "FirebaseAnalyticsPlugin",
19+
dependencies: [
20+
.product(name: "Capacitor", package: "capacitor-swift-pm"),
21+
.product(name: "Cordova", package: "capacitor-swift-pm"),
22+
.product(name: "FirebaseAnalytics", package: "firebase-ios-sdk"),
23+
.product(name: "FirebaseCore", package: "firebase-ios-sdk")
24+
],
25+
path: "ios/Sources/FirebaseAnalyticsPlugin"),
26+
.testTarget(
27+
name: "FirebaseAnalyticsPluginTests",
28+
dependencies: ["FirebaseAnalyticsPlugin"],
29+
path: "ios/Tests/FirebaseAnalyticsPluginTests")
30+
]
31+
)

packages/analytics/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ This plugin will use the following project variables (defined in your app’s `v
2929

3030
### iOS
3131

32-
Add the `CapacitorFirebaseAnalytics/Analytics` pod to your `Podfile` (usually `ios/App/Podfile`):
32+
If you are using **CocoaPods** for your iOS project, you need to add the `CapacitorFirebaseAnalytics/Analytics` pod to your `Podfile` (usually `ios/App/Podfile`):
3333

3434
```diff
3535
target 'App' do
@@ -47,7 +47,7 @@ See [Disable Analytics data collection](https://firebase.google.com/docs/analyti
4747

4848
#### Disable IDFA collection
4949

50-
If you want to install Firebase without any IDFA collection capability, use the `CapacitorFirebaseAnalytics/AnalyticsWithoutAdIdSupport` pod in place of the `CapacitorFirebaseAnalytics/Analytics` pod:
50+
If you are using **CocoaPods** for your iOS project and you want to disable IDFA collection, you can use the `CapacitorFirebaseAnalytics/AnalyticsWithoutAdIdSupport` pod instead of the `CapacitorFirebaseAnalytics/Analytics` pod:
5151

5252
```diff
5353
target 'App' do

packages/analytics/ios/Plugin.xcodeproj/project.pbxproj

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; };
1111
50ADFF97201F53D600D50D53 /* FirebaseAppPluginTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* FirebaseAppPluginTests.swift */; };
12-
50ADFF99201F53D600D50D53 /* FirebaseAnalyticsPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* FirebaseAnalyticsPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
1312
50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; };
14-
50ADFFA82020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m */; };
1513
50E1A94820377CB70090CE1A /* FirebaseAnalyticsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* FirebaseAnalyticsPlugin.swift */; };
1614
53EE56AA2776D9AC371BFCC7 /* Pods_Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C7FD685DEF5EDF81FDB15B6 /* Pods_Plugin.framework */; };
1715
7C7B6D8B27E1291F00CB649E /* FirebaseAnalytics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C7B6D8A27E1291F00CB649E /* FirebaseAnalytics.swift */; };
@@ -35,13 +33,11 @@
3533
3C7FD685DEF5EDF81FDB15B6 /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
3634
4E9F9DDB2E99D3C74C8FF90E /* Pods-PluginTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PluginTests.debug.xcconfig"; path = "Target Support Files/Pods-PluginTests/Pods-PluginTests.debug.xcconfig"; sourceTree = "<group>"; };
3735
50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
38-
50ADFF8B201F53D600D50D53 /* FirebaseAnalyticsPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirebaseAnalyticsPlugin.h; sourceTree = "<group>"; };
3936
50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
4037
50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4138
50ADFF96201F53D600D50D53 /* FirebaseAppPluginTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAppPluginTests.swift; sourceTree = "<group>"; };
4239
50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
4340
50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
44-
50ADFFA72020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FirebaseAnalyticsPlugin.m; sourceTree = "<group>"; };
4541
50E1A94720377CB70090CE1A /* FirebaseAnalyticsPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FirebaseAnalyticsPlugin.swift; sourceTree = "<group>"; };
4642
6BB8E29378BE344FBB163D08 /* Pods_PluginTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PluginTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
4743
7C7B6D8A27E1291F00CB649E /* FirebaseAnalytics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirebaseAnalytics.swift; sourceTree = "<group>"; };
@@ -97,8 +93,6 @@
9793
50E1A94720377CB70090CE1A /* FirebaseAnalyticsPlugin.swift */,
9894
7C7B6D8A27E1291F00CB649E /* FirebaseAnalytics.swift */,
9995
7CA39F842BAD8E7A001D9491 /* FirebaseAnalyticsHelper.swift */,
100-
50ADFF8B201F53D600D50D53 /* FirebaseAnalyticsPlugin.h */,
101-
50ADFFA72020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m */,
10296
50ADFF8C201F53D600D50D53 /* Info.plist */,
10397
);
10498
path = Plugin;
@@ -141,7 +135,6 @@
141135
isa = PBXHeadersBuildPhase;
142136
buildActionMask = 2147483647;
143137
files = (
144-
50ADFF99201F53D600D50D53 /* FirebaseAnalyticsPlugin.h in Headers */,
145138
);
146139
runOnlyForDeploymentPostprocessing = 0;
147140
};
@@ -332,7 +325,6 @@
332325
7C7B6D8B27E1291F00CB649E /* FirebaseAnalytics.swift in Sources */,
333326
7CA39F852BAD8E7A001D9491 /* FirebaseAnalyticsHelper.swift in Sources */,
334327
50E1A94820377CB70090CE1A /* FirebaseAnalyticsPlugin.swift in Sources */,
335-
50ADFFA82020EE4F00D50D53 /* FirebaseAnalyticsPlugin.m in Sources */,
336328
);
337329
runOnlyForDeploymentPostprocessing = 0;
338330
};

packages/analytics/ios/Plugin/FirebaseAnalyticsPlugin.h

Lines changed: 0 additions & 10 deletions
This file was deleted.

packages/analytics/ios/Plugin/FirebaseAnalyticsPlugin.m

Lines changed: 0 additions & 17 deletions
This file was deleted.

packages/analytics/ios/Plugin/FirebaseAnalyticsPlugin.swift

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,21 @@ import FirebaseCore
88
* here: https://capacitorjs.com/docs/plugins/ios
99
*/
1010
@objc(FirebaseAnalyticsPlugin)
11-
public class FirebaseAnalyticsPlugin: CAPPlugin {
11+
public class FirebaseAnalyticsPlugin: CAPPlugin, CAPBridgedPlugin {
12+
public let identifier = "FirebaseAnalyticsPlugin"
13+
public let jsName = "FirebaseAnalytics"
14+
public let pluginMethods: [CAPPluginMethod] = [
15+
CAPPluginMethod(name: "getAppInstanceId", returnType: CAPPluginReturnPromise),
16+
CAPPluginMethod(name: "setConsent", returnType: CAPPluginReturnPromise),
17+
CAPPluginMethod(name: "setUserId", returnType: CAPPluginReturnPromise),
18+
CAPPluginMethod(name: "setUserProperty", returnType: CAPPluginReturnPromise),
19+
CAPPluginMethod(name: "setCurrentScreen", returnType: CAPPluginReturnPromise),
20+
CAPPluginMethod(name: "logEvent", returnType: CAPPluginReturnPromise),
21+
CAPPluginMethod(name: "setSessionTimeoutDuration", returnType: CAPPluginReturnPromise),
22+
CAPPluginMethod(name: "setEnabled", returnType: CAPPluginReturnPromise),
23+
CAPPluginMethod(name: "isEnabled", returnType: CAPPluginReturnPromise),
24+
CAPPluginMethod(name: "resetAnalyticsData", returnType: CAPPluginReturnPromise),
25+
]
1226
public let errorUserIdMissing = "userId must be provided."
1327
public let errorKeyMissing = "key must be provided."
1428
public let errorValueMissing = "value must be provided."

0 commit comments

Comments
 (0)