Giter Site home page Giter Site logo

Comments (14)

melihercan avatar melihercan commented on August 12, 2024 3

Yes I once started to test MAUI for WebRTC native bindings, but at that time it didn't work. So I deleted them. You can get them from my old commits.

from webrtcme.

melihercan avatar melihercan commented on August 12, 2024 2

Started adding MAUI support...

from webrtcme.

melihercan avatar melihercan commented on August 12, 2024

As I mentioned on the other posts, I'm completely overloaded with commercial projects and don't have time, even on weekends, to add features, fix issues , or improve this project.
I'm hopeful that things will calm down in the next weeks so that I can deal with both requested and planned modifications.

Currently the project supports .NET 6 for WEB (Blazor) components.

.NET MAUI is on my to-do list, but I'll need some time to implement it. Aside from that, MAUI is yet to be formally released.
You can, however, attempt to include them. There are two things you must do:
1.) Add the MAUI framework libraries to the WebRTCme project. That is the simple part.
2.) Creating bindings from WebRTC native code would be a real challenge. Please take a look how this is currently done for iOS and Android Xamarin projects on WebRTCme. Bindings/Xamarin folder. WebRTCme.Bindings/MAUI shall be added similar way..

from webrtcme.

Eagle3386 avatar Eagle3386 commented on August 12, 2024

While you've got my full respect for your commercial projects, would you still push your local, current state (if broken, maybe to a separate "unfinished" branch) here on GitHub? Please, Melih! πŸ₯Ί

Just so that I can take a look on how you've already started to move forward with WebRTCme.
Of course, I'll promise to start contributing immediately - after all, that's what open source is all about, right? ;)

from webrtcme.

melihercan avatar melihercan commented on August 12, 2024

The code in github is up to date (latest).
I don't have any local changes.

from webrtcme.

Eagle3386 avatar Eagle3386 commented on August 12, 2024

But there are

<ProjectReference Include="..\WebRTCme.Bindings\Maui\WebRTCme.Bindings.Maui.Android\WebRTCme.Bindings.Maui.Android.csproj">

&
<ProjectReference Include="..\WebRTCme.Bindings\Maui\WebRTCme.Bindings.Maui.iOS\WebRTCme.Bindings.Maui.iOS.csproj">

which both reference MAUI projects not available here on GitHub? πŸ€”

from webrtcme.

Bohdandn avatar Bohdandn commented on August 12, 2024

@Eagle3386 I've also tried to create bindings for MAUI, Android works, iOS fails - https://github.com/Bohdandn/MAUI.WebRTC.Demo

from webrtcme.

Eagle3386 avatar Eagle3386 commented on August 12, 2024

Sorry for the late reply, @Bohdandn - been busy with work.. πŸ™ˆ

Since I'm on the MAUI side of .NET life (MAUI Blazor, to be precise), I chose to go down the IJsInterop path.
That means I kept all that video inputs detection/switching, participants handling (except the actual announcing which is done via SignalR) &, of course, adding/removing the actual streams from the HTML UI container in a JavaScript file.
Via lazy-loading, the aforementioned IJsInterop derived class offers async/await conform, ValueTask based methods for calls from my Razor components/pages.

But that's just because at the time I had to choose that "path" I talked about earlier, it seemed to me that non-Blazor MAUI wasn't capable of interacting with WebRTC otherwise.
If that changed meanwhile, I simply don't know - but since I refuse to do NodeJS & there's, at least to my knowledge, still no native .NET implementation for WebRTC available (IIRC, the MAUI repo had an issue where this was discussed, but postponed at least until after .NET 7's release), I consider my MAUI Blazor approach the best for the time being for anyone who dislikes the existing alternatives. πŸ˜‰

from webrtcme.

Bohdandn avatar Bohdandn commented on August 12, 2024

Thank you @Eagle3386 for your reply! I'm using Xamarin forms and planning migration to MAUI. MAUI Blazor and other web view based solutions are not an option for me because iOS prior to 14.3 doesn't support WebRTC in web view - https://blog.bitsrc.io/ios-14-3-brings-webrtc-to-wkwebview-closing-gap-on-ios-accessibility-90a83fa6bda2 that is an issue for me.
Good news - it seems Xamarin team has fixed framework binding issue and we will get update soon -xamarin/xamarin-macios#15289.

from webrtcme.

Bohdandn avatar Bohdandn commented on August 12, 2024

@melihercan Your current MAUI binding library still have the same issue as my demo. I've created issue in ios tooling repo - xamarin/xamarin-macios#16001

from webrtcme.

melihercan avatar melihercan commented on August 12, 2024

@Bohdandn I don't have this problem and I can build it. Now I don't remember what I did :) but it builds fine as shown below:

Rebuild started...
Restored C:\dev\WebRTCme\WebRTCme.Bindings\Xamarin\WebRTCme.Bindings.Xamarin.iOS\WebRTCme.Bindings.Xamarin.iOS.csproj (in 73 ms).
Restored C:\dev\WebRTCme\WebRTCme.Bindings\Xamarin\WebRTCme.Bindings.Xamarin.Android\WebRTCme.Bindings.Xamarin.Android.csproj (in 73 ms).
Restored C:\dev\WebRTCme\WebRTCme.Bindings\Desktop\WebRTCme.Bindings.Desktop.macOS\WebRTCme.Bindings.Desktop.macOS.csproj (in 122 ms).
Restored C:\dev\WebRTCme\WebRTCme.Connection\MediaSoup\WebRTCme.Connection.MediaSoup.Proxy\WebRTCme.Connection.MediaSoup.Proxy.csproj (in 398 ms).
Restored C:\dev\WebRTCme\WebRTCme.DemoApp\Xamarin\WebRTCme.DemoApp.Xamarin.iOS\WebRTCme.DemoApp.Xamarin.iOS.csproj (in 432 ms).
Restored C:\dev\WebRTCme\WebRTCme.Bindings\Desktop\WebRTCme.Bindings.Desktop.Windows\WebRTCme.Bindings.Desktop.Windows.csproj (in 543 ms).
Restored C:\dev\WebRTCme\WebRTCme.DemoApp\Xamarin\WebRTCme.DemoApp.Xamarin.Android\WebRTCme.DemoApp.Xamarin.Android.csproj (in 556 ms).
Restored C:\dev\WebRTCme\WebRTCme.DemoApp\Xamarin\WebRTCme.DemoApp.Xamarin\WebRTCme.DemoApp.Xamarin.csproj (in 570 ms).
Restored C:\dev\WebRTCme\WebRTCme.Bindings\Maui\WebRTCme.Bindings.Maui.Android\WebRTCme.Bindings.Maui.Android.csproj (in 2 ms).
Restored C:\dev\WebRTCme\WebRTCme.Bindings\Maui\WebRTCme.Bindings.Maui.iOS\WebRTCme.Bindings.Maui.iOS.csproj (in 15 ms).
Restored C:\dev\WebRTCme\WebRTCme.Bindings\WebRTCme.Bindings.Blazor\WebRTCme.Bindings.Blazor.csproj (in 37 ms).
Restored C:\dev\WebRTCme\WebRTCme.Connection\MediaSoup\WebRTCme.Connection.MediaSoup\WebRTCme.Connection.MediaSoup.csproj (in 48 ms).
Restored C:\dev\WebRTCme\WebRTCme.Connection\Signaling\WebRTCme.Connection.Signaling.Proxy\WebRTCme.Connection.Signaling.Proxy.csproj (in 201 ms).
Restored C:\dev\WebRTCme\WebRTCme.Middleware\WebRTCme.Middleware.Blazor\WebRTCme.Middleware.Blazor.csproj (in 598 ms).
Restored C:\dev\WebRTCme\WebRTCme.Middleware\WebRTCme.Middleware.Xamarin\WebRTCme.Middleware.Xamarin.csproj (in 753 ms).
Restored C:\dev\WebRTCme\WebRTCme.Connection\MediaSoup\WebRTCme.Connection.MediaSoup.Server\WebRTCme.Connection.MediaSoup.Server.csproj (in 262 ms).
Restored C:\dev\WebRTCme\WebRTCme.Connection\WebRTCme.Connection\WebRTCme.Connection.csproj (in 158 ms).
Restored C:\dev\WebRTCme\WebRTCme.Connection\Signaling\WebRTCme.Connection.Signaling\WebRTCme.Connection.Signaling.csproj (in 116 ms).
Restored C:\dev\WebRTCme\WebRTCme.Connection\Signaling\WebRTCme.Connection.Signaling.Server\WebRTCme.Connection.Signaling.Server.csproj (in 11 ms).
Restored C:\dev\WebRTCme\WebRTCme.Api\WebRTCme.Api.csproj (in 22 ms).
Restored C:\dev\WebRTCme\WebRTCme\WebRTCme.csproj (in 739 ms).
Restored C:\dev\WebRTCme\WebRTCme.Middleware\WebRTCme.Middleware.Maui\WebRTCme.Middleware.Maui.csproj (in 1.09 sec).
Restored C:\dev\WebRTCme\WebRTCme.DemoApp\Blazor\WebRTCme.DemoApp.Blazor\WebRTCme.DemoApp.Blazor.csproj (in 378 ms).
Restored C:\dev\WebRTCme\WebRTCme.Middleware\WebRTCme.Middleware\WebRTCme.Middleware.csproj (in 746 ms).
Restored C:\dev\WebRTCme\WebRTCme.DemoApp\Blazor\WebRTCme.DemoApp.Blazor.Wasm\WebRTCme.DemoApp.Blazor.Wasm.csproj (in 401 ms).
Restored C:\dev\WebRTCme\WebRTCme.DemoApp\WebRTCme.DemoApp.Maui\WebRTCme.DemoApp.Maui.csproj (in 1.2 sec).
1>------ Rebuild All started: Project: WebRTCme.Bindings.Maui.iOS, Configuration: Debug Any CPU ------
1>Executing SayHello Task to establish a connection to a Remote Server.
1> Properties:
1> SessionId=f810c8edcfbcbeec7076675db50701cde4c4a743a05b89ef069eb5310f24e4be,
1> Addresss=192.168.1.26,
1> SshPort=22,
1> TcpPort=52269,
1> User=melihercan,
1> AppName=WebRTCme.Bindings.Maui.iOS,
1> VisualStudioProcessId=7732,
1> ContinueOnDisconnected=False
1>/Users/melihercan/Library/Caches/Xamarin/XMA/SDKs/dotnet/dotnet /Users/melihercan/Library/Caches/Xamarin/XMA/SDKs/dotnet/packs/Microsoft.iOS.Sdk/15.4.447/tools/lib/bgen/bgen.dll @/Users/melihercan/Library/Caches/Xamarin/mtbs/builds/WebRTCme.Bindings.Maui.iOS/f810c8edcfbcbeec7076675db50701cde4c4a743a05b89ef069eb5310f24e4be/obj/Debug/net6.0-ios/response-file.rsp
1>C:\Program Files\dotnet\packs\Microsoft.iOS.Sdk\15.4.447\tools\msbuild\iOS\Xamarin.Shared.targets(1618,3): warning BI1111: bgen: Interface 'Webrtc.IRTCVideoDecoderFactory' on 'Webrtc.RTCVideoDecoderFactoryH264' is being ignored as it is not a protocol. Did you mean 'RTCVideoDecoderFactory' instead?
1>C:\Program Files\dotnet\packs\Microsoft.iOS.Sdk\15.4.447\tools\msbuild\iOS\Xamarin.Shared.targets(1618,3): warning BI1111: bgen: Interface 'Webrtc.IRTCVideoDecoder' on 'Webrtc.RTCVideoDecoderH264' is being ignored as it is not a protocol. Did you mean 'RTCVideoDecoder' instead?
1>C:\Program Files\dotnet\packs\Microsoft.iOS.Sdk\15.4.447\tools\msbuild\iOS\Xamarin.Shared.targets(1618,3): warning BI1111: bgen: Interface 'Webrtc.IRTCVideoEncoder' on 'Webrtc.RTCVideoEncoderH264' is being ignored as it is not a protocol. Did you mean 'RTCVideoEncoder' instead?
1>C:\dev\WebRTCme\WebRTCme.Bindings\Maui\WebRTCme.Bindings.Maui.iOS\obj\Debug\net6.0-ios\iOS\Webrtc\RTCCertificate.g.cs(94,27,94,31): warning CS8767: Nullability of reference types in type of parameter 'zone' of 'NSObject RTCCertificate.Copy(NSZone zone)' doesn't match implicitly implemented member 'NSObject INSCopying.Copy(NSZone? zone)' (possibly because of nullability attributes).
1>WebRTCme.Bindings.Maui.iOS -> C:\dev\WebRTCme\WebRTCme.Bindings\Maui\WebRTCme.Bindings.Maui.iOS\bin\Debug\net6.0-ios\WebRTCme.Bindings.Maui.iOS.dll
1>Done building project "WebRTCme.Bindings.Maui.iOS.csproj".
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

from webrtcme.

Bohdandn avatar Bohdandn commented on August 12, 2024

In my case library itself compiles successfully as well. If you will reference it by maui app it’s compilation will fail. I’ve also tried to reference your library - same issue.
Also output of our libs compilation is different - framework goes in separate directory, not embedded like with xam.

from webrtcme.

melihercan avatar melihercan commented on August 12, 2024

Well @Bohdandn , in my case I have 2 layers between Maui app and the bindings: WebRTCme and WebRTCme.Middleware.
With this configuration all is compiling without any issues.
Will this run is another question but at least it builds fine.

from webrtcme.

Eagle3386 avatar Eagle3386 commented on August 12, 2024

Closing, because I moved on with a 3rd party library (Twilio) for signaling call requests / room handling & whole project structure continues to confuse me way too much in order to consider switching back from it.

Don't get me wrong, it's still awesome that you're trying to build such a library & I'd happily switch to it - but IMHO, that requires a complete cleanup of the project (leftovers, "try & error" parts within the code, etc.).

Finally, after switching to said 3rd party library & completing the app, I left the company for which I developed it.

from webrtcme.

Related Issues (20)

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.