Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions .github/workflows/ios_spm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: iOS Build CI (CocoaPods + SPM)

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
build-ios:
runs-on: macos-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
channel: "stable"

- name: Flutter pub get
run: flutter pub get

# 🧪 Build iOS example using CocoaPods
- name: Build iOS example with CocoaPods
working-directory: example
run: |
echo "=== Building with CocoaPods ==="
cd ios
pod repo update
pod install
cd ..
flutter config --no-enable-swift-package-manager
flutter build ios --no-codesign --verbose

# 🧹 Clean build + prepare for SPM test
- name: Clean and prepare for SPM test
working-directory: example
run: |
echo "=== Cleaning Pods ==="
rm -rf ios/Pods ios/Podfile.lock
flutter clean

# 🧪 Step 7: Build iOS example using Swift Package Manager
- name: Build iOS example with Swift Package Manager
working-directory: example
run: |
echo "=== Building with SPM ==="
flutter config --enable-swift-package-manager
flutter build ios --no-codesign --verbose

# ✅ Step 8: Verify output
- name: Verify build artifacts
run: |
echo "✅ Both CocoaPods and SPM builds succeeded."
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,8 @@ android/.settings/org.eclipse.buildship.core.prefs
!webrtc.iml

# vs
*.pdb
*.pdb

# Swift
.build/
.swiftpm/
14 changes: 14 additions & 0 deletions Package.resolved

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

31 changes: 31 additions & 0 deletions Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// swift-tools-version:5.9
import PackageDescription

let package = Package(
name: "stream_webrtc_flutter",
platforms: [
.iOS("13.0") // update as needed
],
products: [
.library(name: "stream-webrtc-flutter", type: .static, targets: ["stream_webrtc_flutter"])
],
dependencies: [
.package(
url: "https://github.com/GetStream/stream-video-swift-webrtc.git", exact: "125.6422.070"
)
],
targets: [
.target(
name: "stream_webrtc_flutter",
dependencies: [
.product(name: "StreamWebRTC", package: "stream-video-swift-webrtc")
],
path: "ios/stream_webrtc_flutter/Sources/stream_webrtc_flutter",
resources: [
// If you have PrivacyInfo.xcprivacy or other resources:
// .process("PrivacyInfo.xcprivacy")
],
publicHeadersPath: "include"
)
]
)
28 changes: 25 additions & 3 deletions example/ios/Runner.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -67,6 +68,7 @@
BA896DE0E3457D7F8E7B874C /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
EBDE73226368E7C4C301B721 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
F5CFB2CC6A32D774511849CE /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand All @@ -82,6 +84,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */,
5CDFF0275A08E50A6164A3F8 /* libPods-Runner.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -100,6 +103,7 @@
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
Expand Down Expand Up @@ -199,6 +203,9 @@
productType = "com.apple.product-type.bundle.unit-test";
};
97C146ED1CF9000F007C117D /* Runner */ = {
packageProductDependencies = (
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */,
);
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
Expand All @@ -225,6 +232,9 @@

/* Begin PBXProject section */
97C146E61CF9000F007C117D /* Project object */ = {
packageReferences = (
781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */,
);
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1510;
Expand Down Expand Up @@ -481,7 +491,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down Expand Up @@ -597,7 +607,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
Expand Down Expand Up @@ -646,7 +656,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
Expand Down Expand Up @@ -725,6 +735,18 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCLocalSwiftPackageReference section */
781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage" */ = {
isa = XCLocalSwiftPackageReference;
relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage;
};
/* End XCLocalSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = {
isa = XCSwiftPackageProductDependency;
productName = FlutterGeneratedPluginSwiftPackage;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 97C146E61CF9000F007C117D /* Project object */;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,24 @@
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<PreActions>
<ExecutionAction
ActionType = "Xcode.IDEStandardExecutionActionsCore.ExecutionActionType.ShellScriptAction">
<ActionContent
title = "Run Prepare Flutter Framework Script"
scriptText = "/bin/sh &quot;$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh&quot; prepare&#10;">
<EnvironmentBuildable>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</EnvironmentBuildable>
</ActionContent>
</ExecutionAction>
</PreActions>
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
Expand All @@ -26,6 +44,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
<MacroExpansion>
<BuildableReference
Expand Down Expand Up @@ -54,6 +73,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
Expand Down
Empty file removed ios/Assets/.gitkeep
Empty file.
1 change: 0 additions & 1 deletion ios/Classes/AudioManager.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/AudioManager.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/AudioProcessingAdapter.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/AudioProcessingAdapter.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/AudioUtils.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/AudioUtils.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/CameraUtils.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/CameraUtils.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRPScreenRecorder.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRPScreenRecorder.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCAudioSink-Interface.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCAudioSink.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCAudioSink.mm

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCDataChannel.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCDataChannel.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCDesktopCapturer.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCDesktopCapturer.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCFrameCapturer.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCFrameCapturer.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCFrameCryptor.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCFrameCryptor.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCMediaRecorder.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCMediaRecorder.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCMediaStream.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCMediaStream.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCPeerConnection.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCPeerConnection.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCVideoRenderer.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterRTCVideoRenderer.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterWebRTCPlugin.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/FlutterWebRTCPlugin.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/LocalAudioTrack.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/LocalAudioTrack.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/LocalTrack.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/LocalVideoTrack.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/LocalVideoTrack.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/ProcessorProvider.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/ProcessorProvider.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/RTCAudioSource+Private.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/VideoEffectProcessor.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/VideoEffectProcessor.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/VideoFrameProcessor.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/VideoProcessingAdapter.h

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/VideoProcessingAdapter.m

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/audio_sink_bridge.cpp

This file was deleted.

1 change: 0 additions & 1 deletion ios/Classes/media_stream_interface.h

This file was deleted.

Loading